From 926721c4820c497925c33ecff66feb3058592e57 Mon Sep 17 00:00:00 2001 From: nym21 Date: Sat, 21 Mar 2026 20:03:28 +0100 Subject: [PATCH] global: snapshot part 18 --- crates/brk_client/src/lib.rs | 7729 +++++++++++++++-- .../distribution/cohorts/utxo/percentiles.rs | 42 +- .../distribution/metrics/cohort/extended.rs | 16 +- .../src/distribution/metrics/profitability.rs | 22 + modules/brk-client/index.js | 5657 ++++++++++-- packages/brk_client/brk_client/__init__.py | 3700 +++++++- website/.gitignore | 1 + .../scripts/options/distribution/activity.js | 14 +- .../scripts/options/distribution/holdings.js | 4 +- website/scripts/options/distribution/index.js | 6 +- .../options/distribution/profitability.js | 16 +- .../scripts/options/distribution/valuation.js | 4 +- website/scripts/options/market.js | 10 +- website/scripts/options/mining.js | 14 +- website/scripts/options/network.js | 10 +- website/scripts/options/series.js | 18 +- website/scripts/options/shared.js | 4 +- 17 files changed, 15824 insertions(+), 1443 deletions(-) diff --git a/crates/brk_client/src/lib.rs b/crates/brk_client/src/lib.rs index 045acb18c..b3a92a31a 100644 --- a/crates/brk_client/src/lib.rs +++ b/crates/brk_client/src/lib.rs @@ -1388,26 +1388,12 @@ impl _1m1w1y2y4yAllPattern { pub struct ActivityAddrOutputsRealizedSupplyUnrealizedPattern { pub activity: TransferPattern, pub addr_count: BaseDeltaPattern, - pub outputs: UnspentPattern, + pub outputs: SpendingSpentUnspentPattern, pub realized: CapLossMvrvPriceProfitPattern, pub supply: DeltaTotalPattern, pub unrealized: NuplPattern, } -impl ActivityAddrOutputsRealizedSupplyUnrealizedPattern { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - activity: TransferPattern::new(client.clone(), _m(&acc, "transfer_volume")), - addr_count: BaseDeltaPattern::new(client.clone(), _m(&acc, "addr_count")), - outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), - realized: CapLossMvrvPriceProfitPattern::new(client.clone(), acc.clone()), - supply: DeltaTotalPattern::new(client.clone(), _m(&acc, "supply")), - unrealized: NuplPattern::new(client.clone(), _m(&acc, "nupl")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct AverageBlockCumulativeInSumPattern { pub average: _1m1w1y24hPattern3, @@ -1601,69 +1587,30 @@ impl _1m1w1y24hBlockPattern { /// Pattern struct for repeated tree structure. pub struct ActivityOutputsRealizedSupplyUnrealizedPattern { pub activity: CoindaysTransferPattern, - pub outputs: UnspentPattern, + pub outputs: SpendingSpentUnspentPattern, pub realized: CapLossMvrvNetPriceProfitSoprPattern, pub supply: DeltaHalfInToTotalPattern, pub unrealized: LossNetNuplProfitPattern, } -impl ActivityOutputsRealizedSupplyUnrealizedPattern { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - activity: CoindaysTransferPattern::new(client.clone(), acc.clone()), - outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), - realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), acc.clone()), - supply: DeltaHalfInToTotalPattern::new(client.clone(), _m(&acc, "supply")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), acc.clone()), - } - } -} - /// Pattern struct for repeated tree structure. pub struct ActivityOutputsRealizedSupplyUnrealizedPattern3 { pub activity: TransferPattern, - pub outputs: UnspentPattern, + pub outputs: SpendingSpentUnspentPattern, pub realized: CapLossMvrvPriceProfitPattern, pub supply: DeltaHalfInTotalPattern2, pub unrealized: LossNuplProfitPattern, } -impl ActivityOutputsRealizedSupplyUnrealizedPattern3 { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - activity: TransferPattern::new(client.clone(), _m(&acc, "transfer_volume")), - outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), - realized: CapLossMvrvPriceProfitPattern::new(client.clone(), acc.clone()), - supply: DeltaHalfInTotalPattern2::new(client.clone(), _m(&acc, "supply")), - unrealized: LossNuplProfitPattern::new(client.clone(), acc.clone()), - } - } -} - /// Pattern struct for repeated tree structure. pub struct ActivityOutputsRealizedSupplyUnrealizedPattern2 { pub activity: TransferPattern, - pub outputs: UnspentPattern, + pub outputs: SpendingSpentUnspentPattern, pub realized: CapLossMvrvPriceProfitPattern, pub supply: DeltaTotalPattern, pub unrealized: NuplPattern, } -impl ActivityOutputsRealizedSupplyUnrealizedPattern2 { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - activity: TransferPattern::new(client.clone(), _m(&acc, "transfer_volume")), - outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), - realized: CapLossMvrvPriceProfitPattern::new(client.clone(), acc.clone()), - supply: DeltaTotalPattern::new(client.clone(), _m(&acc, "supply")), - unrealized: NuplPattern::new(client.clone(), _m(&acc, "nupl")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct BlockChangeCumulativeDeltaSumPattern { pub block: CentsUsdPattern4, @@ -2247,6 +2194,26 @@ impl LossNetNuplProfitPattern { } } +/// Pattern struct for repeated tree structure. +pub struct NuplRealizedSupplyUnrealizedPattern { + pub nupl: BpsRatioPattern, + pub realized_cap: AllSthPattern, + pub supply: AllSthPattern2, + pub unrealized_pnl: AllSthPattern, +} + +impl NuplRealizedSupplyUnrealizedPattern { + /// Create a new pattern node with accumulated series name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + nupl: BpsRatioPattern::new(client.clone(), _m(&acc, "nupl")), + realized_cap: AllSthPattern::new(client.clone(), acc.clone(), String::new()), + supply: AllSthPattern2::new(client.clone(), acc.clone()), + unrealized_pnl: AllSthPattern::new(client.clone(), acc.clone(), String::new()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct _1m1w1y24hPattern { pub _1m: SeriesPattern1, @@ -2535,24 +2502,6 @@ impl LossNuplProfitPattern { } } -/// Pattern struct for repeated tree structure. -pub struct NuplRealizedSupplyPattern { - pub nupl: BpsRatioPattern, - pub realized_cap: AllSthPattern, - pub supply: AllSthPattern2, -} - -impl NuplRealizedSupplyPattern { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - nupl: BpsRatioPattern::new(client.clone(), _m(&acc, "nupl")), - realized_cap: AllSthPattern::new(client.clone(), acc.clone()), - supply: AllSthPattern2::new(client.clone(), acc.clone()), - } - } -} - /// Pattern struct for repeated tree structure. pub struct RatioTransferValuePattern { pub ratio: _1m1w1y24hPattern, @@ -2578,6 +2527,13 @@ impl RsiStochPattern { } } +/// Pattern struct for repeated tree structure. +pub struct SpendingSpentUnspentPattern { + pub spending_rate: SeriesPattern1, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub unspent_count: BaseDeltaPattern, +} + /// Pattern struct for repeated tree structure. pub struct _6bBlockTxPattern { pub _6b: MaxMedianMinPct10Pct25Pct75Pct90Pattern, @@ -2652,10 +2608,10 @@ pub struct AllSthPattern { impl AllSthPattern { /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { + pub fn new(client: Arc, acc: String, disc: String) -> Self { Self { - all: SeriesPattern1::new(client.clone(), _m(&acc, "realized_cap")), - sth: SeriesPattern1::new(client.clone(), _m(&acc, "sth_realized_cap")), + all: SeriesPattern1::new(client.clone(), _m(&acc, &disc)), + sth: SeriesPattern1::new(client.clone(), _m(&acc, &format!("sth_{disc}", disc=disc))), } } } @@ -2994,20 +2950,6 @@ impl TransferPattern { } } -/// Pattern struct for repeated tree structure. -pub struct UnspentPattern { - pub unspent_count: BaseDeltaPattern, -} - -impl UnspentPattern { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - unspent_count: BaseDeltaPattern::new(client.clone(), acc.clone()), - } - } -} - // Series tree /// Series tree node. @@ -6343,7 +6285,7 @@ impl SeriesTree_Cohorts_Utxo { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_All { pub supply: SeriesTree_Cohorts_Utxo_All_Supply, - pub outputs: UnspentPattern, + pub outputs: SeriesTree_Cohorts_Utxo_All_Outputs, pub activity: SeriesTree_Cohorts_Utxo_All_Activity, pub realized: SeriesTree_Cohorts_Utxo_All_Realized, pub cost_basis: SeriesTree_Cohorts_Utxo_All_CostBasis, @@ -6354,7 +6296,7 @@ impl SeriesTree_Cohorts_Utxo_All { pub fn new(client: Arc, base_path: String) -> Self { Self { supply: SeriesTree_Cohorts_Utxo_All_Supply::new(client.clone(), format!("{base_path}_supply")), - outputs: UnspentPattern::new(client.clone(), "utxo_count".to_string()), + outputs: SeriesTree_Cohorts_Utxo_All_Outputs::new(client.clone(), format!("{base_path}_outputs")), activity: SeriesTree_Cohorts_Utxo_All_Activity::new(client.clone(), format!("{base_path}_activity")), realized: SeriesTree_Cohorts_Utxo_All_Realized::new(client.clone(), format!("{base_path}_realized")), cost_basis: SeriesTree_Cohorts_Utxo_All_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), @@ -6384,6 +6326,23 @@ impl SeriesTree_Cohorts_Utxo_All_Supply { } } +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_All_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_All_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "spending_rate".to_string()), + } + } +} + /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_All_Activity { pub transfer_volume: AverageBlockCumulativeInSumPattern, @@ -6813,7 +6772,7 @@ impl SeriesTree_Cohorts_Utxo_All_Unrealized_Sentiment { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Sth { pub supply: DeltaHalfInToTotalPattern2, - pub outputs: UnspentPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Sth_Outputs, pub activity: SeriesTree_Cohorts_Utxo_Sth_Activity, pub realized: SeriesTree_Cohorts_Utxo_Sth_Realized, pub cost_basis: SeriesTree_Cohorts_Utxo_Sth_CostBasis, @@ -6824,7 +6783,7 @@ impl SeriesTree_Cohorts_Utxo_Sth { pub fn new(client: Arc, base_path: String) -> Self { Self { supply: DeltaHalfInToTotalPattern2::new(client.clone(), "sth_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "sth_utxo_count".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Sth_Outputs::new(client.clone(), format!("{base_path}_outputs")), activity: SeriesTree_Cohorts_Utxo_Sth_Activity::new(client.clone(), format!("{base_path}_activity")), realized: SeriesTree_Cohorts_Utxo_Sth_Realized::new(client.clone(), format!("{base_path}_realized")), cost_basis: SeriesTree_Cohorts_Utxo_Sth_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), @@ -6833,6 +6792,23 @@ impl SeriesTree_Cohorts_Utxo_Sth { } } +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Sth_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Sth_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "sth_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "sth_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "sth_spending_rate".to_string()), + } + } +} + /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Sth_Activity { pub transfer_volume: AverageBlockCumulativeInSumPattern, @@ -7205,7 +7181,7 @@ impl SeriesTree_Cohorts_Utxo_Sth_Unrealized_Sentiment { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Lth { pub supply: DeltaHalfInToTotalPattern2, - pub outputs: UnspentPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Lth_Outputs, pub activity: SeriesTree_Cohorts_Utxo_Lth_Activity, pub realized: SeriesTree_Cohorts_Utxo_Lth_Realized, pub cost_basis: SeriesTree_Cohorts_Utxo_Lth_CostBasis, @@ -7216,7 +7192,7 @@ impl SeriesTree_Cohorts_Utxo_Lth { pub fn new(client: Arc, base_path: String) -> Self { Self { supply: DeltaHalfInToTotalPattern2::new(client.clone(), "lth_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "lth_utxo_count".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Lth_Outputs::new(client.clone(), format!("{base_path}_outputs")), activity: SeriesTree_Cohorts_Utxo_Lth_Activity::new(client.clone(), format!("{base_path}_activity")), realized: SeriesTree_Cohorts_Utxo_Lth_Realized::new(client.clone(), format!("{base_path}_realized")), cost_basis: SeriesTree_Cohorts_Utxo_Lth_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), @@ -7225,6 +7201,23 @@ impl SeriesTree_Cohorts_Utxo_Lth { } } +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Lth_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Lth_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "lth_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "lth_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "lth_spending_rate".to_string()), + } + } +} + /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Lth_Activity { pub transfer_volume: AverageBlockCumulativeInSumPattern, @@ -7577,363 +7570,5379 @@ impl SeriesTree_Cohorts_Utxo_Lth_Unrealized_Sentiment { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_AgeRange { - pub under_1h: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1h_to_1d: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1d_to_1w: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1w_to_1m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1m_to_2m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2m_to_3m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _3m_to_4m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _4m_to_5m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _5m_to_6m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _6m_to_1y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1y_to_2y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2y_to_3y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _3y_to_4y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _4y_to_5y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _5y_to_6y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _6y_to_7y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _7y_to_8y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _8y_to_10y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _10y_to_12y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _12y_to_15y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub over_15y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub under_1h: SeriesTree_Cohorts_Utxo_AgeRange_Under1h, + pub _1h_to_1d: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d, + pub _1d_to_1w: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w, + pub _1w_to_1m: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m, + pub _1m_to_2m: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m, + pub _2m_to_3m: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m, + pub _3m_to_4m: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m, + pub _4m_to_5m: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m, + pub _5m_to_6m: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m, + pub _6m_to_1y: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y, + pub _1y_to_2y: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y, + pub _2y_to_3y: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y, + pub _3y_to_4y: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y, + pub _4y_to_5y: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y, + pub _5y_to_6y: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y, + pub _6y_to_7y: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y, + pub _7y_to_8y: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y, + pub _8y_to_10y: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y, + pub _10y_to_12y: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y, + pub _12y_to_15y: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y, + pub over_15y: SeriesTree_Cohorts_Utxo_AgeRange_Over15y, } impl SeriesTree_Cohorts_Utxo_AgeRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - under_1h: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1h_old".to_string()), - _1h_to_1d: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1h_to_1d_old".to_string()), - _1d_to_1w: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1d_to_1w_old".to_string()), - _1w_to_1m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1w_to_1m_old".to_string()), - _1m_to_2m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1m_to_2m_old".to_string()), - _2m_to_3m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_2m_to_3m_old".to_string()), - _3m_to_4m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_3m_to_4m_old".to_string()), - _4m_to_5m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_4m_to_5m_old".to_string()), - _5m_to_6m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_5m_to_6m_old".to_string()), - _6m_to_1y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_6m_to_1y_old".to_string()), - _1y_to_2y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1y_to_2y_old".to_string()), - _2y_to_3y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_2y_to_3y_old".to_string()), - _3y_to_4y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_3y_to_4y_old".to_string()), - _4y_to_5y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_4y_to_5y_old".to_string()), - _5y_to_6y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_5y_to_6y_old".to_string()), - _6y_to_7y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_6y_to_7y_old".to_string()), - _7y_to_8y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_7y_to_8y_old".to_string()), - _8y_to_10y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_8y_to_10y_old".to_string()), - _10y_to_12y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_10y_to_12y_old".to_string()), - _12y_to_15y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_12y_to_15y_old".to_string()), - over_15y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_15y_old".to_string()), + under_1h: SeriesTree_Cohorts_Utxo_AgeRange_Under1h::new(client.clone(), format!("{base_path}_under_1h")), + _1h_to_1d: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d::new(client.clone(), format!("{base_path}_1h_to_1d")), + _1d_to_1w: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w::new(client.clone(), format!("{base_path}_1d_to_1w")), + _1w_to_1m: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m::new(client.clone(), format!("{base_path}_1w_to_1m")), + _1m_to_2m: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m::new(client.clone(), format!("{base_path}_1m_to_2m")), + _2m_to_3m: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m::new(client.clone(), format!("{base_path}_2m_to_3m")), + _3m_to_4m: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m::new(client.clone(), format!("{base_path}_3m_to_4m")), + _4m_to_5m: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m::new(client.clone(), format!("{base_path}_4m_to_5m")), + _5m_to_6m: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m::new(client.clone(), format!("{base_path}_5m_to_6m")), + _6m_to_1y: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y::new(client.clone(), format!("{base_path}_6m_to_1y")), + _1y_to_2y: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y::new(client.clone(), format!("{base_path}_1y_to_2y")), + _2y_to_3y: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y::new(client.clone(), format!("{base_path}_2y_to_3y")), + _3y_to_4y: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y::new(client.clone(), format!("{base_path}_3y_to_4y")), + _4y_to_5y: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y::new(client.clone(), format!("{base_path}_4y_to_5y")), + _5y_to_6y: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y::new(client.clone(), format!("{base_path}_5y_to_6y")), + _6y_to_7y: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y::new(client.clone(), format!("{base_path}_6y_to_7y")), + _7y_to_8y: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y::new(client.clone(), format!("{base_path}_7y_to_8y")), + _8y_to_10y: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y::new(client.clone(), format!("{base_path}_8y_to_10y")), + _10y_to_12y: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y::new(client.clone(), format!("{base_path}_10y_to_12y")), + _12y_to_15y: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y::new(client.clone(), format!("{base_path}_12y_to_15y")), + over_15y: SeriesTree_Cohorts_Utxo_AgeRange_Over15y::new(client.clone(), format!("{base_path}_over_15y")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_Under1h { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_Under1h { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_1h_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_1h_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_1h_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_1h_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_1h_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_1h_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_1h_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_1h_to_1d_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_1h_to_1d_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_1h_to_1d_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_1h_to_1d_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_1h_to_1d_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_1h_to_1d_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_1h_to_1d_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_1d_to_1w_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_1d_to_1w_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_1d_to_1w_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_1d_to_1w_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_1d_to_1w_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_1d_to_1w_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_1d_to_1w_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_1w_to_1m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_1w_to_1m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_1w_to_1m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_1w_to_1m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_1w_to_1m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_1w_to_1m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_1w_to_1m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_1m_to_2m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_1m_to_2m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_1m_to_2m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_1m_to_2m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_1m_to_2m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_1m_to_2m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_1m_to_2m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_2m_to_3m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_2m_to_3m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_2m_to_3m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_2m_to_3m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_2m_to_3m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_2m_to_3m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_2m_to_3m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_3m_to_4m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_3m_to_4m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_3m_to_4m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_3m_to_4m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_3m_to_4m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_3m_to_4m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_3m_to_4m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_4m_to_5m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_4m_to_5m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_4m_to_5m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_4m_to_5m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_4m_to_5m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_4m_to_5m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_4m_to_5m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_5m_to_6m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_5m_to_6m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_5m_to_6m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_5m_to_6m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_5m_to_6m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_5m_to_6m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_5m_to_6m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_6m_to_1y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_6m_to_1y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_6m_to_1y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_6m_to_1y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_6m_to_1y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_6m_to_1y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_6m_to_1y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_1y_to_2y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_1y_to_2y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_1y_to_2y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_1y_to_2y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_1y_to_2y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_1y_to_2y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_1y_to_2y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_2y_to_3y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_2y_to_3y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_2y_to_3y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_2y_to_3y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_2y_to_3y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_2y_to_3y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_2y_to_3y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_3y_to_4y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_3y_to_4y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_3y_to_4y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_3y_to_4y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_3y_to_4y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_3y_to_4y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_3y_to_4y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_4y_to_5y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_4y_to_5y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_4y_to_5y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_4y_to_5y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_4y_to_5y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_4y_to_5y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_4y_to_5y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_5y_to_6y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_5y_to_6y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_5y_to_6y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_5y_to_6y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_5y_to_6y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_5y_to_6y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_5y_to_6y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_6y_to_7y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_6y_to_7y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_6y_to_7y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_6y_to_7y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_6y_to_7y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_6y_to_7y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_6y_to_7y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_7y_to_8y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_7y_to_8y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_7y_to_8y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_7y_to_8y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_7y_to_8y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_7y_to_8y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_7y_to_8y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_8y_to_10y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_8y_to_10y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_8y_to_10y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_8y_to_10y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_8y_to_10y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_8y_to_10y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_8y_to_10y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_10y_to_12y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_10y_to_12y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_10y_to_12y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_10y_to_12y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_10y_to_12y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_10y_to_12y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_10y_to_12y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_12y_to_15y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_12y_to_15y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_12y_to_15y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_12y_to_15y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_12y_to_15y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_12y_to_15y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_12y_to_15y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_Over15y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_Over15y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_15y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_15y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_15y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_15y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_15y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_15y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_15y_old_spending_rate".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_UnderAge { - pub _1w: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _3m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _4m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _5m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _6m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _3y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _4y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _5y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _6y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _7y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _8y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _10y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _12y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _15y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1w: SeriesTree_Cohorts_Utxo_UnderAge_1w, + pub _1m: SeriesTree_Cohorts_Utxo_UnderAge_1m, + pub _2m: SeriesTree_Cohorts_Utxo_UnderAge_2m, + pub _3m: SeriesTree_Cohorts_Utxo_UnderAge_3m, + pub _4m: SeriesTree_Cohorts_Utxo_UnderAge_4m, + pub _5m: SeriesTree_Cohorts_Utxo_UnderAge_5m, + pub _6m: SeriesTree_Cohorts_Utxo_UnderAge_6m, + pub _1y: SeriesTree_Cohorts_Utxo_UnderAge_1y, + pub _2y: SeriesTree_Cohorts_Utxo_UnderAge_2y, + pub _3y: SeriesTree_Cohorts_Utxo_UnderAge_3y, + pub _4y: SeriesTree_Cohorts_Utxo_UnderAge_4y, + pub _5y: SeriesTree_Cohorts_Utxo_UnderAge_5y, + pub _6y: SeriesTree_Cohorts_Utxo_UnderAge_6y, + pub _7y: SeriesTree_Cohorts_Utxo_UnderAge_7y, + pub _8y: SeriesTree_Cohorts_Utxo_UnderAge_8y, + pub _10y: SeriesTree_Cohorts_Utxo_UnderAge_10y, + pub _12y: SeriesTree_Cohorts_Utxo_UnderAge_12y, + pub _15y: SeriesTree_Cohorts_Utxo_UnderAge_15y, } impl SeriesTree_Cohorts_Utxo_UnderAge { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1w: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1w_old".to_string()), - _1m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1m_old".to_string()), - _2m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_2m_old".to_string()), - _3m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_3m_old".to_string()), - _4m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_4m_old".to_string()), - _5m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_5m_old".to_string()), - _6m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_6m_old".to_string()), - _1y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1y_old".to_string()), - _2y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_2y_old".to_string()), - _3y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_3y_old".to_string()), - _4y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_4y_old".to_string()), - _5y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_5y_old".to_string()), - _6y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_6y_old".to_string()), - _7y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_7y_old".to_string()), - _8y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_8y_old".to_string()), - _10y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_10y_old".to_string()), - _12y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_12y_old".to_string()), - _15y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_15y_old".to_string()), + _1w: SeriesTree_Cohorts_Utxo_UnderAge_1w::new(client.clone(), format!("{base_path}_1w")), + _1m: SeriesTree_Cohorts_Utxo_UnderAge_1m::new(client.clone(), format!("{base_path}_1m")), + _2m: SeriesTree_Cohorts_Utxo_UnderAge_2m::new(client.clone(), format!("{base_path}_2m")), + _3m: SeriesTree_Cohorts_Utxo_UnderAge_3m::new(client.clone(), format!("{base_path}_3m")), + _4m: SeriesTree_Cohorts_Utxo_UnderAge_4m::new(client.clone(), format!("{base_path}_4m")), + _5m: SeriesTree_Cohorts_Utxo_UnderAge_5m::new(client.clone(), format!("{base_path}_5m")), + _6m: SeriesTree_Cohorts_Utxo_UnderAge_6m::new(client.clone(), format!("{base_path}_6m")), + _1y: SeriesTree_Cohorts_Utxo_UnderAge_1y::new(client.clone(), format!("{base_path}_1y")), + _2y: SeriesTree_Cohorts_Utxo_UnderAge_2y::new(client.clone(), format!("{base_path}_2y")), + _3y: SeriesTree_Cohorts_Utxo_UnderAge_3y::new(client.clone(), format!("{base_path}_3y")), + _4y: SeriesTree_Cohorts_Utxo_UnderAge_4y::new(client.clone(), format!("{base_path}_4y")), + _5y: SeriesTree_Cohorts_Utxo_UnderAge_5y::new(client.clone(), format!("{base_path}_5y")), + _6y: SeriesTree_Cohorts_Utxo_UnderAge_6y::new(client.clone(), format!("{base_path}_6y")), + _7y: SeriesTree_Cohorts_Utxo_UnderAge_7y::new(client.clone(), format!("{base_path}_7y")), + _8y: SeriesTree_Cohorts_Utxo_UnderAge_8y::new(client.clone(), format!("{base_path}_8y")), + _10y: SeriesTree_Cohorts_Utxo_UnderAge_10y::new(client.clone(), format!("{base_path}_10y")), + _12y: SeriesTree_Cohorts_Utxo_UnderAge_12y::new(client.clone(), format!("{base_path}_12y")), + _15y: SeriesTree_Cohorts_Utxo_UnderAge_15y::new(client.clone(), format!("{base_path}_15y")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_1w { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_1w_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_1w { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_1w_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_1w_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_1w_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_1w_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_1w_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_1w_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_1w_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_1w_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_1w_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_1w_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_1m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_1m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_1m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_1m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_1m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_1m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_1m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_1m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_1m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_1m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_1m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_1m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_1m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_2m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_2m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_2m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_2m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_2m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_2m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_2m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_2m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_2m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_2m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_2m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_2m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_2m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_3m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_3m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_3m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_3m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_3m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_3m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_3m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_3m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_3m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_3m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_3m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_3m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_3m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_4m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_4m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_4m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_4m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_4m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_4m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_4m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_4m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_4m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_4m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_4m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_4m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_4m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_5m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_5m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_5m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_5m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_5m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_5m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_5m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_5m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_5m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_5m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_5m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_5m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_5m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_6m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_6m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_6m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_6m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_6m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_6m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_6m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_6m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_6m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_6m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_6m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_6m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_6m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_1y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_1y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_1y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_1y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_1y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_1y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_1y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_1y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_1y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_1y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_1y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_1y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_1y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_2y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_2y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_2y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_2y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_2y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_2y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_2y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_2y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_2y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_2y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_2y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_2y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_2y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_3y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_3y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_3y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_3y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_3y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_3y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_3y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_3y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_3y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_3y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_3y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_3y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_3y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_4y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_4y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_4y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_4y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_4y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_4y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_4y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_4y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_4y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_4y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_4y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_4y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_4y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_5y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_5y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_5y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_5y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_5y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_5y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_5y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_5y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_5y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_5y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_5y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_5y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_5y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_6y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_6y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_6y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_6y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_6y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_6y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_6y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_6y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_6y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_6y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_6y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_6y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_6y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_7y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_7y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_7y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_7y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_7y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_7y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_7y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_7y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_7y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_7y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_7y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_7y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_7y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_8y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_8y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_8y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_8y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_8y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_8y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_8y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_8y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_8y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_8y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_8y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_8y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_8y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_10y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_10y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_10y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_10y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_10y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_10y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_10y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_10y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_10y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_10y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_10y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_10y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_10y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_12y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_12y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_12y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_12y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_12y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_12y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_12y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_12y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_12y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_12y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_12y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_12y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_12y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_15y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAge_15y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_15y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_15y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAge_15y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_15y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_under_15y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_15y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAge_15y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAge_15y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_15y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_15y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_15y_old_spending_rate".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_OverAge { - pub _1d: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1w: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _3m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _4m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _5m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _6m: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _3y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _4y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _5y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _6y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _7y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _8y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _10y: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _12y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1d: SeriesTree_Cohorts_Utxo_OverAge_1d, + pub _1w: SeriesTree_Cohorts_Utxo_OverAge_1w, + pub _1m: SeriesTree_Cohorts_Utxo_OverAge_1m, + pub _2m: SeriesTree_Cohorts_Utxo_OverAge_2m, + pub _3m: SeriesTree_Cohorts_Utxo_OverAge_3m, + pub _4m: SeriesTree_Cohorts_Utxo_OverAge_4m, + pub _5m: SeriesTree_Cohorts_Utxo_OverAge_5m, + pub _6m: SeriesTree_Cohorts_Utxo_OverAge_6m, + pub _1y: SeriesTree_Cohorts_Utxo_OverAge_1y, + pub _2y: SeriesTree_Cohorts_Utxo_OverAge_2y, + pub _3y: SeriesTree_Cohorts_Utxo_OverAge_3y, + pub _4y: SeriesTree_Cohorts_Utxo_OverAge_4y, + pub _5y: SeriesTree_Cohorts_Utxo_OverAge_5y, + pub _6y: SeriesTree_Cohorts_Utxo_OverAge_6y, + pub _7y: SeriesTree_Cohorts_Utxo_OverAge_7y, + pub _8y: SeriesTree_Cohorts_Utxo_OverAge_8y, + pub _10y: SeriesTree_Cohorts_Utxo_OverAge_10y, + pub _12y: SeriesTree_Cohorts_Utxo_OverAge_12y, } impl SeriesTree_Cohorts_Utxo_OverAge { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1d: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1d_old".to_string()), - _1w: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1w_old".to_string()), - _1m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1m_old".to_string()), - _2m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_2m_old".to_string()), - _3m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_3m_old".to_string()), - _4m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_4m_old".to_string()), - _5m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_5m_old".to_string()), - _6m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_6m_old".to_string()), - _1y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1y_old".to_string()), - _2y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_2y_old".to_string()), - _3y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_3y_old".to_string()), - _4y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_4y_old".to_string()), - _5y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_5y_old".to_string()), - _6y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_6y_old".to_string()), - _7y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_7y_old".to_string()), - _8y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_8y_old".to_string()), - _10y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_10y_old".to_string()), - _12y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_12y_old".to_string()), + _1d: SeriesTree_Cohorts_Utxo_OverAge_1d::new(client.clone(), format!("{base_path}_1d")), + _1w: SeriesTree_Cohorts_Utxo_OverAge_1w::new(client.clone(), format!("{base_path}_1w")), + _1m: SeriesTree_Cohorts_Utxo_OverAge_1m::new(client.clone(), format!("{base_path}_1m")), + _2m: SeriesTree_Cohorts_Utxo_OverAge_2m::new(client.clone(), format!("{base_path}_2m")), + _3m: SeriesTree_Cohorts_Utxo_OverAge_3m::new(client.clone(), format!("{base_path}_3m")), + _4m: SeriesTree_Cohorts_Utxo_OverAge_4m::new(client.clone(), format!("{base_path}_4m")), + _5m: SeriesTree_Cohorts_Utxo_OverAge_5m::new(client.clone(), format!("{base_path}_5m")), + _6m: SeriesTree_Cohorts_Utxo_OverAge_6m::new(client.clone(), format!("{base_path}_6m")), + _1y: SeriesTree_Cohorts_Utxo_OverAge_1y::new(client.clone(), format!("{base_path}_1y")), + _2y: SeriesTree_Cohorts_Utxo_OverAge_2y::new(client.clone(), format!("{base_path}_2y")), + _3y: SeriesTree_Cohorts_Utxo_OverAge_3y::new(client.clone(), format!("{base_path}_3y")), + _4y: SeriesTree_Cohorts_Utxo_OverAge_4y::new(client.clone(), format!("{base_path}_4y")), + _5y: SeriesTree_Cohorts_Utxo_OverAge_5y::new(client.clone(), format!("{base_path}_5y")), + _6y: SeriesTree_Cohorts_Utxo_OverAge_6y::new(client.clone(), format!("{base_path}_6y")), + _7y: SeriesTree_Cohorts_Utxo_OverAge_7y::new(client.clone(), format!("{base_path}_7y")), + _8y: SeriesTree_Cohorts_Utxo_OverAge_8y::new(client.clone(), format!("{base_path}_8y")), + _10y: SeriesTree_Cohorts_Utxo_OverAge_10y::new(client.clone(), format!("{base_path}_10y")), + _12y: SeriesTree_Cohorts_Utxo_OverAge_12y::new(client.clone(), format!("{base_path}_12y")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_1d { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_1d_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_1d { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_1d_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_1d_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_1d_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_1d_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_1d_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_1d_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_1d_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_1d_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_1d_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_1d_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_1w { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_1w_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_1w { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_1w_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_1w_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_1w_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_1w_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_1w_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_1w_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_1w_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_1w_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_1w_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_1w_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_1m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_1m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_1m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_1m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_1m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_1m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_1m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_1m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_1m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_1m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_1m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_1m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_1m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_2m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_2m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_2m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_2m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_2m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_2m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_2m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_2m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_2m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_2m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_2m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_2m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_2m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_3m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_3m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_3m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_3m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_3m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_3m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_3m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_3m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_3m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_3m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_3m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_3m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_3m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_4m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_4m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_4m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_4m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_4m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_4m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_4m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_4m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_4m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_4m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_4m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_4m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_4m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_5m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_5m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_5m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_5m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_5m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_5m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_5m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_5m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_5m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_5m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_5m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_5m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_5m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_6m { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_6m_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_6m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_6m_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_6m_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_6m_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_6m_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_6m_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_6m_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_6m_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_6m_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_6m_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_6m_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_1y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_1y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_1y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_1y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_1y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_1y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_1y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_1y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_1y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_1y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_1y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_1y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_1y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_2y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_2y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_2y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_2y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_2y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_2y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_2y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_2y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_2y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_2y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_2y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_2y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_2y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_3y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_3y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_3y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_3y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_3y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_3y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_3y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_3y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_3y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_3y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_3y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_3y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_3y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_4y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_4y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_4y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_4y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_4y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_4y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_4y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_4y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_4y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_4y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_4y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_4y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_4y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_5y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_5y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_5y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_5y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_5y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_5y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_5y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_5y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_5y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_5y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_5y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_5y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_5y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_6y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_6y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_6y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_6y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_6y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_6y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_6y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_6y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_6y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_6y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_6y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_6y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_6y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_7y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_7y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_7y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_7y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_7y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_7y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_7y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_7y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_7y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_7y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_7y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_7y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_7y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_8y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_8y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_8y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_8y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_8y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_8y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_8y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_8y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_8y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_8y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_8y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_8y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_8y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_10y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_10y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_10y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_10y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_10y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_10y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_10y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_10y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_10y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_10y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_10y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_10y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_10y_old_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_12y { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAge_12y_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_12y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_12y_old_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAge_12y_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_12y_old".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "utxos_over_12y_old".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_12y_old".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAge_12y_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAge_12y_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_12y_old_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_12y_old_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_12y_old_spending_rate".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Epoch { - pub _0: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _3: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _4: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _0: SeriesTree_Cohorts_Utxo_Epoch_0, + pub _1: SeriesTree_Cohorts_Utxo_Epoch_1, + pub _2: SeriesTree_Cohorts_Utxo_Epoch_2, + pub _3: SeriesTree_Cohorts_Utxo_Epoch_3, + pub _4: SeriesTree_Cohorts_Utxo_Epoch_4, } impl SeriesTree_Cohorts_Utxo_Epoch { pub fn new(client: Arc, base_path: String) -> Self { Self { - _0: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "epoch_0".to_string()), - _1: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "epoch_1".to_string()), - _2: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "epoch_2".to_string()), - _3: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "epoch_3".to_string()), - _4: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "epoch_4".to_string()), + _0: SeriesTree_Cohorts_Utxo_Epoch_0::new(client.clone(), format!("{base_path}_0")), + _1: SeriesTree_Cohorts_Utxo_Epoch_1::new(client.clone(), format!("{base_path}_1")), + _2: SeriesTree_Cohorts_Utxo_Epoch_2::new(client.clone(), format!("{base_path}_2")), + _3: SeriesTree_Cohorts_Utxo_Epoch_3::new(client.clone(), format!("{base_path}_3")), + _4: SeriesTree_Cohorts_Utxo_Epoch_4::new(client.clone(), format!("{base_path}_4")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Epoch_0 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Epoch_0_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Epoch_0 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "epoch_0_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Epoch_0_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "epoch_0".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "epoch_0".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "epoch_0".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Epoch_0_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Epoch_0_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "epoch_0_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "epoch_0_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "epoch_0_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Epoch_1 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Epoch_1_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Epoch_1 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "epoch_1_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Epoch_1_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "epoch_1".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "epoch_1".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "epoch_1".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Epoch_1_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Epoch_1_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "epoch_1_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "epoch_1_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "epoch_1_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Epoch_2 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Epoch_2_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Epoch_2 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "epoch_2_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Epoch_2_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "epoch_2".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "epoch_2".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "epoch_2".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Epoch_2_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Epoch_2_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "epoch_2_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "epoch_2_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "epoch_2_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Epoch_3 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Epoch_3_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Epoch_3 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "epoch_3_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Epoch_3_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "epoch_3".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "epoch_3".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "epoch_3".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Epoch_3_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Epoch_3_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "epoch_3_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "epoch_3_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "epoch_3_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Epoch_4 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Epoch_4_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Epoch_4 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "epoch_4_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Epoch_4_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "epoch_4".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "epoch_4".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "epoch_4".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Epoch_4_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Epoch_4_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "epoch_4_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "epoch_4_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "epoch_4_spending_rate".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Class { - pub _2009: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2010: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2011: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2012: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2013: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2014: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2015: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2016: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2017: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2018: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2019: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2020: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2021: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2022: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2023: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2024: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2025: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2026: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2009: SeriesTree_Cohorts_Utxo_Class_2009, + pub _2010: SeriesTree_Cohorts_Utxo_Class_2010, + pub _2011: SeriesTree_Cohorts_Utxo_Class_2011, + pub _2012: SeriesTree_Cohorts_Utxo_Class_2012, + pub _2013: SeriesTree_Cohorts_Utxo_Class_2013, + pub _2014: SeriesTree_Cohorts_Utxo_Class_2014, + pub _2015: SeriesTree_Cohorts_Utxo_Class_2015, + pub _2016: SeriesTree_Cohorts_Utxo_Class_2016, + pub _2017: SeriesTree_Cohorts_Utxo_Class_2017, + pub _2018: SeriesTree_Cohorts_Utxo_Class_2018, + pub _2019: SeriesTree_Cohorts_Utxo_Class_2019, + pub _2020: SeriesTree_Cohorts_Utxo_Class_2020, + pub _2021: SeriesTree_Cohorts_Utxo_Class_2021, + pub _2022: SeriesTree_Cohorts_Utxo_Class_2022, + pub _2023: SeriesTree_Cohorts_Utxo_Class_2023, + pub _2024: SeriesTree_Cohorts_Utxo_Class_2024, + pub _2025: SeriesTree_Cohorts_Utxo_Class_2025, + pub _2026: SeriesTree_Cohorts_Utxo_Class_2026, } impl SeriesTree_Cohorts_Utxo_Class { pub fn new(client: Arc, base_path: String) -> Self { Self { - _2009: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2009".to_string()), - _2010: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2010".to_string()), - _2011: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2011".to_string()), - _2012: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2012".to_string()), - _2013: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2013".to_string()), - _2014: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2014".to_string()), - _2015: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2015".to_string()), - _2016: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2016".to_string()), - _2017: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2017".to_string()), - _2018: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2018".to_string()), - _2019: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2019".to_string()), - _2020: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2020".to_string()), - _2021: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2021".to_string()), - _2022: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2022".to_string()), - _2023: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2023".to_string()), - _2024: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2024".to_string()), - _2025: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2025".to_string()), - _2026: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2026".to_string()), + _2009: SeriesTree_Cohorts_Utxo_Class_2009::new(client.clone(), format!("{base_path}_2009")), + _2010: SeriesTree_Cohorts_Utxo_Class_2010::new(client.clone(), format!("{base_path}_2010")), + _2011: SeriesTree_Cohorts_Utxo_Class_2011::new(client.clone(), format!("{base_path}_2011")), + _2012: SeriesTree_Cohorts_Utxo_Class_2012::new(client.clone(), format!("{base_path}_2012")), + _2013: SeriesTree_Cohorts_Utxo_Class_2013::new(client.clone(), format!("{base_path}_2013")), + _2014: SeriesTree_Cohorts_Utxo_Class_2014::new(client.clone(), format!("{base_path}_2014")), + _2015: SeriesTree_Cohorts_Utxo_Class_2015::new(client.clone(), format!("{base_path}_2015")), + _2016: SeriesTree_Cohorts_Utxo_Class_2016::new(client.clone(), format!("{base_path}_2016")), + _2017: SeriesTree_Cohorts_Utxo_Class_2017::new(client.clone(), format!("{base_path}_2017")), + _2018: SeriesTree_Cohorts_Utxo_Class_2018::new(client.clone(), format!("{base_path}_2018")), + _2019: SeriesTree_Cohorts_Utxo_Class_2019::new(client.clone(), format!("{base_path}_2019")), + _2020: SeriesTree_Cohorts_Utxo_Class_2020::new(client.clone(), format!("{base_path}_2020")), + _2021: SeriesTree_Cohorts_Utxo_Class_2021::new(client.clone(), format!("{base_path}_2021")), + _2022: SeriesTree_Cohorts_Utxo_Class_2022::new(client.clone(), format!("{base_path}_2022")), + _2023: SeriesTree_Cohorts_Utxo_Class_2023::new(client.clone(), format!("{base_path}_2023")), + _2024: SeriesTree_Cohorts_Utxo_Class_2024::new(client.clone(), format!("{base_path}_2024")), + _2025: SeriesTree_Cohorts_Utxo_Class_2025::new(client.clone(), format!("{base_path}_2025")), + _2026: SeriesTree_Cohorts_Utxo_Class_2026::new(client.clone(), format!("{base_path}_2026")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2009 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2009_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2009 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2009_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2009_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2009".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2009".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2009".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2009_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2009_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2009_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2009_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2009_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2010 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2010_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2010 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2010_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2010_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2010".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2010".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2010".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2010_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2010_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2010_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2010_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2010_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2011 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2011_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2011 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2011_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2011_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2011".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2011".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2011".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2011_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2011_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2011_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2011_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2011_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2012 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2012_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2012 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2012_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2012_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2012".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2012".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2012".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2012_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2012_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2012_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2012_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2012_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2013 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2013_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2013 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2013_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2013_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2013".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2013".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2013".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2013_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2013_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2013_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2013_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2013_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2014 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2014_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2014 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2014_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2014_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2014".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2014".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2014".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2014_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2014_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2014_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2014_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2014_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2015 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2015_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2015 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2015_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2015_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2015".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2015".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2015".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2015_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2015_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2015_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2015_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2015_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2016 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2016_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2016 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2016_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2016_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2016".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2016".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2016".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2016_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2016_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2016_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2016_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2016_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2017 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2017_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2017 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2017_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2017_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2017".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2017".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2017".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2017_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2017_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2017_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2017_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2017_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2018 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2018_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2018 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2018_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2018_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2018".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2018".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2018".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2018_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2018_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2018_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2018_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2018_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2019 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2019_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2019 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2019_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2019_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2019".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2019".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2019".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2019_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2019_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2019_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2019_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2019_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2020 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2020_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2020 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2020_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2020_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2020".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2020".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2020".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2020_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2020_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2020_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2020_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2020_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2021 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2021_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2021 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2021_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2021_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2021".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2021".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2021".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2021_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2021_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2021_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2021_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2021_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2022 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2022_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2022 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2022_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2022_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2022".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2022".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2022".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2022_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2022_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2022_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2022_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2022_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2023 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2023_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2023 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2023_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2023_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2023".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2023".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2023".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2023_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2023_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2023_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2023_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2023_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2024 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2024_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2024 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2024_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2024_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2024".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2024".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2024".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2024_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2024_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2024_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2024_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2024_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2025 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2025_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2025 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2025_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2025_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2025".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2025".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2025".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2025_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2025_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2025_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2025_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2025_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2026 { + pub supply: DeltaHalfInToTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_Class_2026_Outputs, + pub activity: CoindaysTransferPattern, + pub realized: CapLossMvrvNetPriceProfitSoprPattern, + pub unrealized: LossNetNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Class_2026 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2026_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Class_2026_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: CoindaysTransferPattern::new(client.clone(), "class_2026".to_string()), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), "class_2026".to_string()), + unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2026".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Class_2026_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Class_2026_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "class_2026_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "class_2026_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "class_2026_spending_rate".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_OverAmount { - pub _1sat: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1sat: SeriesTree_Cohorts_Utxo_OverAmount_1sat, + pub _10sats: SeriesTree_Cohorts_Utxo_OverAmount_10sats, + pub _100sats: SeriesTree_Cohorts_Utxo_OverAmount_100sats, + pub _1k_sats: SeriesTree_Cohorts_Utxo_OverAmount_1kSats, + pub _10k_sats: SeriesTree_Cohorts_Utxo_OverAmount_10kSats, + pub _100k_sats: SeriesTree_Cohorts_Utxo_OverAmount_100kSats, + pub _1m_sats: SeriesTree_Cohorts_Utxo_OverAmount_1mSats, + pub _10m_sats: SeriesTree_Cohorts_Utxo_OverAmount_10mSats, + pub _1btc: SeriesTree_Cohorts_Utxo_OverAmount_1btc, + pub _10btc: SeriesTree_Cohorts_Utxo_OverAmount_10btc, + pub _100btc: SeriesTree_Cohorts_Utxo_OverAmount_100btc, + pub _1k_btc: SeriesTree_Cohorts_Utxo_OverAmount_1kBtc, + pub _10k_btc: SeriesTree_Cohorts_Utxo_OverAmount_10kBtc, } impl SeriesTree_Cohorts_Utxo_OverAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1sat: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1sat".to_string()), - _10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_10sats".to_string()), - _100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_100sats".to_string()), - _1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1k_sats".to_string()), - _10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_10k_sats".to_string()), - _100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_100k_sats".to_string()), - _1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1m_sats".to_string()), - _10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_10m_sats".to_string()), - _1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1btc".to_string()), - _10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_10btc".to_string()), - _100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_100btc".to_string()), - _1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1k_btc".to_string()), - _10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_10k_btc".to_string()), + _1sat: SeriesTree_Cohorts_Utxo_OverAmount_1sat::new(client.clone(), format!("{base_path}_1sat")), + _10sats: SeriesTree_Cohorts_Utxo_OverAmount_10sats::new(client.clone(), format!("{base_path}_10sats")), + _100sats: SeriesTree_Cohorts_Utxo_OverAmount_100sats::new(client.clone(), format!("{base_path}_100sats")), + _1k_sats: SeriesTree_Cohorts_Utxo_OverAmount_1kSats::new(client.clone(), format!("{base_path}_1k_sats")), + _10k_sats: SeriesTree_Cohorts_Utxo_OverAmount_10kSats::new(client.clone(), format!("{base_path}_10k_sats")), + _100k_sats: SeriesTree_Cohorts_Utxo_OverAmount_100kSats::new(client.clone(), format!("{base_path}_100k_sats")), + _1m_sats: SeriesTree_Cohorts_Utxo_OverAmount_1mSats::new(client.clone(), format!("{base_path}_1m_sats")), + _10m_sats: SeriesTree_Cohorts_Utxo_OverAmount_10mSats::new(client.clone(), format!("{base_path}_10m_sats")), + _1btc: SeriesTree_Cohorts_Utxo_OverAmount_1btc::new(client.clone(), format!("{base_path}_1btc")), + _10btc: SeriesTree_Cohorts_Utxo_OverAmount_10btc::new(client.clone(), format!("{base_path}_10btc")), + _100btc: SeriesTree_Cohorts_Utxo_OverAmount_100btc::new(client.clone(), format!("{base_path}_100btc")), + _1k_btc: SeriesTree_Cohorts_Utxo_OverAmount_1kBtc::new(client.clone(), format!("{base_path}_1k_btc")), + _10k_btc: SeriesTree_Cohorts_Utxo_OverAmount_10kBtc::new(client.clone(), format!("{base_path}_10k_btc")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_1sat { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_1sat_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_1sat { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_1sat_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_1sat_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_1sat_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_1sat".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_1sat_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_1sat_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_1sat_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_1sat_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_1sat_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_1sat_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_10sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_10sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_10sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_10sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_10sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_10sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_10sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_10sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_10sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_10sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_10sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_10sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_100sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_100sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_100sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_100sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_100sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_100sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_100sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_100sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_100sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_100sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_100sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_100sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_1kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_1kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_1k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_1kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_1k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_1k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_1k_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_1kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_1kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_1k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_1k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_1k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_10kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_10kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_10k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_10kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_10k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_10k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_10k_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_10kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_10kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_10k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_10k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_10k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_100kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_100kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_100k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_100kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_100k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_100k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_100k_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_100kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_100kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_100k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_100k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_100k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_1mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_1mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_1m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_1mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_1m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_1m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_1m_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_1mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_1mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_1m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_1m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_1m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_10mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_10mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_10m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_10mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_10m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_10m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_10m_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_10mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_10mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_10m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_10m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_10m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_1btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_1btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_1btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_1btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_1btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_1btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_1btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_1btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_1btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_1btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_1btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_1btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_10btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_10btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_10btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_10btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_10btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_10btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_10btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_10btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_10btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_10btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_10btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_10btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_100btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_100btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_100btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_100btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_100btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_100btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_100btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_100btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_100btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_100btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_100btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_100btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_1kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_1kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_1k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_1kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_1k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_1k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_1k_btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_1kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_1kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_1k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_1k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_1k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_10kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_OverAmount_10kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_10k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_OverAmount_10kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_10k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_10k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_10k_btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_OverAmount_10kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_OverAmount_10kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_10k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_10k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_10k_btc_spending_rate".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_AmountRange { - pub _0sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1sat_to_10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10sats_to_100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _100sats_to_1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1k_sats_to_10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10k_sats_to_100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _100k_sats_to_1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1m_sats_to_10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10m_sats_to_1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1btc_to_10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10btc_to_100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _100btc_to_1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1k_btc_to_10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10k_btc_to_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub over_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _0sats: SeriesTree_Cohorts_Utxo_AmountRange_0sats, + pub _1sat_to_10sats: SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats, + pub _10sats_to_100sats: SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats, + pub _100sats_to_1k_sats: SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats, + pub _1k_sats_to_10k_sats: SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats, + pub _10k_sats_to_100k_sats: SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats, + pub _100k_sats_to_1m_sats: SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats, + pub _1m_sats_to_10m_sats: SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats, + pub _10m_sats_to_1btc: SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc, + pub _1btc_to_10btc: SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc, + pub _10btc_to_100btc: SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc, + pub _100btc_to_1k_btc: SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc, + pub _1k_btc_to_10k_btc: SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc, + pub _10k_btc_to_100k_btc: SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc, + pub over_100k_btc: SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc, } impl SeriesTree_Cohorts_Utxo_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _0sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_0sats".to_string()), - _1sat_to_10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_1sat_to_10sats".to_string()), - _10sats_to_100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_10sats_to_100sats".to_string()), - _100sats_to_1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_100sats_to_1k_sats".to_string()), - _1k_sats_to_10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_1k_sats_to_10k_sats".to_string()), - _10k_sats_to_100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_10k_sats_to_100k_sats".to_string()), - _100k_sats_to_1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_100k_sats_to_1m_sats".to_string()), - _1m_sats_to_10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_1m_sats_to_10m_sats".to_string()), - _10m_sats_to_1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_10m_sats_to_1btc".to_string()), - _1btc_to_10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_1btc_to_10btc".to_string()), - _10btc_to_100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_10btc_to_100btc".to_string()), - _100btc_to_1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_100btc_to_1k_btc".to_string()), - _1k_btc_to_10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_1k_btc_to_10k_btc".to_string()), - _10k_btc_to_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_10k_btc_to_100k_btc".to_string()), - over_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_100k_btc".to_string()), + _0sats: SeriesTree_Cohorts_Utxo_AmountRange_0sats::new(client.clone(), format!("{base_path}_0sats")), + _1sat_to_10sats: SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats::new(client.clone(), format!("{base_path}_1sat_to_10sats")), + _10sats_to_100sats: SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats::new(client.clone(), format!("{base_path}_10sats_to_100sats")), + _100sats_to_1k_sats: SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats::new(client.clone(), format!("{base_path}_100sats_to_1k_sats")), + _1k_sats_to_10k_sats: SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats::new(client.clone(), format!("{base_path}_1k_sats_to_10k_sats")), + _10k_sats_to_100k_sats: SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats::new(client.clone(), format!("{base_path}_10k_sats_to_100k_sats")), + _100k_sats_to_1m_sats: SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats::new(client.clone(), format!("{base_path}_100k_sats_to_1m_sats")), + _1m_sats_to_10m_sats: SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats::new(client.clone(), format!("{base_path}_1m_sats_to_10m_sats")), + _10m_sats_to_1btc: SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc::new(client.clone(), format!("{base_path}_10m_sats_to_1btc")), + _1btc_to_10btc: SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc::new(client.clone(), format!("{base_path}_1btc_to_10btc")), + _10btc_to_100btc: SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc::new(client.clone(), format!("{base_path}_10btc_to_100btc")), + _100btc_to_1k_btc: SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc::new(client.clone(), format!("{base_path}_100btc_to_1k_btc")), + _1k_btc_to_10k_btc: SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc::new(client.clone(), format!("{base_path}_1k_btc_to_10k_btc")), + _10k_btc_to_100k_btc: SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc::new(client.clone(), format!("{base_path}_10k_btc_to_100k_btc")), + over_100k_btc: SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc::new(client.clone(), format!("{base_path}_over_100k_btc")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_0sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_0sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_0sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_0sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_0sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_0sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_0sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_0sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_0sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_0sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_0sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_0sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_0sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_1sat_to_10sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_1sat_to_10sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_1sat_to_10sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_1sat_to_10sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_1sat_to_10sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_1sat_to_10sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_1sat_to_10sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_10sats_to_100sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_10sats_to_100sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_10sats_to_100sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_10sats_to_100sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_10sats_to_100sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_10sats_to_100sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_10sats_to_100sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_100sats_to_1k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_100sats_to_1k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_100sats_to_1k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_100sats_to_1k_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_100sats_to_1k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_100sats_to_1k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_100sats_to_1k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_1k_sats_to_10k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_1k_sats_to_10k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_1k_sats_to_10k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_1k_sats_to_10k_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_1k_sats_to_10k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_1k_sats_to_10k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_1k_sats_to_10k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_10k_sats_to_100k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_10k_sats_to_100k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_10k_sats_to_100k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_10k_sats_to_100k_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_10k_sats_to_100k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_10k_sats_to_100k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_10k_sats_to_100k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_100k_sats_to_1m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_100k_sats_to_1m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_100k_sats_to_1m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_100k_sats_to_1m_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_100k_sats_to_1m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_100k_sats_to_1m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_100k_sats_to_1m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_1m_sats_to_10m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_1m_sats_to_10m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_1m_sats_to_10m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_1m_sats_to_10m_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_1m_sats_to_10m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_1m_sats_to_10m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_1m_sats_to_10m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_10m_sats_to_1btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_10m_sats_to_1btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_10m_sats_to_1btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_10m_sats_to_1btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_10m_sats_to_1btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_10m_sats_to_1btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_10m_sats_to_1btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_1btc_to_10btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_1btc_to_10btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_1btc_to_10btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_1btc_to_10btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_1btc_to_10btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_1btc_to_10btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_1btc_to_10btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_10btc_to_100btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_10btc_to_100btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_10btc_to_100btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_10btc_to_100btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_10btc_to_100btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_10btc_to_100btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_10btc_to_100btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_100btc_to_1k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_100btc_to_1k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_100btc_to_1k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_100btc_to_1k_btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_100btc_to_1k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_100btc_to_1k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_100btc_to_1k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_1k_btc_to_10k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_1k_btc_to_10k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_1k_btc_to_10k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_1k_btc_to_10k_btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_1k_btc_to_10k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_1k_btc_to_10k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_1k_btc_to_10k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_10k_btc_to_100k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_10k_btc_to_100k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_10k_btc_to_100k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_10k_btc_to_100k_btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_10k_btc_to_100k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_10k_btc_to_100k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_10k_btc_to_100k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_over_100k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_over_100k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_over_100k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_over_100k_btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_over_100k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_over_100k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_over_100k_btc_spending_rate".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_UnderAmount { - pub _10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, - pub _100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10sats: SeriesTree_Cohorts_Utxo_UnderAmount_10sats, + pub _100sats: SeriesTree_Cohorts_Utxo_UnderAmount_100sats, + pub _1k_sats: SeriesTree_Cohorts_Utxo_UnderAmount_1kSats, + pub _10k_sats: SeriesTree_Cohorts_Utxo_UnderAmount_10kSats, + pub _100k_sats: SeriesTree_Cohorts_Utxo_UnderAmount_100kSats, + pub _1m_sats: SeriesTree_Cohorts_Utxo_UnderAmount_1mSats, + pub _10m_sats: SeriesTree_Cohorts_Utxo_UnderAmount_10mSats, + pub _1btc: SeriesTree_Cohorts_Utxo_UnderAmount_1btc, + pub _10btc: SeriesTree_Cohorts_Utxo_UnderAmount_10btc, + pub _100btc: SeriesTree_Cohorts_Utxo_UnderAmount_100btc, + pub _1k_btc: SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc, + pub _10k_btc: SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc, + pub _100k_btc: SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc, } impl SeriesTree_Cohorts_Utxo_UnderAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_10sats".to_string()), - _100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_100sats".to_string()), - _1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_1k_sats".to_string()), - _10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_10k_sats".to_string()), - _100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_100k_sats".to_string()), - _1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_1m_sats".to_string()), - _10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_10m_sats".to_string()), - _1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_1btc".to_string()), - _10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_10btc".to_string()), - _100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_100btc".to_string()), - _1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_1k_btc".to_string()), - _10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_10k_btc".to_string()), - _100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_100k_btc".to_string()), + _10sats: SeriesTree_Cohorts_Utxo_UnderAmount_10sats::new(client.clone(), format!("{base_path}_10sats")), + _100sats: SeriesTree_Cohorts_Utxo_UnderAmount_100sats::new(client.clone(), format!("{base_path}_100sats")), + _1k_sats: SeriesTree_Cohorts_Utxo_UnderAmount_1kSats::new(client.clone(), format!("{base_path}_1k_sats")), + _10k_sats: SeriesTree_Cohorts_Utxo_UnderAmount_10kSats::new(client.clone(), format!("{base_path}_10k_sats")), + _100k_sats: SeriesTree_Cohorts_Utxo_UnderAmount_100kSats::new(client.clone(), format!("{base_path}_100k_sats")), + _1m_sats: SeriesTree_Cohorts_Utxo_UnderAmount_1mSats::new(client.clone(), format!("{base_path}_1m_sats")), + _10m_sats: SeriesTree_Cohorts_Utxo_UnderAmount_10mSats::new(client.clone(), format!("{base_path}_10m_sats")), + _1btc: SeriesTree_Cohorts_Utxo_UnderAmount_1btc::new(client.clone(), format!("{base_path}_1btc")), + _10btc: SeriesTree_Cohorts_Utxo_UnderAmount_10btc::new(client.clone(), format!("{base_path}_10btc")), + _100btc: SeriesTree_Cohorts_Utxo_UnderAmount_100btc::new(client.clone(), format!("{base_path}_100btc")), + _1k_btc: SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc::new(client.clone(), format!("{base_path}_1k_btc")), + _10k_btc: SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc::new(client.clone(), format!("{base_path}_10k_btc")), + _100k_btc: SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc::new(client.clone(), format!("{base_path}_100k_btc")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_10sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_10sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_10sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_10sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_10sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_10sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_10sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_10sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_10sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_10sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_100sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_100sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_100sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_100sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_100sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_100sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_100sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_100sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_100sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_100sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_1kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_1k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_1k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_1k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_1k_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_1kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_1kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_1k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_1k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_1k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_10kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_10k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_10k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_10k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_10k_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_10kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_10kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_10k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_10k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_10k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_100kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_100k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_100k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_100k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_100k_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_100kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_100kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_100k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_100k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_100k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_1mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_1m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_1m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_1m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_1m_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_1mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_1mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_1m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_1m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_1m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_10mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_10m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_10m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_10m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_10m_sats_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_10mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_10mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_10m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_10m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_10m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_1btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_1btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_1btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_1btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_1btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_1btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_1btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_1btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_1btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_1btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_10btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_10btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_10btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_10btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_10btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_10btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_10btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_10btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_10btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_10btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_100btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_100btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_100btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_100btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_100btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_100btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_100btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_100btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_100btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_100btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_1k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_1k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_1k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_1k_btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_1k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_1k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_1k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_10k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_10k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_10k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_10k_btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_10k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_10k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_10k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "utxos_under_100k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "utxos_under_100k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "utxos_under_100k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "utxos_under_100k_btc_nupl".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "utxos_under_100k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "utxos_under_100k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "utxos_under_100k_btc_spending_rate".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Type { - pub p2pk65: ActivityOutputsRealizedSupplyUnrealizedPattern3, - pub p2pk33: ActivityOutputsRealizedSupplyUnrealizedPattern3, - pub p2pkh: ActivityOutputsRealizedSupplyUnrealizedPattern3, - pub p2ms: ActivityOutputsRealizedSupplyUnrealizedPattern3, - pub p2sh: ActivityOutputsRealizedSupplyUnrealizedPattern3, - pub p2wpkh: ActivityOutputsRealizedSupplyUnrealizedPattern3, - pub p2wsh: ActivityOutputsRealizedSupplyUnrealizedPattern3, - pub p2tr: ActivityOutputsRealizedSupplyUnrealizedPattern3, - pub p2a: ActivityOutputsRealizedSupplyUnrealizedPattern3, - pub unknown: ActivityOutputsRealizedSupplyUnrealizedPattern3, - pub empty: ActivityOutputsRealizedSupplyUnrealizedPattern3, + pub p2pk65: SeriesTree_Cohorts_Utxo_Type_P2pk65, + pub p2pk33: SeriesTree_Cohorts_Utxo_Type_P2pk33, + pub p2pkh: SeriesTree_Cohorts_Utxo_Type_P2pkh, + pub p2ms: SeriesTree_Cohorts_Utxo_Type_P2ms, + pub p2sh: SeriesTree_Cohorts_Utxo_Type_P2sh, + pub p2wpkh: SeriesTree_Cohorts_Utxo_Type_P2wpkh, + pub p2wsh: SeriesTree_Cohorts_Utxo_Type_P2wsh, + pub p2tr: SeriesTree_Cohorts_Utxo_Type_P2tr, + pub p2a: SeriesTree_Cohorts_Utxo_Type_P2a, + pub unknown: SeriesTree_Cohorts_Utxo_Type_Unknown, + pub empty: SeriesTree_Cohorts_Utxo_Type_Empty, } impl SeriesTree_Cohorts_Utxo_Type { pub fn new(client: Arc, base_path: String) -> Self { Self { - p2pk65: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2pk65".to_string()), - p2pk33: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2pk33".to_string()), - p2pkh: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2pkh".to_string()), - p2ms: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2ms".to_string()), - p2sh: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2sh".to_string()), - p2wpkh: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2wpkh".to_string()), - p2wsh: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2wsh".to_string()), - p2tr: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2tr".to_string()), - p2a: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2a".to_string()), - unknown: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "unknown_outputs".to_string()), - empty: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "empty_outputs".to_string()), + p2pk65: SeriesTree_Cohorts_Utxo_Type_P2pk65::new(client.clone(), format!("{base_path}_p2pk65")), + p2pk33: SeriesTree_Cohorts_Utxo_Type_P2pk33::new(client.clone(), format!("{base_path}_p2pk33")), + p2pkh: SeriesTree_Cohorts_Utxo_Type_P2pkh::new(client.clone(), format!("{base_path}_p2pkh")), + p2ms: SeriesTree_Cohorts_Utxo_Type_P2ms::new(client.clone(), format!("{base_path}_p2ms")), + p2sh: SeriesTree_Cohorts_Utxo_Type_P2sh::new(client.clone(), format!("{base_path}_p2sh")), + p2wpkh: SeriesTree_Cohorts_Utxo_Type_P2wpkh::new(client.clone(), format!("{base_path}_p2wpkh")), + p2wsh: SeriesTree_Cohorts_Utxo_Type_P2wsh::new(client.clone(), format!("{base_path}_p2wsh")), + p2tr: SeriesTree_Cohorts_Utxo_Type_P2tr::new(client.clone(), format!("{base_path}_p2tr")), + p2a: SeriesTree_Cohorts_Utxo_Type_P2a::new(client.clone(), format!("{base_path}_p2a")), + unknown: SeriesTree_Cohorts_Utxo_Type_Unknown::new(client.clone(), format!("{base_path}_unknown")), + empty: SeriesTree_Cohorts_Utxo_Type_Empty::new(client.clone(), format!("{base_path}_empty")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2pk65 { + pub supply: DeltaHalfInTotalPattern2, + pub outputs: SeriesTree_Cohorts_Utxo_Type_P2pk65_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: LossNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2pk65 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInTotalPattern2::new(client.clone(), "p2pk65_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Type_P2pk65_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "p2pk65_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "p2pk65".to_string()), + unrealized: LossNuplProfitPattern::new(client.clone(), "p2pk65".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2pk65_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2pk65_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "p2pk65_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "p2pk65_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "p2pk65_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2pk33 { + pub supply: DeltaHalfInTotalPattern2, + pub outputs: SeriesTree_Cohorts_Utxo_Type_P2pk33_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: LossNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2pk33 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInTotalPattern2::new(client.clone(), "p2pk33_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Type_P2pk33_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "p2pk33_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "p2pk33".to_string()), + unrealized: LossNuplProfitPattern::new(client.clone(), "p2pk33".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2pk33_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2pk33_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "p2pk33_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "p2pk33_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "p2pk33_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2pkh { + pub supply: DeltaHalfInTotalPattern2, + pub outputs: SeriesTree_Cohorts_Utxo_Type_P2pkh_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: LossNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2pkh { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInTotalPattern2::new(client.clone(), "p2pkh_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Type_P2pkh_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "p2pkh_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "p2pkh".to_string()), + unrealized: LossNuplProfitPattern::new(client.clone(), "p2pkh".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2pkh_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2pkh_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "p2pkh_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "p2pkh_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "p2pkh_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2ms { + pub supply: DeltaHalfInTotalPattern2, + pub outputs: SeriesTree_Cohorts_Utxo_Type_P2ms_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: LossNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2ms { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInTotalPattern2::new(client.clone(), "p2ms_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Type_P2ms_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "p2ms_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "p2ms".to_string()), + unrealized: LossNuplProfitPattern::new(client.clone(), "p2ms".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2ms_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2ms_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "p2ms_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "p2ms_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "p2ms_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2sh { + pub supply: DeltaHalfInTotalPattern2, + pub outputs: SeriesTree_Cohorts_Utxo_Type_P2sh_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: LossNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2sh { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInTotalPattern2::new(client.clone(), "p2sh_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Type_P2sh_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "p2sh_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "p2sh".to_string()), + unrealized: LossNuplProfitPattern::new(client.clone(), "p2sh".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2sh_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2sh_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "p2sh_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "p2sh_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "p2sh_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2wpkh { + pub supply: DeltaHalfInTotalPattern2, + pub outputs: SeriesTree_Cohorts_Utxo_Type_P2wpkh_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: LossNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2wpkh { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInTotalPattern2::new(client.clone(), "p2wpkh_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Type_P2wpkh_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "p2wpkh_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "p2wpkh".to_string()), + unrealized: LossNuplProfitPattern::new(client.clone(), "p2wpkh".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2wpkh_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2wpkh_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "p2wpkh_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "p2wpkh_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "p2wpkh_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2wsh { + pub supply: DeltaHalfInTotalPattern2, + pub outputs: SeriesTree_Cohorts_Utxo_Type_P2wsh_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: LossNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2wsh { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInTotalPattern2::new(client.clone(), "p2wsh_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Type_P2wsh_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "p2wsh_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "p2wsh".to_string()), + unrealized: LossNuplProfitPattern::new(client.clone(), "p2wsh".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2wsh_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2wsh_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "p2wsh_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "p2wsh_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "p2wsh_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2tr { + pub supply: DeltaHalfInTotalPattern2, + pub outputs: SeriesTree_Cohorts_Utxo_Type_P2tr_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: LossNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2tr { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInTotalPattern2::new(client.clone(), "p2tr_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Type_P2tr_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "p2tr_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "p2tr".to_string()), + unrealized: LossNuplProfitPattern::new(client.clone(), "p2tr".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2tr_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2tr_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "p2tr_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "p2tr_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "p2tr_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2a { + pub supply: DeltaHalfInTotalPattern2, + pub outputs: SeriesTree_Cohorts_Utxo_Type_P2a_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: LossNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2a { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInTotalPattern2::new(client.clone(), "p2a_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Type_P2a_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "p2a_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "p2a".to_string()), + unrealized: LossNuplProfitPattern::new(client.clone(), "p2a".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_P2a_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Type_P2a_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "p2a_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "p2a_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "p2a_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_Unknown { + pub supply: DeltaHalfInTotalPattern2, + pub outputs: SeriesTree_Cohorts_Utxo_Type_Unknown_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: LossNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Type_Unknown { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInTotalPattern2::new(client.clone(), "unknown_outputs_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Type_Unknown_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "unknown_outputs_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "unknown_outputs".to_string()), + unrealized: LossNuplProfitPattern::new(client.clone(), "unknown_outputs".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_Unknown_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Type_Unknown_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "unknown_outputs_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "unknown_outputs_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "unknown_outputs_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_Empty { + pub supply: DeltaHalfInTotalPattern2, + pub outputs: SeriesTree_Cohorts_Utxo_Type_Empty_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: LossNuplProfitPattern, +} + +impl SeriesTree_Cohorts_Utxo_Type_Empty { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaHalfInTotalPattern2::new(client.clone(), "empty_outputs_supply".to_string()), + outputs: SeriesTree_Cohorts_Utxo_Type_Empty_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "empty_outputs_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "empty_outputs".to_string()), + unrealized: LossNuplProfitPattern::new(client.clone(), "empty_outputs".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Utxo_Type_Empty_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Utxo_Type_Empty_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "empty_outputs_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "empty_outputs_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "empty_outputs_spending_rate".to_string()), } } } @@ -7957,129 +12966,129 @@ impl SeriesTree_Cohorts_Utxo_Profitability { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Profitability_Range { - pub over_1000pct_in_profit: NuplRealizedSupplyPattern, - pub _500pct_to_1000pct_in_profit: NuplRealizedSupplyPattern, - pub _300pct_to_500pct_in_profit: NuplRealizedSupplyPattern, - pub _200pct_to_300pct_in_profit: NuplRealizedSupplyPattern, - pub _100pct_to_200pct_in_profit: NuplRealizedSupplyPattern, - pub _90pct_to_100pct_in_profit: NuplRealizedSupplyPattern, - pub _80pct_to_90pct_in_profit: NuplRealizedSupplyPattern, - pub _70pct_to_80pct_in_profit: NuplRealizedSupplyPattern, - pub _60pct_to_70pct_in_profit: NuplRealizedSupplyPattern, - pub _50pct_to_60pct_in_profit: NuplRealizedSupplyPattern, - pub _40pct_to_50pct_in_profit: NuplRealizedSupplyPattern, - pub _30pct_to_40pct_in_profit: NuplRealizedSupplyPattern, - pub _20pct_to_30pct_in_profit: NuplRealizedSupplyPattern, - pub _10pct_to_20pct_in_profit: NuplRealizedSupplyPattern, - pub _0pct_to_10pct_in_profit: NuplRealizedSupplyPattern, - pub _0pct_to_10pct_in_loss: NuplRealizedSupplyPattern, - pub _10pct_to_20pct_in_loss: NuplRealizedSupplyPattern, - pub _20pct_to_30pct_in_loss: NuplRealizedSupplyPattern, - pub _30pct_to_40pct_in_loss: NuplRealizedSupplyPattern, - pub _40pct_to_50pct_in_loss: NuplRealizedSupplyPattern, - pub _50pct_to_60pct_in_loss: NuplRealizedSupplyPattern, - pub _60pct_to_70pct_in_loss: NuplRealizedSupplyPattern, - pub _70pct_to_80pct_in_loss: NuplRealizedSupplyPattern, - pub _80pct_to_90pct_in_loss: NuplRealizedSupplyPattern, - pub _90pct_to_100pct_in_loss: NuplRealizedSupplyPattern, + pub over_1000pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _500pct_to_1000pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _300pct_to_500pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _200pct_to_300pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _100pct_to_200pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _90pct_to_100pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _80pct_to_90pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _70pct_to_80pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _60pct_to_70pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _50pct_to_60pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _40pct_to_50pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _30pct_to_40pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _20pct_to_30pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _10pct_to_20pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _0pct_to_10pct_in_profit: NuplRealizedSupplyUnrealizedPattern, + pub _0pct_to_10pct_in_loss: NuplRealizedSupplyUnrealizedPattern, + pub _10pct_to_20pct_in_loss: NuplRealizedSupplyUnrealizedPattern, + pub _20pct_to_30pct_in_loss: NuplRealizedSupplyUnrealizedPattern, + pub _30pct_to_40pct_in_loss: NuplRealizedSupplyUnrealizedPattern, + pub _40pct_to_50pct_in_loss: NuplRealizedSupplyUnrealizedPattern, + pub _50pct_to_60pct_in_loss: NuplRealizedSupplyUnrealizedPattern, + pub _60pct_to_70pct_in_loss: NuplRealizedSupplyUnrealizedPattern, + pub _70pct_to_80pct_in_loss: NuplRealizedSupplyUnrealizedPattern, + pub _80pct_to_90pct_in_loss: NuplRealizedSupplyUnrealizedPattern, + pub _90pct_to_100pct_in_loss: NuplRealizedSupplyUnrealizedPattern, } impl SeriesTree_Cohorts_Utxo_Profitability_Range { pub fn new(client: Arc, base_path: String) -> Self { Self { - over_1000pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_1000pct_in_profit".to_string()), - _500pct_to_1000pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_500pct_to_1000pct_in_profit".to_string()), - _300pct_to_500pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_300pct_to_500pct_in_profit".to_string()), - _200pct_to_300pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_200pct_to_300pct_in_profit".to_string()), - _100pct_to_200pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_100pct_to_200pct_in_profit".to_string()), - _90pct_to_100pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_90pct_to_100pct_in_profit".to_string()), - _80pct_to_90pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_80pct_to_90pct_in_profit".to_string()), - _70pct_to_80pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_70pct_to_80pct_in_profit".to_string()), - _60pct_to_70pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_60pct_to_70pct_in_profit".to_string()), - _50pct_to_60pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_50pct_to_60pct_in_profit".to_string()), - _40pct_to_50pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_40pct_to_50pct_in_profit".to_string()), - _30pct_to_40pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_30pct_to_40pct_in_profit".to_string()), - _20pct_to_30pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_20pct_to_30pct_in_profit".to_string()), - _10pct_to_20pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_10pct_to_20pct_in_profit".to_string()), - _0pct_to_10pct_in_profit: NuplRealizedSupplyPattern::new(client.clone(), "utxos_0pct_to_10pct_in_profit".to_string()), - _0pct_to_10pct_in_loss: NuplRealizedSupplyPattern::new(client.clone(), "utxos_0pct_to_10pct_in_loss".to_string()), - _10pct_to_20pct_in_loss: NuplRealizedSupplyPattern::new(client.clone(), "utxos_10pct_to_20pct_in_loss".to_string()), - _20pct_to_30pct_in_loss: NuplRealizedSupplyPattern::new(client.clone(), "utxos_20pct_to_30pct_in_loss".to_string()), - _30pct_to_40pct_in_loss: NuplRealizedSupplyPattern::new(client.clone(), "utxos_30pct_to_40pct_in_loss".to_string()), - _40pct_to_50pct_in_loss: NuplRealizedSupplyPattern::new(client.clone(), "utxos_40pct_to_50pct_in_loss".to_string()), - _50pct_to_60pct_in_loss: NuplRealizedSupplyPattern::new(client.clone(), "utxos_50pct_to_60pct_in_loss".to_string()), - _60pct_to_70pct_in_loss: NuplRealizedSupplyPattern::new(client.clone(), "utxos_60pct_to_70pct_in_loss".to_string()), - _70pct_to_80pct_in_loss: NuplRealizedSupplyPattern::new(client.clone(), "utxos_70pct_to_80pct_in_loss".to_string()), - _80pct_to_90pct_in_loss: NuplRealizedSupplyPattern::new(client.clone(), "utxos_80pct_to_90pct_in_loss".to_string()), - _90pct_to_100pct_in_loss: NuplRealizedSupplyPattern::new(client.clone(), "utxos_90pct_to_100pct_in_loss".to_string()), + over_1000pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1000pct_in_profit".to_string()), + _500pct_to_1000pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_500pct_to_1000pct_in_profit".to_string()), + _300pct_to_500pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_300pct_to_500pct_in_profit".to_string()), + _200pct_to_300pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_200pct_to_300pct_in_profit".to_string()), + _100pct_to_200pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_100pct_to_200pct_in_profit".to_string()), + _90pct_to_100pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_90pct_to_100pct_in_profit".to_string()), + _80pct_to_90pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_80pct_to_90pct_in_profit".to_string()), + _70pct_to_80pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_70pct_to_80pct_in_profit".to_string()), + _60pct_to_70pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_60pct_to_70pct_in_profit".to_string()), + _50pct_to_60pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_50pct_to_60pct_in_profit".to_string()), + _40pct_to_50pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_40pct_to_50pct_in_profit".to_string()), + _30pct_to_40pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_30pct_to_40pct_in_profit".to_string()), + _20pct_to_30pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_20pct_to_30pct_in_profit".to_string()), + _10pct_to_20pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_10pct_to_20pct_in_profit".to_string()), + _0pct_to_10pct_in_profit: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_0pct_to_10pct_in_profit".to_string()), + _0pct_to_10pct_in_loss: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_0pct_to_10pct_in_loss".to_string()), + _10pct_to_20pct_in_loss: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_10pct_to_20pct_in_loss".to_string()), + _20pct_to_30pct_in_loss: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_20pct_to_30pct_in_loss".to_string()), + _30pct_to_40pct_in_loss: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_30pct_to_40pct_in_loss".to_string()), + _40pct_to_50pct_in_loss: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_40pct_to_50pct_in_loss".to_string()), + _50pct_to_60pct_in_loss: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_50pct_to_60pct_in_loss".to_string()), + _60pct_to_70pct_in_loss: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_60pct_to_70pct_in_loss".to_string()), + _70pct_to_80pct_in_loss: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_70pct_to_80pct_in_loss".to_string()), + _80pct_to_90pct_in_loss: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_80pct_to_90pct_in_loss".to_string()), + _90pct_to_100pct_in_loss: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_90pct_to_100pct_in_loss".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Profitability_Profit { - pub all: NuplRealizedSupplyPattern, - pub _10pct: NuplRealizedSupplyPattern, - pub _20pct: NuplRealizedSupplyPattern, - pub _30pct: NuplRealizedSupplyPattern, - pub _40pct: NuplRealizedSupplyPattern, - pub _50pct: NuplRealizedSupplyPattern, - pub _60pct: NuplRealizedSupplyPattern, - pub _70pct: NuplRealizedSupplyPattern, - pub _80pct: NuplRealizedSupplyPattern, - pub _90pct: NuplRealizedSupplyPattern, - pub _100pct: NuplRealizedSupplyPattern, - pub _200pct: NuplRealizedSupplyPattern, - pub _300pct: NuplRealizedSupplyPattern, - pub _500pct: NuplRealizedSupplyPattern, + pub all: NuplRealizedSupplyUnrealizedPattern, + pub _10pct: NuplRealizedSupplyUnrealizedPattern, + pub _20pct: NuplRealizedSupplyUnrealizedPattern, + pub _30pct: NuplRealizedSupplyUnrealizedPattern, + pub _40pct: NuplRealizedSupplyUnrealizedPattern, + pub _50pct: NuplRealizedSupplyUnrealizedPattern, + pub _60pct: NuplRealizedSupplyUnrealizedPattern, + pub _70pct: NuplRealizedSupplyUnrealizedPattern, + pub _80pct: NuplRealizedSupplyUnrealizedPattern, + pub _90pct: NuplRealizedSupplyUnrealizedPattern, + pub _100pct: NuplRealizedSupplyUnrealizedPattern, + pub _200pct: NuplRealizedSupplyUnrealizedPattern, + pub _300pct: NuplRealizedSupplyUnrealizedPattern, + pub _500pct: NuplRealizedSupplyUnrealizedPattern, } impl SeriesTree_Cohorts_Utxo_Profitability_Profit { pub fn new(client: Arc, base_path: String) -> Self { Self { - all: NuplRealizedSupplyPattern::new(client.clone(), "utxos_in_profit".to_string()), - _10pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_10pct_in_profit".to_string()), - _20pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_20pct_in_profit".to_string()), - _30pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_30pct_in_profit".to_string()), - _40pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_40pct_in_profit".to_string()), - _50pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_50pct_in_profit".to_string()), - _60pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_60pct_in_profit".to_string()), - _70pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_70pct_in_profit".to_string()), - _80pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_80pct_in_profit".to_string()), - _90pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_90pct_in_profit".to_string()), - _100pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_100pct_in_profit".to_string()), - _200pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_200pct_in_profit".to_string()), - _300pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_300pct_in_profit".to_string()), - _500pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_500pct_in_profit".to_string()), + all: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_in_profit".to_string()), + _10pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_10pct_in_profit".to_string()), + _20pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_20pct_in_profit".to_string()), + _30pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_30pct_in_profit".to_string()), + _40pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_40pct_in_profit".to_string()), + _50pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_50pct_in_profit".to_string()), + _60pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_60pct_in_profit".to_string()), + _70pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_70pct_in_profit".to_string()), + _80pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_80pct_in_profit".to_string()), + _90pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_90pct_in_profit".to_string()), + _100pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_100pct_in_profit".to_string()), + _200pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_200pct_in_profit".to_string()), + _300pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_300pct_in_profit".to_string()), + _500pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_500pct_in_profit".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Profitability_Loss { - pub all: NuplRealizedSupplyPattern, - pub _10pct: NuplRealizedSupplyPattern, - pub _20pct: NuplRealizedSupplyPattern, - pub _30pct: NuplRealizedSupplyPattern, - pub _40pct: NuplRealizedSupplyPattern, - pub _50pct: NuplRealizedSupplyPattern, - pub _60pct: NuplRealizedSupplyPattern, - pub _70pct: NuplRealizedSupplyPattern, - pub _80pct: NuplRealizedSupplyPattern, + pub all: NuplRealizedSupplyUnrealizedPattern, + pub _10pct: NuplRealizedSupplyUnrealizedPattern, + pub _20pct: NuplRealizedSupplyUnrealizedPattern, + pub _30pct: NuplRealizedSupplyUnrealizedPattern, + pub _40pct: NuplRealizedSupplyUnrealizedPattern, + pub _50pct: NuplRealizedSupplyUnrealizedPattern, + pub _60pct: NuplRealizedSupplyUnrealizedPattern, + pub _70pct: NuplRealizedSupplyUnrealizedPattern, + pub _80pct: NuplRealizedSupplyUnrealizedPattern, } impl SeriesTree_Cohorts_Utxo_Profitability_Loss { pub fn new(client: Arc, base_path: String) -> Self { Self { - all: NuplRealizedSupplyPattern::new(client.clone(), "utxos_in_loss".to_string()), - _10pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_10pct_in_loss".to_string()), - _20pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_20pct_in_loss".to_string()), - _30pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_30pct_in_loss".to_string()), - _40pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_40pct_in_loss".to_string()), - _50pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_50pct_in_loss".to_string()), - _60pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_60pct_in_loss".to_string()), - _70pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_70pct_in_loss".to_string()), - _80pct: NuplRealizedSupplyPattern::new(client.clone(), "utxos_over_80pct_in_loss".to_string()), + all: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_in_loss".to_string()), + _10pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_10pct_in_loss".to_string()), + _20pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_20pct_in_loss".to_string()), + _30pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_30pct_in_loss".to_string()), + _40pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_40pct_in_loss".to_string()), + _50pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_50pct_in_loss".to_string()), + _60pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_60pct_in_loss".to_string()), + _70pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_70pct_in_loss".to_string()), + _80pct: NuplRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_80pct_in_loss".to_string()), } } } @@ -8156,115 +13165,1755 @@ impl SeriesTree_Cohorts_Addr { /// Series tree node. pub struct SeriesTree_Cohorts_Addr_OverAmount { - pub _1sat: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1sat: SeriesTree_Cohorts_Addr_OverAmount_1sat, + pub _10sats: SeriesTree_Cohorts_Addr_OverAmount_10sats, + pub _100sats: SeriesTree_Cohorts_Addr_OverAmount_100sats, + pub _1k_sats: SeriesTree_Cohorts_Addr_OverAmount_1kSats, + pub _10k_sats: SeriesTree_Cohorts_Addr_OverAmount_10kSats, + pub _100k_sats: SeriesTree_Cohorts_Addr_OverAmount_100kSats, + pub _1m_sats: SeriesTree_Cohorts_Addr_OverAmount_1mSats, + pub _10m_sats: SeriesTree_Cohorts_Addr_OverAmount_10mSats, + pub _1btc: SeriesTree_Cohorts_Addr_OverAmount_1btc, + pub _10btc: SeriesTree_Cohorts_Addr_OverAmount_10btc, + pub _100btc: SeriesTree_Cohorts_Addr_OverAmount_100btc, + pub _1k_btc: SeriesTree_Cohorts_Addr_OverAmount_1kBtc, + pub _10k_btc: SeriesTree_Cohorts_Addr_OverAmount_10kBtc, } impl SeriesTree_Cohorts_Addr_OverAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1sat: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1sat".to_string()), - _10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10sats".to_string()), - _100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100sats".to_string()), - _1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1k_sats".to_string()), - _10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10k_sats".to_string()), - _100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100k_sats".to_string()), - _1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1m_sats".to_string()), - _10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10m_sats".to_string()), - _1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1btc".to_string()), - _10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10btc".to_string()), - _100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100btc".to_string()), - _1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1k_btc".to_string()), - _10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10k_btc".to_string()), + _1sat: SeriesTree_Cohorts_Addr_OverAmount_1sat::new(client.clone(), format!("{base_path}_1sat")), + _10sats: SeriesTree_Cohorts_Addr_OverAmount_10sats::new(client.clone(), format!("{base_path}_10sats")), + _100sats: SeriesTree_Cohorts_Addr_OverAmount_100sats::new(client.clone(), format!("{base_path}_100sats")), + _1k_sats: SeriesTree_Cohorts_Addr_OverAmount_1kSats::new(client.clone(), format!("{base_path}_1k_sats")), + _10k_sats: SeriesTree_Cohorts_Addr_OverAmount_10kSats::new(client.clone(), format!("{base_path}_10k_sats")), + _100k_sats: SeriesTree_Cohorts_Addr_OverAmount_100kSats::new(client.clone(), format!("{base_path}_100k_sats")), + _1m_sats: SeriesTree_Cohorts_Addr_OverAmount_1mSats::new(client.clone(), format!("{base_path}_1m_sats")), + _10m_sats: SeriesTree_Cohorts_Addr_OverAmount_10mSats::new(client.clone(), format!("{base_path}_10m_sats")), + _1btc: SeriesTree_Cohorts_Addr_OverAmount_1btc::new(client.clone(), format!("{base_path}_1btc")), + _10btc: SeriesTree_Cohorts_Addr_OverAmount_10btc::new(client.clone(), format!("{base_path}_10btc")), + _100btc: SeriesTree_Cohorts_Addr_OverAmount_100btc::new(client.clone(), format!("{base_path}_100btc")), + _1k_btc: SeriesTree_Cohorts_Addr_OverAmount_1kBtc::new(client.clone(), format!("{base_path}_1k_btc")), + _10k_btc: SeriesTree_Cohorts_Addr_OverAmount_10kBtc::new(client.clone(), format!("{base_path}_10k_btc")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_1sat { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_1sat_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_1sat { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_1sat_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_1sat_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_1sat_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_1sat".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_1sat_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_1sat_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_1sat_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_1sat_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_1sat_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_1sat_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_1sat_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_10sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_10sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_10sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_10sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_10sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_10sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_10sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_10sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_10sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_10sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_10sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_10sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_10sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_100sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_100sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_100sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_100sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_100sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_100sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_100sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_100sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_100sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_100sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_100sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_100sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_100sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_1kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_1kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_1k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_1kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_1k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_1k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_1k_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_1k_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_1kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_1kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_1k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_1k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_1k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_10kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_10kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_10k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_10kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_10k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_10k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_10k_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_10k_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_10kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_10kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_10k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_10k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_10k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_100kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_100kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_100k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_100kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_100k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_100k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_100k_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_100k_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_100kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_100kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_100k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_100k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_100k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_1mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_1mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_1m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_1mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_1m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_1m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_1m_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_1m_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_1mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_1mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_1m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_1m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_1m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_10mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_10mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_10m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_10mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_10m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_10m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_10m_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_10m_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_10mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_10mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_10m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_10m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_10m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_1btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_1btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_1btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_1btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_1btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_1btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_1btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_1btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_1btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_1btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_1btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_1btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_1btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_10btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_10btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_10btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_10btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_10btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_10btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_10btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_10btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_10btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_10btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_10btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_10btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_10btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_100btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_100btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_100btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_100btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_100btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_100btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_100btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_100btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_100btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_100btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_100btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_100btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_100btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_1kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_1kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_1k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_1kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_1k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_1k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_1k_btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_1k_btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_1kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_1kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_1k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_1k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_1k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_10kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_OverAmount_10kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_10k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_OverAmount_10kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_10k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_10k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_10k_btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_10k_btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_OverAmount_10kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_OverAmount_10kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_10k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_10k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_10k_btc_spending_rate".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Addr_AmountRange { - pub _0sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1sat_to_10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10sats_to_100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _100sats_to_1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_sats_to_10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_sats_to_100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _100k_sats_to_1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1m_sats_to_10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10m_sats_to_1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1btc_to_10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10btc_to_100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _100btc_to_1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_btc_to_10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_btc_to_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub over_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _0sats: SeriesTree_Cohorts_Addr_AmountRange_0sats, + pub _1sat_to_10sats: SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats, + pub _10sats_to_100sats: SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats, + pub _100sats_to_1k_sats: SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats, + pub _1k_sats_to_10k_sats: SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats, + pub _10k_sats_to_100k_sats: SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats, + pub _100k_sats_to_1m_sats: SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats, + pub _1m_sats_to_10m_sats: SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats, + pub _10m_sats_to_1btc: SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc, + pub _1btc_to_10btc: SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc, + pub _10btc_to_100btc: SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc, + pub _100btc_to_1k_btc: SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc, + pub _1k_btc_to_10k_btc: SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc, + pub _10k_btc_to_100k_btc: SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc, + pub over_100k_btc: SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc, } impl SeriesTree_Cohorts_Addr_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _0sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_0sats".to_string()), - _1sat_to_10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1sat_to_10sats".to_string()), - _10sats_to_100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10sats_to_100sats".to_string()), - _100sats_to_1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_100sats_to_1k_sats".to_string()), - _1k_sats_to_10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1k_sats_to_10k_sats".to_string()), - _10k_sats_to_100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10k_sats_to_100k_sats".to_string()), - _100k_sats_to_1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_100k_sats_to_1m_sats".to_string()), - _1m_sats_to_10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1m_sats_to_10m_sats".to_string()), - _10m_sats_to_1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10m_sats_to_1btc".to_string()), - _1btc_to_10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1btc_to_10btc".to_string()), - _10btc_to_100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10btc_to_100btc".to_string()), - _100btc_to_1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_100btc_to_1k_btc".to_string()), - _1k_btc_to_10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1k_btc_to_10k_btc".to_string()), - _10k_btc_to_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10k_btc_to_100k_btc".to_string()), - over_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100k_btc".to_string()), + _0sats: SeriesTree_Cohorts_Addr_AmountRange_0sats::new(client.clone(), format!("{base_path}_0sats")), + _1sat_to_10sats: SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats::new(client.clone(), format!("{base_path}_1sat_to_10sats")), + _10sats_to_100sats: SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats::new(client.clone(), format!("{base_path}_10sats_to_100sats")), + _100sats_to_1k_sats: SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats::new(client.clone(), format!("{base_path}_100sats_to_1k_sats")), + _1k_sats_to_10k_sats: SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats::new(client.clone(), format!("{base_path}_1k_sats_to_10k_sats")), + _10k_sats_to_100k_sats: SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats::new(client.clone(), format!("{base_path}_10k_sats_to_100k_sats")), + _100k_sats_to_1m_sats: SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats::new(client.clone(), format!("{base_path}_100k_sats_to_1m_sats")), + _1m_sats_to_10m_sats: SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats::new(client.clone(), format!("{base_path}_1m_sats_to_10m_sats")), + _10m_sats_to_1btc: SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc::new(client.clone(), format!("{base_path}_10m_sats_to_1btc")), + _1btc_to_10btc: SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc::new(client.clone(), format!("{base_path}_1btc_to_10btc")), + _10btc_to_100btc: SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc::new(client.clone(), format!("{base_path}_10btc_to_100btc")), + _100btc_to_1k_btc: SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc::new(client.clone(), format!("{base_path}_100btc_to_1k_btc")), + _1k_btc_to_10k_btc: SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc::new(client.clone(), format!("{base_path}_1k_btc_to_10k_btc")), + _10k_btc_to_100k_btc: SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc::new(client.clone(), format!("{base_path}_10k_btc_to_100k_btc")), + over_100k_btc: SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc::new(client.clone(), format!("{base_path}_over_100k_btc")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_0sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_0sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_0sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_0sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_0sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_0sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_0sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_0sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_0sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_0sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_0sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_0sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_0sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_0sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_1sat_to_10sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_1sat_to_10sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_1sat_to_10sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_1sat_to_10sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_1sat_to_10sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_1sat_to_10sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_1sat_to_10sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_1sat_to_10sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_10sats_to_100sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_10sats_to_100sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_10sats_to_100sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_10sats_to_100sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_10sats_to_100sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_10sats_to_100sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_10sats_to_100sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_10sats_to_100sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_100sats_to_1k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_100sats_to_1k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_100sats_to_1k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_100sats_to_1k_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_100sats_to_1k_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_100sats_to_1k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_100sats_to_1k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_100sats_to_1k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_1k_sats_to_10k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_1k_sats_to_10k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_1k_sats_to_10k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_1k_sats_to_10k_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_1k_sats_to_10k_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_1k_sats_to_10k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_1k_sats_to_10k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_1k_sats_to_10k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_10k_sats_to_100k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_10k_sats_to_100k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_10k_sats_to_100k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_10k_sats_to_100k_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_10k_sats_to_100k_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_10k_sats_to_100k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_10k_sats_to_100k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_10k_sats_to_100k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_100k_sats_to_1m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_100k_sats_to_1m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_100k_sats_to_1m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_100k_sats_to_1m_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_100k_sats_to_1m_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_100k_sats_to_1m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_100k_sats_to_1m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_100k_sats_to_1m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_1m_sats_to_10m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_1m_sats_to_10m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_1m_sats_to_10m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_1m_sats_to_10m_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_1m_sats_to_10m_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_1m_sats_to_10m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_1m_sats_to_10m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_1m_sats_to_10m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_10m_sats_to_1btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_10m_sats_to_1btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_10m_sats_to_1btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_10m_sats_to_1btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_10m_sats_to_1btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_10m_sats_to_1btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_10m_sats_to_1btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_10m_sats_to_1btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_1btc_to_10btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_1btc_to_10btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_1btc_to_10btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_1btc_to_10btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_1btc_to_10btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_1btc_to_10btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_1btc_to_10btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_1btc_to_10btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_10btc_to_100btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_10btc_to_100btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_10btc_to_100btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_10btc_to_100btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_10btc_to_100btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_10btc_to_100btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_10btc_to_100btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_10btc_to_100btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_100btc_to_1k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_100btc_to_1k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_100btc_to_1k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_100btc_to_1k_btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_100btc_to_1k_btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_100btc_to_1k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_100btc_to_1k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_100btc_to_1k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_1k_btc_to_10k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_1k_btc_to_10k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_1k_btc_to_10k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_1k_btc_to_10k_btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_1k_btc_to_10k_btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_1k_btc_to_10k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_1k_btc_to_10k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_1k_btc_to_10k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_10k_btc_to_100k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_10k_btc_to_100k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_10k_btc_to_100k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_10k_btc_to_100k_btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_10k_btc_to_100k_btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_10k_btc_to_100k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_10k_btc_to_100k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_10k_btc_to_100k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_over_100k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_over_100k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_over_100k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_over_100k_btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_over_100k_btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_over_100k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_over_100k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_over_100k_btc_spending_rate".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Addr_UnderAmount { - pub _10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, - pub _100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10sats: SeriesTree_Cohorts_Addr_UnderAmount_10sats, + pub _100sats: SeriesTree_Cohorts_Addr_UnderAmount_100sats, + pub _1k_sats: SeriesTree_Cohorts_Addr_UnderAmount_1kSats, + pub _10k_sats: SeriesTree_Cohorts_Addr_UnderAmount_10kSats, + pub _100k_sats: SeriesTree_Cohorts_Addr_UnderAmount_100kSats, + pub _1m_sats: SeriesTree_Cohorts_Addr_UnderAmount_1mSats, + pub _10m_sats: SeriesTree_Cohorts_Addr_UnderAmount_10mSats, + pub _1btc: SeriesTree_Cohorts_Addr_UnderAmount_1btc, + pub _10btc: SeriesTree_Cohorts_Addr_UnderAmount_10btc, + pub _100btc: SeriesTree_Cohorts_Addr_UnderAmount_100btc, + pub _1k_btc: SeriesTree_Cohorts_Addr_UnderAmount_1kBtc, + pub _10k_btc: SeriesTree_Cohorts_Addr_UnderAmount_10kBtc, + pub _100k_btc: SeriesTree_Cohorts_Addr_UnderAmount_100kBtc, } impl SeriesTree_Cohorts_Addr_UnderAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10sats".to_string()), - _100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100sats".to_string()), - _1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1k_sats".to_string()), - _10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10k_sats".to_string()), - _100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100k_sats".to_string()), - _1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1m_sats".to_string()), - _10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10m_sats".to_string()), - _1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1btc".to_string()), - _10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10btc".to_string()), - _100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100btc".to_string()), - _1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1k_btc".to_string()), - _10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10k_btc".to_string()), - _100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100k_btc".to_string()), + _10sats: SeriesTree_Cohorts_Addr_UnderAmount_10sats::new(client.clone(), format!("{base_path}_10sats")), + _100sats: SeriesTree_Cohorts_Addr_UnderAmount_100sats::new(client.clone(), format!("{base_path}_100sats")), + _1k_sats: SeriesTree_Cohorts_Addr_UnderAmount_1kSats::new(client.clone(), format!("{base_path}_1k_sats")), + _10k_sats: SeriesTree_Cohorts_Addr_UnderAmount_10kSats::new(client.clone(), format!("{base_path}_10k_sats")), + _100k_sats: SeriesTree_Cohorts_Addr_UnderAmount_100kSats::new(client.clone(), format!("{base_path}_100k_sats")), + _1m_sats: SeriesTree_Cohorts_Addr_UnderAmount_1mSats::new(client.clone(), format!("{base_path}_1m_sats")), + _10m_sats: SeriesTree_Cohorts_Addr_UnderAmount_10mSats::new(client.clone(), format!("{base_path}_10m_sats")), + _1btc: SeriesTree_Cohorts_Addr_UnderAmount_1btc::new(client.clone(), format!("{base_path}_1btc")), + _10btc: SeriesTree_Cohorts_Addr_UnderAmount_10btc::new(client.clone(), format!("{base_path}_10btc")), + _100btc: SeriesTree_Cohorts_Addr_UnderAmount_100btc::new(client.clone(), format!("{base_path}_100btc")), + _1k_btc: SeriesTree_Cohorts_Addr_UnderAmount_1kBtc::new(client.clone(), format!("{base_path}_1k_btc")), + _10k_btc: SeriesTree_Cohorts_Addr_UnderAmount_10kBtc::new(client.clone(), format!("{base_path}_10k_btc")), + _100k_btc: SeriesTree_Cohorts_Addr_UnderAmount_100kBtc::new(client.clone(), format!("{base_path}_100k_btc")), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_10sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_10sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_10sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_10sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_10sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_10sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_10sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_10sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_10sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_10sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_10sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_10sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_10sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_100sats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_100sats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_100sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_100sats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_100sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_100sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_100sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_100sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_100sats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_100sats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_100sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_100sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_100sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_1kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_1kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_1k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_1kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_1k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_1k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_1k_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_1k_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_1kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_1kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_1k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_1k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_1k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_10kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_10kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_10k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_10kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_10k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_10k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_10k_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_10k_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_10kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_10kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_10k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_10k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_10k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_100kSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_100kSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_100k_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_100kSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_100k_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_100k_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_100k_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_100k_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_100kSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_100kSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_100k_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_100k_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_100k_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_1mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_1mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_1m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_1mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_1m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_1m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_1m_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_1m_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_1mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_1mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_1m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_1m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_1m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_10mSats { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_10mSats_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_10m_sats_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_10mSats_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_10m_sats_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_10m_sats".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_10m_sats_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_10m_sats_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_10mSats_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_10mSats_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_10m_sats_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_10m_sats_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_10m_sats_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_1btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_1btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_1btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_1btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_1btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_1btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_1btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_1btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_1btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_1btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_1btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_1btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_1btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_10btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_10btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_10btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_10btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_10btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_10btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_10btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_10btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_10btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_10btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_10btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_10btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_10btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_100btc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_100btc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_100btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_100btc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_100btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_100btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_100btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_100btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_100btc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_100btc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_100btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_100btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_100btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_1kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_1kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_1k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_1kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_1k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_1k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_1k_btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_1k_btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_1kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_1kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_1k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_1k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_1k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_10kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_10kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_10k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_10kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_10k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_10k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_10k_btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_10k_btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_10kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_10kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_10k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_10k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_10k_btc_spending_rate".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_100kBtc { + pub supply: DeltaTotalPattern, + pub outputs: SeriesTree_Cohorts_Addr_UnderAmount_100kBtc_Outputs, + pub activity: TransferPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub unrealized: NuplPattern, + pub addr_count: BaseDeltaPattern, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_100kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + supply: DeltaTotalPattern::new(client.clone(), "addrs_under_100k_btc_supply".to_string()), + outputs: SeriesTree_Cohorts_Addr_UnderAmount_100kBtc_Outputs::new(client.clone(), format!("{base_path}_outputs")), + activity: TransferPattern::new(client.clone(), "addrs_under_100k_btc_transfer_volume".to_string()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), "addrs_under_100k_btc".to_string()), + unrealized: NuplPattern::new(client.clone(), "addrs_under_100k_btc_nupl".to_string()), + addr_count: BaseDeltaPattern::new(client.clone(), "addrs_under_100k_btc_addr_count".to_string()), + } + } +} + +/// Series tree node. +pub struct SeriesTree_Cohorts_Addr_UnderAmount_100kBtc_Outputs { + pub unspent_count: BaseDeltaPattern, + pub spent_count: AverageBlockCumulativeSumPattern2, + pub spending_rate: SeriesPattern1, +} + +impl SeriesTree_Cohorts_Addr_UnderAmount_100kBtc_Outputs { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + unspent_count: BaseDeltaPattern::new(client.clone(), "addrs_under_100k_btc_utxo_count".to_string()), + spent_count: AverageBlockCumulativeSumPattern2::new(client.clone(), "addrs_under_100k_btc_spent_utxo_count".to_string()), + spending_rate: SeriesPattern1::new(client.clone(), "addrs_under_100k_btc_spending_rate".to_string()), } } } diff --git a/crates/brk_computer/src/distribution/cohorts/utxo/percentiles.rs b/crates/brk_computer/src/distribution/cohorts/utxo/percentiles.rs index 53e6c493b..d5645a9b5 100644 --- a/crates/brk_computer/src/distribution/cohorts/utxo/percentiles.rs +++ b/crates/brk_computer/src/distribution/cohorts/utxo/percentiles.rs @@ -1,13 +1,15 @@ use std::{cmp::Reverse, collections::BinaryHeap, fs, path::Path}; -use brk_cohort::{Filtered, PROFITABILITY_RANGE_COUNT, PROFIT_COUNT, TERM_NAMES}; +use brk_cohort::{Filtered, PROFIT_COUNT, PROFITABILITY_RANGE_COUNT, TERM_NAMES}; use brk_error::Result; use brk_types::{BasisPoints16, Cents, CentsCompact, CostBasisDistribution, Date, Dollars, Sats}; use crate::distribution::metrics::{CostBasis, ProfitabilityMetrics}; -use super::fenwick::{PercentileResult, ProfitabilityRangeResult}; -use super::groups::UTXOCohorts; +use super::{ + fenwick::{PercentileResult, ProfitabilityRangeResult}, + groups::UTXOCohorts, +}; use super::COST_BASIS_PRICE_DIGITS; @@ -48,7 +50,7 @@ impl UTXOCohorts { push_cost_basis(<h, lth_d, &mut self.lth.metrics.cost_basis); let prof = self.fenwick.profitability(spot_price); - push_profitability(&prof, &mut self.profitability); + push_profitability(&prof, spot_price, &mut self.profitability); } /// K-way merge only for writing daily cost basis distributions to disk. @@ -92,11 +94,7 @@ impl UTXOCohorts { /// Push percentiles + density to cost basis vecs. #[inline(always)] -fn push_cost_basis( - percentiles: &PercentileResult, - density_bps: u16, - cost_basis: &mut CostBasis, -) { +fn push_cost_basis(percentiles: &PercentileResult, density_bps: u16, cost_basis: &mut CostBasis) { cost_basis.push_minmax(percentiles.min_price, percentiles.max_price); cost_basis.push_percentiles(&percentiles.sat_prices, &percentiles.usd_prices); cost_basis.push_density(BasisPoints16::from(density_bps)); @@ -108,19 +106,41 @@ fn raw_usd_to_dollars(raw: u128) -> Dollars { Dollars::from(raw as f64 / 1e10) } +/// Number of profit ranges (0..=14 are profit, 15..=24 are loss). +const PROFIT_RANGE_COUNT: usize = 15; + +/// Compute unrealized P&L from raw sats/usd for a given range. +/// Profit ranges: market_value - cost_basis. Loss ranges: cost_basis - market_value. +#[inline(always)] +fn compute_unrealized_pnl(spot_cents: u128, sats: u64, usd: u128, is_profit: bool) -> Dollars { + let market_value = spot_cents * sats as u128; + let raw = if is_profit { + market_value.saturating_sub(usd) + } else { + usd.saturating_sub(market_value) + }; + raw_usd_to_dollars(raw) +} + /// Push profitability range + profit/loss aggregate values to vecs. fn push_profitability( buckets: &[ProfitabilityRangeResult; PROFITABILITY_RANGE_COUNT], + spot_price: Cents, metrics: &mut ProfitabilityMetrics, ) { + let spot_cents = spot_price.as_u128(); + // Push 25 range buckets for (i, bucket) in metrics.range.as_array_mut().into_iter().enumerate() { let r = &buckets[i]; + let is_profit = i < PROFIT_RANGE_COUNT; bucket.push( Sats::from(r.all_sats), Sats::from(r.sth_sats), raw_usd_to_dollars(r.all_usd), raw_usd_to_dollars(r.sth_usd), + compute_unrealized_pnl(spot_cents, r.all_sats, r.all_usd, is_profit), + compute_unrealized_pnl(spot_cents, r.sth_sats, r.sth_usd, is_profit), ); } @@ -141,6 +161,8 @@ fn push_profitability( Sats::from(cum_sth_sats), raw_usd_to_dollars(cum_usd), raw_usd_to_dollars(cum_sth_usd), + compute_unrealized_pnl(spot_cents, cum_sats, cum_usd, true), + compute_unrealized_pnl(spot_cents, cum_sth_sats, cum_sth_usd, true), ); } @@ -163,6 +185,8 @@ fn push_profitability( Sats::from(cum_sth_sats), raw_usd_to_dollars(cum_usd), raw_usd_to_dollars(cum_sth_usd), + compute_unrealized_pnl(spot_cents, cum_sats, cum_usd, false), + compute_unrealized_pnl(spot_cents, cum_sth_sats, cum_sth_usd, false), ); } } diff --git a/crates/brk_computer/src/distribution/metrics/cohort/extended.rs b/crates/brk_computer/src/distribution/metrics/cohort/extended.rs index c8f8c39a6..f4c857f56 100644 --- a/crates/brk_computer/src/distribution/metrics/cohort/extended.rs +++ b/crates/brk_computer/src/distribution/metrics/cohort/extended.rs @@ -1,9 +1,7 @@ use brk_cohort::Filter; use brk_error::Result; use brk_traversable::Traversable; -use brk_types::{ - Dollars, Height, Indexes, Sats, StoredU64, Version, -}; +use brk_types::{Dollars, Height, Indexes, Sats, StoredU64, Version}; use vecdb::AnyStoredVec; use vecdb::{Exit, ReadableVec, Rw, StorageMode}; @@ -87,6 +85,7 @@ impl ExtendedCohortMetrics { }) } + #[allow(clippy::too_many_arguments)] pub(crate) fn compute_rest_part2( &mut self, blocks: &blocks::Vecs, @@ -126,11 +125,8 @@ impl ExtendedCohortMetrics { exit, )?; - self.unrealized.compute_sentiment( - starting_indexes, - &prices.spot.cents.height, - exit, - )?; + self.unrealized + .compute_sentiment(starting_indexes, &prices.spot.cents.height, exit)?; self.relative.compute( starting_indexes.height, @@ -142,9 +138,9 @@ impl ExtendedCohortMetrics { exit, )?; - self.outputs.compute_part2(starting_indexes.height, all_utxo_count, exit)?; + self.outputs + .compute_part2(starting_indexes.height, all_utxo_count, exit)?; Ok(()) } - } diff --git a/crates/brk_computer/src/distribution/metrics/profitability.rs b/crates/brk_computer/src/distribution/metrics/profitability.rs index 4e71acca2..6e769ccdb 100644 --- a/crates/brk_computer/src/distribution/metrics/profitability.rs +++ b/crates/brk_computer/src/distribution/metrics/profitability.rs @@ -20,6 +20,7 @@ pub struct WithSth { pub struct ProfitabilityBucket { pub supply: WithSth, AmountPerBlock>, pub realized_cap: WithSth>, + pub unrealized_pnl: WithSth>, pub nupl: RatioPerBlock, } @@ -31,6 +32,7 @@ impl ProfitabilityBucket { .height .len() .min(self.realized_cap.all.height.len()) + .min(self.unrealized_pnl.all.height.len()) } } @@ -72,6 +74,20 @@ impl ProfitabilityBucket { indexes, )?, }, + unrealized_pnl: WithSth { + all: PerBlock::forced_import( + db, + &format!("{name}_unrealized_pnl"), + version, + indexes, + )?, + sth: PerBlock::forced_import( + db, + &format!("{name}_sth_unrealized_pnl"), + version, + indexes, + )?, + }, nupl: RatioPerBlock::forced_import_raw( db, &format!("{name}_nupl"), @@ -88,11 +104,15 @@ impl ProfitabilityBucket { sth_supply: Sats, realized_cap: Dollars, sth_realized_cap: Dollars, + unrealized_pnl: Dollars, + sth_unrealized_pnl: Dollars, ) { self.supply.all.sats.height.push(supply); self.supply.sth.sats.height.push(sth_supply); self.realized_cap.all.height.push(realized_cap); self.realized_cap.sth.height.push(sth_realized_cap); + self.unrealized_pnl.all.height.push(unrealized_pnl); + self.unrealized_pnl.sth.height.push(sth_unrealized_pnl); } pub(crate) fn compute( @@ -138,6 +158,8 @@ impl ProfitabilityBucket { &mut self.supply.sth.cents.height, &mut self.realized_cap.all.height, &mut self.realized_cap.sth.height, + &mut self.unrealized_pnl.all.height, + &mut self.unrealized_pnl.sth.height, &mut self.nupl.bps.height, ] } diff --git a/modules/brk-client/index.js b/modules/brk-client/index.js index 08656e89c..31578f4ee 100644 --- a/modules/brk-client/index.js +++ b/modules/brk-client/index.js @@ -2132,29 +2132,12 @@ function create_1m1w1y2y4yAllPattern(client, acc) { * @typedef {Object} ActivityAddrOutputsRealizedSupplyUnrealizedPattern * @property {TransferPattern} activity * @property {BaseDeltaPattern} addrCount - * @property {UnspentPattern} outputs + * @property {SpendingSpentUnspentPattern} outputs * @property {CapLossMvrvPriceProfitPattern} realized * @property {DeltaTotalPattern} supply * @property {NuplPattern} unrealized */ -/** - * Create a ActivityAddrOutputsRealizedSupplyUnrealizedPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} - */ -function createActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, acc) { - return { - activity: createTransferPattern(client, _m(acc, 'transfer_volume')), - addrCount: createBaseDeltaPattern(client, _m(acc, 'addr_count')), - outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), - realized: createCapLossMvrvPriceProfitPattern(client, acc), - supply: createDeltaTotalPattern(client, _m(acc, 'supply')), - unrealized: createNuplPattern(client, _m(acc, 'nupl')), - }; -} - /** * @typedef {Object} AverageBlockCumulativeInSumPattern * @property {_1m1w1y24hPattern3} average @@ -2372,78 +2355,30 @@ function create_1m1w1y24hBlockPattern(client, acc) { /** * @typedef {Object} ActivityOutputsRealizedSupplyUnrealizedPattern * @property {CoindaysTransferPattern} activity - * @property {UnspentPattern} outputs + * @property {SpendingSpentUnspentPattern} outputs * @property {CapLossMvrvNetPriceProfitSoprPattern} realized * @property {DeltaHalfInToTotalPattern} supply * @property {LossNetNuplProfitPattern} unrealized */ -/** - * Create a ActivityOutputsRealizedSupplyUnrealizedPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {ActivityOutputsRealizedSupplyUnrealizedPattern} - */ -function createActivityOutputsRealizedSupplyUnrealizedPattern(client, acc) { - return { - activity: createCoindaysTransferPattern(client, acc), - outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), - realized: createCapLossMvrvNetPriceProfitSoprPattern(client, acc), - supply: createDeltaHalfInToTotalPattern(client, _m(acc, 'supply')), - unrealized: createLossNetNuplProfitPattern(client, acc), - }; -} - /** * @typedef {Object} ActivityOutputsRealizedSupplyUnrealizedPattern3 * @property {TransferPattern} activity - * @property {UnspentPattern} outputs + * @property {SpendingSpentUnspentPattern} outputs * @property {CapLossMvrvPriceProfitPattern} realized * @property {DeltaHalfInTotalPattern2} supply * @property {LossNuplProfitPattern} unrealized */ -/** - * Create a ActivityOutputsRealizedSupplyUnrealizedPattern3 pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {ActivityOutputsRealizedSupplyUnrealizedPattern3} - */ -function createActivityOutputsRealizedSupplyUnrealizedPattern3(client, acc) { - return { - activity: createTransferPattern(client, _m(acc, 'transfer_volume')), - outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), - realized: createCapLossMvrvPriceProfitPattern(client, acc), - supply: createDeltaHalfInTotalPattern2(client, _m(acc, 'supply')), - unrealized: createLossNuplProfitPattern(client, acc), - }; -} - /** * @typedef {Object} ActivityOutputsRealizedSupplyUnrealizedPattern2 * @property {TransferPattern} activity - * @property {UnspentPattern} outputs + * @property {SpendingSpentUnspentPattern} outputs * @property {CapLossMvrvPriceProfitPattern} realized * @property {DeltaTotalPattern} supply * @property {NuplPattern} unrealized */ -/** - * Create a ActivityOutputsRealizedSupplyUnrealizedPattern2 pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {ActivityOutputsRealizedSupplyUnrealizedPattern2} - */ -function createActivityOutputsRealizedSupplyUnrealizedPattern2(client, acc) { - return { - activity: createTransferPattern(client, _m(acc, 'transfer_volume')), - outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), - realized: createCapLossMvrvPriceProfitPattern(client, acc), - supply: createDeltaTotalPattern(client, _m(acc, 'supply')), - unrealized: createNuplPattern(client, _m(acc, 'nupl')), - }; -} - /** * @typedef {Object} BlockChangeCumulativeDeltaSumPattern * @property {CentsUsdPattern4} block @@ -3108,6 +3043,29 @@ function createLossNetNuplProfitPattern(client, acc) { }; } +/** + * @typedef {Object} NuplRealizedSupplyUnrealizedPattern + * @property {BpsRatioPattern} nupl + * @property {AllSthPattern} realizedCap + * @property {AllSthPattern2} supply + * @property {AllSthPattern} unrealizedPnl + */ + +/** + * Create a NuplRealizedSupplyUnrealizedPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {NuplRealizedSupplyUnrealizedPattern} + */ +function createNuplRealizedSupplyUnrealizedPattern(client, acc) { + return { + nupl: createBpsRatioPattern(client, _m(acc, 'nupl')), + realizedCap: createAllSthPattern(client, acc, ''), + supply: createAllSthPattern2(client, acc), + unrealizedPnl: createAllSthPattern(client, acc, ''), + }; +} + /** * @template T * @typedef {Object} _1m1w1y24hPattern @@ -3446,27 +3404,6 @@ function createLossNuplProfitPattern(client, acc) { }; } -/** - * @typedef {Object} NuplRealizedSupplyPattern - * @property {BpsRatioPattern} nupl - * @property {AllSthPattern} realizedCap - * @property {AllSthPattern2} supply - */ - -/** - * Create a NuplRealizedSupplyPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {NuplRealizedSupplyPattern} - */ -function createNuplRealizedSupplyPattern(client, acc) { - return { - nupl: createBpsRatioPattern(client, _m(acc, 'nupl')), - realizedCap: createAllSthPattern(client, acc), - supply: createAllSthPattern2(client, acc), - }; -} - /** * @typedef {Object} RatioTransferValuePattern * @property {_1m1w1y24hPattern} ratio @@ -3496,6 +3433,13 @@ function createRsiStochPattern(client, acc, disc) { }; } +/** + * @typedef {Object} SpendingSpentUnspentPattern + * @property {SeriesPattern1} spendingRate + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {BaseDeltaPattern} unspentCount + */ + /** * @template T * @typedef {Object} _6bBlockTxPattern @@ -3586,12 +3530,13 @@ function createAllSthPattern2(client, acc) { * Create a AllSthPattern pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated series name + * @param {string} disc - Discriminator suffix * @returns {AllSthPattern} */ -function createAllSthPattern(client, acc) { +function createAllSthPattern(client, acc, disc) { return { - all: createSeriesPattern1(client, _m(acc, 'realized_cap')), - sth: createSeriesPattern1(client, _m(acc, 'sth_realized_cap')), + all: createSeriesPattern1(client, _m(acc, disc)), + sth: createSeriesPattern1(client, _m(_m(acc, 'sth'), disc)), }; } @@ -3993,23 +3938,6 @@ function createTransferPattern(client, acc) { }; } -/** - * @typedef {Object} UnspentPattern - * @property {BaseDeltaPattern} unspentCount - */ - -/** - * Create a UnspentPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {UnspentPattern} - */ -function createUnspentPattern(client, acc) { - return { - unspentCount: createBaseDeltaPattern(client, acc), - }; -} - // Catalog tree typedefs /** @@ -5467,7 +5395,7 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_All * @property {SeriesTree_Cohorts_Utxo_All_Supply} supply - * @property {UnspentPattern} outputs + * @property {SeriesTree_Cohorts_Utxo_All_Outputs} outputs * @property {SeriesTree_Cohorts_Utxo_All_Activity} activity * @property {SeriesTree_Cohorts_Utxo_All_Realized} realized * @property {SeriesTree_Cohorts_Utxo_All_CostBasis} costBasis @@ -5483,6 +5411,13 @@ function createUnspentPattern(client, acc) { * @property {BtcCentsSatsToUsdPattern2} inLoss */ +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_All_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + /** * @typedef {Object} SeriesTree_Cohorts_Utxo_All_Activity * @property {AverageBlockCumulativeInSumPattern} transferVolume @@ -5675,13 +5610,20 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Sth * @property {DeltaHalfInToTotalPattern2} supply - * @property {UnspentPattern} outputs + * @property {SeriesTree_Cohorts_Utxo_Sth_Outputs} outputs * @property {SeriesTree_Cohorts_Utxo_Sth_Activity} activity * @property {SeriesTree_Cohorts_Utxo_Sth_Realized} realized * @property {SeriesTree_Cohorts_Utxo_Sth_CostBasis} costBasis * @property {SeriesTree_Cohorts_Utxo_Sth_Unrealized} unrealized */ +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Sth_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Sth_Activity * @property {AverageBlockCumulativeInSumPattern} transferVolume @@ -5850,13 +5792,20 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Lth * @property {DeltaHalfInToTotalPattern2} supply - * @property {UnspentPattern} outputs + * @property {SeriesTree_Cohorts_Utxo_Lth_Outputs} outputs * @property {SeriesTree_Cohorts_Utxo_Lth_Activity} activity * @property {SeriesTree_Cohorts_Utxo_Lth_Realized} realized * @property {SeriesTree_Cohorts_Utxo_Lth_CostBasis} costBasis * @property {SeriesTree_Cohorts_Utxo_Lth_Unrealized} unrealized */ +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Lth_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Lth_Activity * @property {AverageBlockCumulativeInSumPattern} transferVolume @@ -6016,170 +5965,2282 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} under1h - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1hTo1d - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1dTo1w - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1wTo1m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1mTo2m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2mTo3m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3mTo4m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4mTo5m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5mTo6m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6mTo1y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1yTo2y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2yTo3y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3yTo4y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4yTo5y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5yTo6y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6yTo7y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _7yTo8y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _8yTo10y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _10yTo12y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _12yTo15y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} over15y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_Under1h} under1h + * @property {SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d} _1hTo1d + * @property {SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w} _1dTo1w + * @property {SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m} _1wTo1m + * @property {SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m} _1mTo2m + * @property {SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m} _2mTo3m + * @property {SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m} _3mTo4m + * @property {SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m} _4mTo5m + * @property {SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m} _5mTo6m + * @property {SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y} _6mTo1y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y} _1yTo2y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y} _2yTo3y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y} _3yTo4y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y} _4yTo5y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y} _5yTo6y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y} _6yTo7y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y} _7yTo8y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y} _8yTo10y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y} _10yTo12y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y} _12yTo15y + * @property {SeriesTree_Cohorts_Utxo_AgeRange_Over15y} over15y + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_Under1h + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_Over15y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1w - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _7y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _8y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _10y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _12y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _15y + * @property {SeriesTree_Cohorts_Utxo_UnderAge_1w} _1w + * @property {SeriesTree_Cohorts_Utxo_UnderAge_1m} _1m + * @property {SeriesTree_Cohorts_Utxo_UnderAge_2m} _2m + * @property {SeriesTree_Cohorts_Utxo_UnderAge_3m} _3m + * @property {SeriesTree_Cohorts_Utxo_UnderAge_4m} _4m + * @property {SeriesTree_Cohorts_Utxo_UnderAge_5m} _5m + * @property {SeriesTree_Cohorts_Utxo_UnderAge_6m} _6m + * @property {SeriesTree_Cohorts_Utxo_UnderAge_1y} _1y + * @property {SeriesTree_Cohorts_Utxo_UnderAge_2y} _2y + * @property {SeriesTree_Cohorts_Utxo_UnderAge_3y} _3y + * @property {SeriesTree_Cohorts_Utxo_UnderAge_4y} _4y + * @property {SeriesTree_Cohorts_Utxo_UnderAge_5y} _5y + * @property {SeriesTree_Cohorts_Utxo_UnderAge_6y} _6y + * @property {SeriesTree_Cohorts_Utxo_UnderAge_7y} _7y + * @property {SeriesTree_Cohorts_Utxo_UnderAge_8y} _8y + * @property {SeriesTree_Cohorts_Utxo_UnderAge_10y} _10y + * @property {SeriesTree_Cohorts_Utxo_UnderAge_12y} _12y + * @property {SeriesTree_Cohorts_Utxo_UnderAge_15y} _15y + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1w + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_1w_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1w_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_1m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_2m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_2m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_2m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_3m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_3m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_3m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_4m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_4m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_4m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_5m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_5m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_5m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_6m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_6m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_6m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_1y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_2y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_2y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_2y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_3y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_3y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_3y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_4y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_4y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_4y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_5y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_5y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_5y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_6y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_6y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_6y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_7y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_7y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_7y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_8y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_8y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_8y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_10y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_10y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_10y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_12y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_12y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_12y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_15y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAge_15y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_15y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1d - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1w - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6m - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _7y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _8y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _10y - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _12y + * @property {SeriesTree_Cohorts_Utxo_OverAge_1d} _1d + * @property {SeriesTree_Cohorts_Utxo_OverAge_1w} _1w + * @property {SeriesTree_Cohorts_Utxo_OverAge_1m} _1m + * @property {SeriesTree_Cohorts_Utxo_OverAge_2m} _2m + * @property {SeriesTree_Cohorts_Utxo_OverAge_3m} _3m + * @property {SeriesTree_Cohorts_Utxo_OverAge_4m} _4m + * @property {SeriesTree_Cohorts_Utxo_OverAge_5m} _5m + * @property {SeriesTree_Cohorts_Utxo_OverAge_6m} _6m + * @property {SeriesTree_Cohorts_Utxo_OverAge_1y} _1y + * @property {SeriesTree_Cohorts_Utxo_OverAge_2y} _2y + * @property {SeriesTree_Cohorts_Utxo_OverAge_3y} _3y + * @property {SeriesTree_Cohorts_Utxo_OverAge_4y} _4y + * @property {SeriesTree_Cohorts_Utxo_OverAge_5y} _5y + * @property {SeriesTree_Cohorts_Utxo_OverAge_6y} _6y + * @property {SeriesTree_Cohorts_Utxo_OverAge_7y} _7y + * @property {SeriesTree_Cohorts_Utxo_OverAge_8y} _8y + * @property {SeriesTree_Cohorts_Utxo_OverAge_10y} _10y + * @property {SeriesTree_Cohorts_Utxo_OverAge_12y} _12y + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1d + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_1d_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1d_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1w + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_1w_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1w_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_1m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_2m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_2m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_2m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_3m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_3m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_3m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_4m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_4m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_4m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_5m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_5m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_5m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_6m + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_6m_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_6m_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_1y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_2y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_2y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_2y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_3y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_3y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_3y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_4y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_4y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_4y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_5y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_5y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_5y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_6y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_6y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_6y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_7y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_7y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_7y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_8y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_8y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_8y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_10y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_10y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_10y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_12y + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAge_12y_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_12y_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _0 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4 + * @property {SeriesTree_Cohorts_Utxo_Epoch_0} _0 + * @property {SeriesTree_Cohorts_Utxo_Epoch_1} _1 + * @property {SeriesTree_Cohorts_Utxo_Epoch_2} _2 + * @property {SeriesTree_Cohorts_Utxo_Epoch_3} _3 + * @property {SeriesTree_Cohorts_Utxo_Epoch_4} _4 + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_0 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Epoch_0_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_0_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_1 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Epoch_1_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_1_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_2 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Epoch_2_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_2_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_3 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Epoch_3_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_3_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_4 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Epoch_4_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_4_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Class - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2009 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2010 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2011 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2012 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2013 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2014 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2015 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2016 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2017 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2018 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2019 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2020 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2021 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2022 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2023 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2024 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2025 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2026 + * @property {SeriesTree_Cohorts_Utxo_Class_2009} _2009 + * @property {SeriesTree_Cohorts_Utxo_Class_2010} _2010 + * @property {SeriesTree_Cohorts_Utxo_Class_2011} _2011 + * @property {SeriesTree_Cohorts_Utxo_Class_2012} _2012 + * @property {SeriesTree_Cohorts_Utxo_Class_2013} _2013 + * @property {SeriesTree_Cohorts_Utxo_Class_2014} _2014 + * @property {SeriesTree_Cohorts_Utxo_Class_2015} _2015 + * @property {SeriesTree_Cohorts_Utxo_Class_2016} _2016 + * @property {SeriesTree_Cohorts_Utxo_Class_2017} _2017 + * @property {SeriesTree_Cohorts_Utxo_Class_2018} _2018 + * @property {SeriesTree_Cohorts_Utxo_Class_2019} _2019 + * @property {SeriesTree_Cohorts_Utxo_Class_2020} _2020 + * @property {SeriesTree_Cohorts_Utxo_Class_2021} _2021 + * @property {SeriesTree_Cohorts_Utxo_Class_2022} _2022 + * @property {SeriesTree_Cohorts_Utxo_Class_2023} _2023 + * @property {SeriesTree_Cohorts_Utxo_Class_2024} _2024 + * @property {SeriesTree_Cohorts_Utxo_Class_2025} _2025 + * @property {SeriesTree_Cohorts_Utxo_Class_2026} _2026 + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2009 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2009_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2009_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2010 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2010_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2010_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2011 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2011_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2011_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2012 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2012_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2012_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2013 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2013_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2013_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2014 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2014_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2014_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2015 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2015_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2015_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2016 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2016_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2016_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2017 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2017_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2017_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2018 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2018_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2018_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2019 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2019_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2019_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2020 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2020_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2020_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2021 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2021_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2021_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2022 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2022_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2022_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2023 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2023_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2023_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2024 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2024_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2024_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2025 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2025_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2025_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2026 + * @property {DeltaHalfInToTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_Class_2026_Outputs} outputs + * @property {CoindaysTransferPattern} activity + * @property {CapLossMvrvNetPriceProfitSoprPattern} realized + * @property {LossNetNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2026_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1sat - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10sats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100sats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100kSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1mSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10mSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1btc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10btc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100btc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kBtc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kBtc + * @property {SeriesTree_Cohorts_Utxo_OverAmount_1sat} _1sat + * @property {SeriesTree_Cohorts_Utxo_OverAmount_10sats} _10sats + * @property {SeriesTree_Cohorts_Utxo_OverAmount_100sats} _100sats + * @property {SeriesTree_Cohorts_Utxo_OverAmount_1kSats} _1kSats + * @property {SeriesTree_Cohorts_Utxo_OverAmount_10kSats} _10kSats + * @property {SeriesTree_Cohorts_Utxo_OverAmount_100kSats} _100kSats + * @property {SeriesTree_Cohorts_Utxo_OverAmount_1mSats} _1mSats + * @property {SeriesTree_Cohorts_Utxo_OverAmount_10mSats} _10mSats + * @property {SeriesTree_Cohorts_Utxo_OverAmount_1btc} _1btc + * @property {SeriesTree_Cohorts_Utxo_OverAmount_10btc} _10btc + * @property {SeriesTree_Cohorts_Utxo_OverAmount_100btc} _100btc + * @property {SeriesTree_Cohorts_Utxo_OverAmount_1kBtc} _1kBtc + * @property {SeriesTree_Cohorts_Utxo_OverAmount_10kBtc} _10kBtc + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_1sat + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_1sat_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_1sat_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_10sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_10sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_10sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_100sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_100sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_100sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_1kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_1kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_1kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_10kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_10kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_10kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_100kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_100kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_100kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_1mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_1mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_1mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_10mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_10mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_10mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_1btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_1btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_1btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_10btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_10btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_10btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_100btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_100btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_100btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_1kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_1kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_1kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_10kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_OverAmount_10kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount_10kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _0sats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1satTo10sats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10satsTo100sats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100satsTo1kSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kSatsTo10kSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kSatsTo100kSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100kSatsTo1mSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1mSatsTo10mSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10mSatsTo1btc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1btcTo10btc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10btcTo100btc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100btcTo1kBtc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kBtcTo10kBtc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kBtcTo100kBtc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} over100kBtc + * @property {SeriesTree_Cohorts_Utxo_AmountRange_0sats} _0sats + * @property {SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats} _1satTo10sats + * @property {SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats} _10satsTo100sats + * @property {SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats} _100satsTo1kSats + * @property {SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats} _1kSatsTo10kSats + * @property {SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats} _10kSatsTo100kSats + * @property {SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats} _100kSatsTo1mSats + * @property {SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats} _1mSatsTo10mSats + * @property {SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc} _10mSatsTo1btc + * @property {SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc} _1btcTo10btc + * @property {SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc} _10btcTo100btc + * @property {SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc} _100btcTo1kBtc + * @property {SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc} _1kBtcTo10kBtc + * @property {SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc} _10kBtcTo100kBtc + * @property {SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc} over100kBtc + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_0sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_0sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_0sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10sats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100sats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100kSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1mSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10mSats - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1btc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10btc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100btc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kBtc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kBtc - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100kBtc + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_10sats} _10sats + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_100sats} _100sats + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_1kSats} _1kSats + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_10kSats} _10kSats + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_100kSats} _100kSats + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_1mSats} _1mSats + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_10mSats} _10mSats + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_1btc} _1btc + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_10btc} _10btc + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_100btc} _100btc + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc} _1kBtc + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc} _10kBtc + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc} _100kBtc + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_10sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_10sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_10sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_100sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_100sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_100sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_1kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_1kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_1kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_10kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_10kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_10kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_100kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_100kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_100kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_1mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_1mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_1mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_10mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_10mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_10mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_1btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_1btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_1btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_10btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_10btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_10btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_100btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_100btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_100btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Type - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2pk65 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2pk33 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2pkh - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2ms - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2sh - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2wpkh - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2wsh - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2tr - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2a - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} unknown - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} empty + * @property {SeriesTree_Cohorts_Utxo_Type_P2pk65} p2pk65 + * @property {SeriesTree_Cohorts_Utxo_Type_P2pk33} p2pk33 + * @property {SeriesTree_Cohorts_Utxo_Type_P2pkh} p2pkh + * @property {SeriesTree_Cohorts_Utxo_Type_P2ms} p2ms + * @property {SeriesTree_Cohorts_Utxo_Type_P2sh} p2sh + * @property {SeriesTree_Cohorts_Utxo_Type_P2wpkh} p2wpkh + * @property {SeriesTree_Cohorts_Utxo_Type_P2wsh} p2wsh + * @property {SeriesTree_Cohorts_Utxo_Type_P2tr} p2tr + * @property {SeriesTree_Cohorts_Utxo_Type_P2a} p2a + * @property {SeriesTree_Cohorts_Utxo_Type_Unknown} unknown + * @property {SeriesTree_Cohorts_Utxo_Type_Empty} empty + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2pk65 + * @property {DeltaHalfInTotalPattern2} supply + * @property {SeriesTree_Cohorts_Utxo_Type_P2pk65_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2pk65_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2pk33 + * @property {DeltaHalfInTotalPattern2} supply + * @property {SeriesTree_Cohorts_Utxo_Type_P2pk33_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2pk33_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2pkh + * @property {DeltaHalfInTotalPattern2} supply + * @property {SeriesTree_Cohorts_Utxo_Type_P2pkh_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2pkh_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2ms + * @property {DeltaHalfInTotalPattern2} supply + * @property {SeriesTree_Cohorts_Utxo_Type_P2ms_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2ms_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2sh + * @property {DeltaHalfInTotalPattern2} supply + * @property {SeriesTree_Cohorts_Utxo_Type_P2sh_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2sh_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2wpkh + * @property {DeltaHalfInTotalPattern2} supply + * @property {SeriesTree_Cohorts_Utxo_Type_P2wpkh_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2wpkh_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2wsh + * @property {DeltaHalfInTotalPattern2} supply + * @property {SeriesTree_Cohorts_Utxo_Type_P2wsh_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2wsh_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2tr + * @property {DeltaHalfInTotalPattern2} supply + * @property {SeriesTree_Cohorts_Utxo_Type_P2tr_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2tr_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2a + * @property {DeltaHalfInTotalPattern2} supply + * @property {SeriesTree_Cohorts_Utxo_Type_P2a_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_P2a_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_Unknown + * @property {DeltaHalfInTotalPattern2} supply + * @property {SeriesTree_Cohorts_Utxo_Type_Unknown_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_Unknown_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_Empty + * @property {DeltaHalfInTotalPattern2} supply + * @property {SeriesTree_Cohorts_Utxo_Type_Empty_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Utxo_Type_Empty_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** @@ -6191,62 +8252,62 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Profitability_Range - * @property {NuplRealizedSupplyPattern} over1000pctInProfit - * @property {NuplRealizedSupplyPattern} _500pctTo1000pctInProfit - * @property {NuplRealizedSupplyPattern} _300pctTo500pctInProfit - * @property {NuplRealizedSupplyPattern} _200pctTo300pctInProfit - * @property {NuplRealizedSupplyPattern} _100pctTo200pctInProfit - * @property {NuplRealizedSupplyPattern} _90pctTo100pctInProfit - * @property {NuplRealizedSupplyPattern} _80pctTo90pctInProfit - * @property {NuplRealizedSupplyPattern} _70pctTo80pctInProfit - * @property {NuplRealizedSupplyPattern} _60pctTo70pctInProfit - * @property {NuplRealizedSupplyPattern} _50pctTo60pctInProfit - * @property {NuplRealizedSupplyPattern} _40pctTo50pctInProfit - * @property {NuplRealizedSupplyPattern} _30pctTo40pctInProfit - * @property {NuplRealizedSupplyPattern} _20pctTo30pctInProfit - * @property {NuplRealizedSupplyPattern} _10pctTo20pctInProfit - * @property {NuplRealizedSupplyPattern} _0pctTo10pctInProfit - * @property {NuplRealizedSupplyPattern} _0pctTo10pctInLoss - * @property {NuplRealizedSupplyPattern} _10pctTo20pctInLoss - * @property {NuplRealizedSupplyPattern} _20pctTo30pctInLoss - * @property {NuplRealizedSupplyPattern} _30pctTo40pctInLoss - * @property {NuplRealizedSupplyPattern} _40pctTo50pctInLoss - * @property {NuplRealizedSupplyPattern} _50pctTo60pctInLoss - * @property {NuplRealizedSupplyPattern} _60pctTo70pctInLoss - * @property {NuplRealizedSupplyPattern} _70pctTo80pctInLoss - * @property {NuplRealizedSupplyPattern} _80pctTo90pctInLoss - * @property {NuplRealizedSupplyPattern} _90pctTo100pctInLoss + * @property {NuplRealizedSupplyUnrealizedPattern} over1000pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _500pctTo1000pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _300pctTo500pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _200pctTo300pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _100pctTo200pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _90pctTo100pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _80pctTo90pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _70pctTo80pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _60pctTo70pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _50pctTo60pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _40pctTo50pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _30pctTo40pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _20pctTo30pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _10pctTo20pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _0pctTo10pctInProfit + * @property {NuplRealizedSupplyUnrealizedPattern} _0pctTo10pctInLoss + * @property {NuplRealizedSupplyUnrealizedPattern} _10pctTo20pctInLoss + * @property {NuplRealizedSupplyUnrealizedPattern} _20pctTo30pctInLoss + * @property {NuplRealizedSupplyUnrealizedPattern} _30pctTo40pctInLoss + * @property {NuplRealizedSupplyUnrealizedPattern} _40pctTo50pctInLoss + * @property {NuplRealizedSupplyUnrealizedPattern} _50pctTo60pctInLoss + * @property {NuplRealizedSupplyUnrealizedPattern} _60pctTo70pctInLoss + * @property {NuplRealizedSupplyUnrealizedPattern} _70pctTo80pctInLoss + * @property {NuplRealizedSupplyUnrealizedPattern} _80pctTo90pctInLoss + * @property {NuplRealizedSupplyUnrealizedPattern} _90pctTo100pctInLoss */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Profitability_Profit - * @property {NuplRealizedSupplyPattern} all - * @property {NuplRealizedSupplyPattern} _10pct - * @property {NuplRealizedSupplyPattern} _20pct - * @property {NuplRealizedSupplyPattern} _30pct - * @property {NuplRealizedSupplyPattern} _40pct - * @property {NuplRealizedSupplyPattern} _50pct - * @property {NuplRealizedSupplyPattern} _60pct - * @property {NuplRealizedSupplyPattern} _70pct - * @property {NuplRealizedSupplyPattern} _80pct - * @property {NuplRealizedSupplyPattern} _90pct - * @property {NuplRealizedSupplyPattern} _100pct - * @property {NuplRealizedSupplyPattern} _200pct - * @property {NuplRealizedSupplyPattern} _300pct - * @property {NuplRealizedSupplyPattern} _500pct + * @property {NuplRealizedSupplyUnrealizedPattern} all + * @property {NuplRealizedSupplyUnrealizedPattern} _10pct + * @property {NuplRealizedSupplyUnrealizedPattern} _20pct + * @property {NuplRealizedSupplyUnrealizedPattern} _30pct + * @property {NuplRealizedSupplyUnrealizedPattern} _40pct + * @property {NuplRealizedSupplyUnrealizedPattern} _50pct + * @property {NuplRealizedSupplyUnrealizedPattern} _60pct + * @property {NuplRealizedSupplyUnrealizedPattern} _70pct + * @property {NuplRealizedSupplyUnrealizedPattern} _80pct + * @property {NuplRealizedSupplyUnrealizedPattern} _90pct + * @property {NuplRealizedSupplyUnrealizedPattern} _100pct + * @property {NuplRealizedSupplyUnrealizedPattern} _200pct + * @property {NuplRealizedSupplyUnrealizedPattern} _300pct + * @property {NuplRealizedSupplyUnrealizedPattern} _500pct */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Profitability_Loss - * @property {NuplRealizedSupplyPattern} all - * @property {NuplRealizedSupplyPattern} _10pct - * @property {NuplRealizedSupplyPattern} _20pct - * @property {NuplRealizedSupplyPattern} _30pct - * @property {NuplRealizedSupplyPattern} _40pct - * @property {NuplRealizedSupplyPattern} _50pct - * @property {NuplRealizedSupplyPattern} _60pct - * @property {NuplRealizedSupplyPattern} _70pct - * @property {NuplRealizedSupplyPattern} _80pct + * @property {NuplRealizedSupplyUnrealizedPattern} all + * @property {NuplRealizedSupplyUnrealizedPattern} _10pct + * @property {NuplRealizedSupplyUnrealizedPattern} _20pct + * @property {NuplRealizedSupplyUnrealizedPattern} _30pct + * @property {NuplRealizedSupplyUnrealizedPattern} _40pct + * @property {NuplRealizedSupplyUnrealizedPattern} _50pct + * @property {NuplRealizedSupplyUnrealizedPattern} _60pct + * @property {NuplRealizedSupplyUnrealizedPattern} _70pct + * @property {NuplRealizedSupplyUnrealizedPattern} _80pct */ /** @@ -6283,55 +8344,752 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1sat - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10sats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100sats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100kSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1mSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10mSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1btc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10btc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100btc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kBtc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kBtc + * @property {SeriesTree_Cohorts_Addr_OverAmount_1sat} _1sat + * @property {SeriesTree_Cohorts_Addr_OverAmount_10sats} _10sats + * @property {SeriesTree_Cohorts_Addr_OverAmount_100sats} _100sats + * @property {SeriesTree_Cohorts_Addr_OverAmount_1kSats} _1kSats + * @property {SeriesTree_Cohorts_Addr_OverAmount_10kSats} _10kSats + * @property {SeriesTree_Cohorts_Addr_OverAmount_100kSats} _100kSats + * @property {SeriesTree_Cohorts_Addr_OverAmount_1mSats} _1mSats + * @property {SeriesTree_Cohorts_Addr_OverAmount_10mSats} _10mSats + * @property {SeriesTree_Cohorts_Addr_OverAmount_1btc} _1btc + * @property {SeriesTree_Cohorts_Addr_OverAmount_10btc} _10btc + * @property {SeriesTree_Cohorts_Addr_OverAmount_100btc} _100btc + * @property {SeriesTree_Cohorts_Addr_OverAmount_1kBtc} _1kBtc + * @property {SeriesTree_Cohorts_Addr_OverAmount_10kBtc} _10kBtc + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_1sat + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_1sat_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_1sat_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_10sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_10sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_10sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_100sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_100sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_100sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_1kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_1kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_1kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_10kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_10kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_10kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_100kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_100kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_100kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_1mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_1mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_1mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_10mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_10mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_10mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_1btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_1btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_1btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_10btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_10btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_10btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_100btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_100btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_100btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_1kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_1kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_1kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_10kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_OverAmount_10kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount_10kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _0sats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1satTo10sats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10satsTo100sats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100satsTo1kSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kSatsTo10kSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kSatsTo100kSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100kSatsTo1mSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1mSatsTo10mSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10mSatsTo1btc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1btcTo10btc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10btcTo100btc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100btcTo1kBtc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kBtcTo10kBtc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kBtcTo100kBtc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} over100kBtc + * @property {SeriesTree_Cohorts_Addr_AmountRange_0sats} _0sats + * @property {SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats} _1satTo10sats + * @property {SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats} _10satsTo100sats + * @property {SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats} _100satsTo1kSats + * @property {SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats} _1kSatsTo10kSats + * @property {SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats} _10kSatsTo100kSats + * @property {SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats} _100kSatsTo1mSats + * @property {SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats} _1mSatsTo10mSats + * @property {SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc} _10mSatsTo1btc + * @property {SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc} _1btcTo10btc + * @property {SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc} _10btcTo100btc + * @property {SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc} _100btcTo1kBtc + * @property {SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc} _1kBtcTo10kBtc + * @property {SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc} _10kBtcTo100kBtc + * @property {SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc} over100kBtc + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_0sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_0sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_0sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10sats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100sats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100kSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1mSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10mSats - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1btc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10btc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100btc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kBtc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kBtc - * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100kBtc + * @property {SeriesTree_Cohorts_Addr_UnderAmount_10sats} _10sats + * @property {SeriesTree_Cohorts_Addr_UnderAmount_100sats} _100sats + * @property {SeriesTree_Cohorts_Addr_UnderAmount_1kSats} _1kSats + * @property {SeriesTree_Cohorts_Addr_UnderAmount_10kSats} _10kSats + * @property {SeriesTree_Cohorts_Addr_UnderAmount_100kSats} _100kSats + * @property {SeriesTree_Cohorts_Addr_UnderAmount_1mSats} _1mSats + * @property {SeriesTree_Cohorts_Addr_UnderAmount_10mSats} _10mSats + * @property {SeriesTree_Cohorts_Addr_UnderAmount_1btc} _1btc + * @property {SeriesTree_Cohorts_Addr_UnderAmount_10btc} _10btc + * @property {SeriesTree_Cohorts_Addr_UnderAmount_100btc} _100btc + * @property {SeriesTree_Cohorts_Addr_UnderAmount_1kBtc} _1kBtc + * @property {SeriesTree_Cohorts_Addr_UnderAmount_10kBtc} _10kBtc + * @property {SeriesTree_Cohorts_Addr_UnderAmount_100kBtc} _100kBtc + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_10sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_10sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_10sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_100sats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_100sats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_100sats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_1kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_1kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_1kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_10kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_10kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_10kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_100kSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_100kSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_100kSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_1mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_1mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_1mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_10mSats + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_10mSats_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_10mSats_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_1btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_1btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_1btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_10btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_10btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_10btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_100btc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_100btc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_100btc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_1kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_1kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_1kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_10kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_10kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_10kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_100kBtc + * @property {DeltaTotalPattern} supply + * @property {SeriesTree_Cohorts_Addr_UnderAmount_100kBtc_Outputs} outputs + * @property {TransferPattern} activity + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {NuplPattern} unrealized + * @property {BaseDeltaPattern} addrCount + */ + +/** + * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount_100kBtc_Outputs + * @property {BaseDeltaPattern} unspentCount + * @property {AverageBlockCumulativeSumPattern2} spentCount + * @property {SeriesPattern1} spendingRate */ /** @@ -8544,7 +11302,11 @@ class BrkClient extends BrkClientBase { inProfit: createBtcCentsSatsToUsdPattern2(this, 'supply_in_profit'), inLoss: createBtcCentsSatsToUsdPattern2(this, 'supply_in_loss'), }, - outputs: createUnspentPattern(this, 'utxo_count'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'spending_rate'), + }, activity: { transferVolume: createAverageBlockCumulativeInSumPattern(this, 'transfer_volume'), coindaysDestroyed: createAverageBlockCumulativeSumPattern(this, 'coindays_destroyed'), @@ -8693,7 +11455,11 @@ class BrkClient extends BrkClientBase { }, sth: { supply: createDeltaHalfInToTotalPattern2(this, 'sth_supply'), - outputs: createUnspentPattern(this, 'sth_utxo_count'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'sth_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'sth_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'sth_spending_rate'), + }, activity: { transferVolume: createAverageBlockCumulativeInSumPattern(this, 'sth_transfer_volume'), coindaysDestroyed: createAverageBlockCumulativeSumPattern(this, 'sth_coindays_destroyed'), @@ -8827,7 +11593,11 @@ class BrkClient extends BrkClientBase { }, lth: { supply: createDeltaHalfInToTotalPattern2(this, 'lth_supply'), - outputs: createUnspentPattern(this, 'lth_utxo_count'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'lth_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'lth_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'lth_spending_rate'), + }, activity: { transferVolume: createAverageBlockCumulativeInSumPattern(this, 'lth_transfer_volume'), coindaysDestroyed: createAverageBlockCumulativeSumPattern(this, 'lth_coindays_destroyed'), @@ -8955,209 +11725,1529 @@ class BrkClient extends BrkClientBase { }, }, ageRange: { - under1h: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1h_old'), - _1hTo1d: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1h_to_1d_old'), - _1dTo1w: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1d_to_1w_old'), - _1wTo1m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1w_to_1m_old'), - _1mTo2m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1m_to_2m_old'), - _2mTo3m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_2m_to_3m_old'), - _3mTo4m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_3m_to_4m_old'), - _4mTo5m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_4m_to_5m_old'), - _5mTo6m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_5m_to_6m_old'), - _6mTo1y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_6m_to_1y_old'), - _1yTo2y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1y_to_2y_old'), - _2yTo3y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_2y_to_3y_old'), - _3yTo4y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_3y_to_4y_old'), - _4yTo5y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_4y_to_5y_old'), - _5yTo6y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_5y_to_6y_old'), - _6yTo7y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_6y_to_7y_old'), - _7yTo8y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_7y_to_8y_old'), - _8yTo10y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_8y_to_10y_old'), - _10yTo12y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_10y_to_12y_old'), - _12yTo15y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_12y_to_15y_old'), - over15y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_15y_old'), + under1h: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_1h_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_1h_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_1h_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_1h_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_1h_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_1h_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_1h_old'), + }, + _1hTo1d: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_1h_to_1d_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_1h_to_1d_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_1h_to_1d_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_1h_to_1d_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_1h_to_1d_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_1h_to_1d_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_1h_to_1d_old'), + }, + _1dTo1w: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_1d_to_1w_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_1d_to_1w_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_1d_to_1w_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_1d_to_1w_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_1d_to_1w_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_1d_to_1w_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_1d_to_1w_old'), + }, + _1wTo1m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_1w_to_1m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_1w_to_1m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_1w_to_1m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_1w_to_1m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_1w_to_1m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_1w_to_1m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_1w_to_1m_old'), + }, + _1mTo2m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_1m_to_2m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_1m_to_2m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_1m_to_2m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_1m_to_2m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_1m_to_2m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_1m_to_2m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_1m_to_2m_old'), + }, + _2mTo3m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_2m_to_3m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_2m_to_3m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_2m_to_3m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_2m_to_3m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_2m_to_3m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_2m_to_3m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_2m_to_3m_old'), + }, + _3mTo4m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_3m_to_4m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_3m_to_4m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_3m_to_4m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_3m_to_4m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_3m_to_4m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_3m_to_4m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_3m_to_4m_old'), + }, + _4mTo5m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_4m_to_5m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_4m_to_5m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_4m_to_5m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_4m_to_5m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_4m_to_5m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_4m_to_5m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_4m_to_5m_old'), + }, + _5mTo6m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_5m_to_6m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_5m_to_6m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_5m_to_6m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_5m_to_6m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_5m_to_6m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_5m_to_6m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_5m_to_6m_old'), + }, + _6mTo1y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_6m_to_1y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_6m_to_1y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_6m_to_1y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_6m_to_1y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_6m_to_1y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_6m_to_1y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_6m_to_1y_old'), + }, + _1yTo2y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_1y_to_2y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_1y_to_2y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_1y_to_2y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_1y_to_2y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_1y_to_2y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_1y_to_2y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_1y_to_2y_old'), + }, + _2yTo3y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_2y_to_3y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_2y_to_3y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_2y_to_3y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_2y_to_3y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_2y_to_3y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_2y_to_3y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_2y_to_3y_old'), + }, + _3yTo4y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_3y_to_4y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_3y_to_4y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_3y_to_4y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_3y_to_4y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_3y_to_4y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_3y_to_4y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_3y_to_4y_old'), + }, + _4yTo5y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_4y_to_5y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_4y_to_5y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_4y_to_5y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_4y_to_5y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_4y_to_5y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_4y_to_5y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_4y_to_5y_old'), + }, + _5yTo6y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_5y_to_6y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_5y_to_6y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_5y_to_6y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_5y_to_6y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_5y_to_6y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_5y_to_6y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_5y_to_6y_old'), + }, + _6yTo7y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_6y_to_7y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_6y_to_7y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_6y_to_7y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_6y_to_7y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_6y_to_7y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_6y_to_7y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_6y_to_7y_old'), + }, + _7yTo8y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_7y_to_8y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_7y_to_8y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_7y_to_8y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_7y_to_8y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_7y_to_8y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_7y_to_8y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_7y_to_8y_old'), + }, + _8yTo10y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_8y_to_10y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_8y_to_10y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_8y_to_10y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_8y_to_10y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_8y_to_10y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_8y_to_10y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_8y_to_10y_old'), + }, + _10yTo12y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_10y_to_12y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_10y_to_12y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_10y_to_12y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_10y_to_12y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_10y_to_12y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_10y_to_12y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_10y_to_12y_old'), + }, + _12yTo15y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_12y_to_15y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_12y_to_15y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_12y_to_15y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_12y_to_15y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_12y_to_15y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_12y_to_15y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_12y_to_15y_old'), + }, + over15y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_15y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_15y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_15y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_15y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_15y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_15y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_15y_old'), + }, }, underAge: { - _1w: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1w_old'), - _1m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1m_old'), - _2m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_2m_old'), - _3m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_3m_old'), - _4m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_4m_old'), - _5m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_5m_old'), - _6m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_6m_old'), - _1y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1y_old'), - _2y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_2y_old'), - _3y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_3y_old'), - _4y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_4y_old'), - _5y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_5y_old'), - _6y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_6y_old'), - _7y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_7y_old'), - _8y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_8y_old'), - _10y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_10y_old'), - _12y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_12y_old'), - _15y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_15y_old'), + _1w: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_1w_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_1w_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_1w_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_1w_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_1w_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_1w_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_1w_old'), + }, + _1m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_1m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_1m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_1m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_1m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_1m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_1m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_1m_old'), + }, + _2m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_2m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_2m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_2m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_2m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_2m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_2m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_2m_old'), + }, + _3m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_3m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_3m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_3m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_3m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_3m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_3m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_3m_old'), + }, + _4m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_4m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_4m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_4m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_4m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_4m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_4m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_4m_old'), + }, + _5m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_5m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_5m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_5m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_5m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_5m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_5m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_5m_old'), + }, + _6m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_6m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_6m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_6m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_6m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_6m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_6m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_6m_old'), + }, + _1y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_1y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_1y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_1y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_1y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_1y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_1y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_1y_old'), + }, + _2y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_2y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_2y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_2y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_2y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_2y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_2y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_2y_old'), + }, + _3y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_3y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_3y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_3y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_3y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_3y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_3y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_3y_old'), + }, + _4y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_4y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_4y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_4y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_4y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_4y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_4y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_4y_old'), + }, + _5y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_5y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_5y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_5y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_5y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_5y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_5y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_5y_old'), + }, + _6y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_6y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_6y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_6y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_6y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_6y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_6y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_6y_old'), + }, + _7y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_7y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_7y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_7y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_7y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_7y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_7y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_7y_old'), + }, + _8y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_8y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_8y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_8y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_8y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_8y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_8y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_8y_old'), + }, + _10y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_10y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_10y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_10y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_10y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_10y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_10y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_10y_old'), + }, + _12y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_12y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_12y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_12y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_12y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_12y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_12y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_12y_old'), + }, + _15y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_15y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_15y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_15y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_15y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_under_15y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_under_15y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_15y_old'), + }, }, overAge: { - _1d: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1d_old'), - _1w: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1w_old'), - _1m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1m_old'), - _2m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_2m_old'), - _3m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_3m_old'), - _4m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_4m_old'), - _5m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_5m_old'), - _6m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_6m_old'), - _1y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1y_old'), - _2y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_2y_old'), - _3y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_3y_old'), - _4y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_4y_old'), - _5y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_5y_old'), - _6y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_6y_old'), - _7y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_7y_old'), - _8y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_8y_old'), - _10y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_10y_old'), - _12y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_12y_old'), + _1d: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_1d_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_1d_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_1d_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_1d_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_1d_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_1d_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_1d_old'), + }, + _1w: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_1w_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_1w_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_1w_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_1w_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_1w_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_1w_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_1w_old'), + }, + _1m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_1m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_1m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_1m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_1m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_1m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_1m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_1m_old'), + }, + _2m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_2m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_2m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_2m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_2m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_2m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_2m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_2m_old'), + }, + _3m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_3m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_3m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_3m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_3m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_3m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_3m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_3m_old'), + }, + _4m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_4m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_4m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_4m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_4m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_4m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_4m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_4m_old'), + }, + _5m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_5m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_5m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_5m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_5m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_5m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_5m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_5m_old'), + }, + _6m: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_6m_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_6m_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_6m_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_6m_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_6m_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_6m_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_6m_old'), + }, + _1y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_1y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_1y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_1y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_1y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_1y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_1y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_1y_old'), + }, + _2y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_2y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_2y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_2y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_2y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_2y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_2y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_2y_old'), + }, + _3y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_3y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_3y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_3y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_3y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_3y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_3y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_3y_old'), + }, + _4y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_4y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_4y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_4y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_4y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_4y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_4y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_4y_old'), + }, + _5y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_5y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_5y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_5y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_5y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_5y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_5y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_5y_old'), + }, + _6y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_6y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_6y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_6y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_6y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_6y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_6y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_6y_old'), + }, + _7y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_7y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_7y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_7y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_7y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_7y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_7y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_7y_old'), + }, + _8y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_8y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_8y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_8y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_8y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_8y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_8y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_8y_old'), + }, + _10y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_10y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_10y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_10y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_10y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_10y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_10y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_10y_old'), + }, + _12y: { + supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_12y_old_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_12y_old_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_12y_old_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_12y_old_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'utxos_over_12y_old'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'utxos_over_12y_old'), + unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_12y_old'), + }, }, epoch: { - _0: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'epoch_0'), - _1: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'epoch_1'), - _2: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'epoch_2'), - _3: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'epoch_3'), - _4: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'epoch_4'), + _0: { + supply: createDeltaHalfInToTotalPattern(this, 'epoch_0_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'epoch_0_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'epoch_0_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'epoch_0_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'epoch_0'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'epoch_0'), + unrealized: createLossNetNuplProfitPattern(this, 'epoch_0'), + }, + _1: { + supply: createDeltaHalfInToTotalPattern(this, 'epoch_1_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'epoch_1_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'epoch_1_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'epoch_1_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'epoch_1'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'epoch_1'), + unrealized: createLossNetNuplProfitPattern(this, 'epoch_1'), + }, + _2: { + supply: createDeltaHalfInToTotalPattern(this, 'epoch_2_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'epoch_2_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'epoch_2_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'epoch_2_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'epoch_2'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'epoch_2'), + unrealized: createLossNetNuplProfitPattern(this, 'epoch_2'), + }, + _3: { + supply: createDeltaHalfInToTotalPattern(this, 'epoch_3_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'epoch_3_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'epoch_3_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'epoch_3_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'epoch_3'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'epoch_3'), + unrealized: createLossNetNuplProfitPattern(this, 'epoch_3'), + }, + _4: { + supply: createDeltaHalfInToTotalPattern(this, 'epoch_4_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'epoch_4_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'epoch_4_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'epoch_4_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'epoch_4'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'epoch_4'), + unrealized: createLossNetNuplProfitPattern(this, 'epoch_4'), + }, }, class: { - _2009: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2009'), - _2010: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2010'), - _2011: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2011'), - _2012: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2012'), - _2013: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2013'), - _2014: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2014'), - _2015: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2015'), - _2016: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2016'), - _2017: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2017'), - _2018: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2018'), - _2019: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2019'), - _2020: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2020'), - _2021: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2021'), - _2022: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2022'), - _2023: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2023'), - _2024: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2024'), - _2025: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2025'), - _2026: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2026'), + _2009: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2009_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2009_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2009_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2009_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2009'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2009'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2009'), + }, + _2010: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2010_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2010_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2010_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2010_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2010'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2010'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2010'), + }, + _2011: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2011_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2011_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2011_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2011_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2011'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2011'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2011'), + }, + _2012: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2012_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2012_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2012_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2012_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2012'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2012'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2012'), + }, + _2013: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2013_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2013_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2013_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2013_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2013'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2013'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2013'), + }, + _2014: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2014_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2014_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2014_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2014_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2014'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2014'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2014'), + }, + _2015: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2015_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2015_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2015_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2015_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2015'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2015'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2015'), + }, + _2016: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2016_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2016_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2016_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2016_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2016'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2016'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2016'), + }, + _2017: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2017_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2017_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2017_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2017_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2017'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2017'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2017'), + }, + _2018: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2018_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2018_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2018_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2018_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2018'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2018'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2018'), + }, + _2019: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2019_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2019_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2019_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2019_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2019'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2019'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2019'), + }, + _2020: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2020_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2020_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2020_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2020_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2020'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2020'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2020'), + }, + _2021: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2021_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2021_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2021_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2021_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2021'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2021'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2021'), + }, + _2022: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2022_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2022_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2022_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2022_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2022'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2022'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2022'), + }, + _2023: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2023_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2023_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2023_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2023_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2023'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2023'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2023'), + }, + _2024: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2024_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2024_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2024_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2024_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2024'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2024'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2024'), + }, + _2025: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2025_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2025_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2025_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2025_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2025'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2025'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2025'), + }, + _2026: { + supply: createDeltaHalfInToTotalPattern(this, 'class_2026_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'class_2026_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'class_2026_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'class_2026_spending_rate'), + }, + activity: createCoindaysTransferPattern(this, 'class_2026'), + realized: createCapLossMvrvNetPriceProfitSoprPattern(this, 'class_2026'), + unrealized: createLossNetNuplProfitPattern(this, 'class_2026'), + }, }, overAmount: { - _1sat: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_1sat'), - _10sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_10sats'), - _100sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_100sats'), - _1kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_1k_sats'), - _10kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_10k_sats'), - _100kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_100k_sats'), - _1mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_1m_sats'), - _10mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_10m_sats'), - _1btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_1btc'), - _10btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_10btc'), - _100btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_100btc'), - _1kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_1k_btc'), - _10kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_10k_btc'), + _1sat: { + supply: createDeltaTotalPattern(this, 'utxos_over_1sat_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_1sat_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_1sat_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_1sat_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_1sat_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_1sat'), + unrealized: createNuplPattern(this, 'utxos_over_1sat_nupl'), + }, + _10sats: { + supply: createDeltaTotalPattern(this, 'utxos_over_10sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_10sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_10sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_10sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_10sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_10sats'), + unrealized: createNuplPattern(this, 'utxos_over_10sats_nupl'), + }, + _100sats: { + supply: createDeltaTotalPattern(this, 'utxos_over_100sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_100sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_100sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_100sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_100sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_100sats'), + unrealized: createNuplPattern(this, 'utxos_over_100sats_nupl'), + }, + _1kSats: { + supply: createDeltaTotalPattern(this, 'utxos_over_1k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_1k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_1k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_1k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_1k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_1k_sats'), + unrealized: createNuplPattern(this, 'utxos_over_1k_sats_nupl'), + }, + _10kSats: { + supply: createDeltaTotalPattern(this, 'utxos_over_10k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_10k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_10k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_10k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_10k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_10k_sats'), + unrealized: createNuplPattern(this, 'utxos_over_10k_sats_nupl'), + }, + _100kSats: { + supply: createDeltaTotalPattern(this, 'utxos_over_100k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_100k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_100k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_100k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_100k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_100k_sats'), + unrealized: createNuplPattern(this, 'utxos_over_100k_sats_nupl'), + }, + _1mSats: { + supply: createDeltaTotalPattern(this, 'utxos_over_1m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_1m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_1m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_1m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_1m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_1m_sats'), + unrealized: createNuplPattern(this, 'utxos_over_1m_sats_nupl'), + }, + _10mSats: { + supply: createDeltaTotalPattern(this, 'utxos_over_10m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_10m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_10m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_10m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_10m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_10m_sats'), + unrealized: createNuplPattern(this, 'utxos_over_10m_sats_nupl'), + }, + _1btc: { + supply: createDeltaTotalPattern(this, 'utxos_over_1btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_1btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_1btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_1btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_1btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_1btc'), + unrealized: createNuplPattern(this, 'utxos_over_1btc_nupl'), + }, + _10btc: { + supply: createDeltaTotalPattern(this, 'utxos_over_10btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_10btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_10btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_10btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_10btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_10btc'), + unrealized: createNuplPattern(this, 'utxos_over_10btc_nupl'), + }, + _100btc: { + supply: createDeltaTotalPattern(this, 'utxos_over_100btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_100btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_100btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_100btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_100btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_100btc'), + unrealized: createNuplPattern(this, 'utxos_over_100btc_nupl'), + }, + _1kBtc: { + supply: createDeltaTotalPattern(this, 'utxos_over_1k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_1k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_1k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_1k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_1k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_1k_btc'), + unrealized: createNuplPattern(this, 'utxos_over_1k_btc_nupl'), + }, + _10kBtc: { + supply: createDeltaTotalPattern(this, 'utxos_over_10k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_10k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_10k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_10k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_10k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_10k_btc'), + unrealized: createNuplPattern(this, 'utxos_over_10k_btc_nupl'), + }, }, amountRange: { - _0sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_0sats'), - _1satTo10sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_1sat_to_10sats'), - _10satsTo100sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_10sats_to_100sats'), - _100satsTo1kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_100sats_to_1k_sats'), - _1kSatsTo10kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_1k_sats_to_10k_sats'), - _10kSatsTo100kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_10k_sats_to_100k_sats'), - _100kSatsTo1mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_100k_sats_to_1m_sats'), - _1mSatsTo10mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_1m_sats_to_10m_sats'), - _10mSatsTo1btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_10m_sats_to_1btc'), - _1btcTo10btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_1btc_to_10btc'), - _10btcTo100btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_10btc_to_100btc'), - _100btcTo1kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_100btc_to_1k_btc'), - _1kBtcTo10kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_1k_btc_to_10k_btc'), - _10kBtcTo100kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_10k_btc_to_100k_btc'), - over100kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_100k_btc'), + _0sats: { + supply: createDeltaTotalPattern(this, 'utxos_0sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_0sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_0sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_0sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_0sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_0sats'), + unrealized: createNuplPattern(this, 'utxos_0sats_nupl'), + }, + _1satTo10sats: { + supply: createDeltaTotalPattern(this, 'utxos_1sat_to_10sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_1sat_to_10sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_1sat_to_10sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_1sat_to_10sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_1sat_to_10sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_1sat_to_10sats'), + unrealized: createNuplPattern(this, 'utxos_1sat_to_10sats_nupl'), + }, + _10satsTo100sats: { + supply: createDeltaTotalPattern(this, 'utxos_10sats_to_100sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_10sats_to_100sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_10sats_to_100sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_10sats_to_100sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_10sats_to_100sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_10sats_to_100sats'), + unrealized: createNuplPattern(this, 'utxos_10sats_to_100sats_nupl'), + }, + _100satsTo1kSats: { + supply: createDeltaTotalPattern(this, 'utxos_100sats_to_1k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_100sats_to_1k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_100sats_to_1k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_100sats_to_1k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_100sats_to_1k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_100sats_to_1k_sats'), + unrealized: createNuplPattern(this, 'utxos_100sats_to_1k_sats_nupl'), + }, + _1kSatsTo10kSats: { + supply: createDeltaTotalPattern(this, 'utxos_1k_sats_to_10k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_1k_sats_to_10k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_1k_sats_to_10k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_1k_sats_to_10k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_1k_sats_to_10k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_1k_sats_to_10k_sats'), + unrealized: createNuplPattern(this, 'utxos_1k_sats_to_10k_sats_nupl'), + }, + _10kSatsTo100kSats: { + supply: createDeltaTotalPattern(this, 'utxos_10k_sats_to_100k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_10k_sats_to_100k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_10k_sats_to_100k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_10k_sats_to_100k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_10k_sats_to_100k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_10k_sats_to_100k_sats'), + unrealized: createNuplPattern(this, 'utxos_10k_sats_to_100k_sats_nupl'), + }, + _100kSatsTo1mSats: { + supply: createDeltaTotalPattern(this, 'utxos_100k_sats_to_1m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_100k_sats_to_1m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_100k_sats_to_1m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_100k_sats_to_1m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_100k_sats_to_1m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_100k_sats_to_1m_sats'), + unrealized: createNuplPattern(this, 'utxos_100k_sats_to_1m_sats_nupl'), + }, + _1mSatsTo10mSats: { + supply: createDeltaTotalPattern(this, 'utxos_1m_sats_to_10m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_1m_sats_to_10m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_1m_sats_to_10m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_1m_sats_to_10m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_1m_sats_to_10m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_1m_sats_to_10m_sats'), + unrealized: createNuplPattern(this, 'utxos_1m_sats_to_10m_sats_nupl'), + }, + _10mSatsTo1btc: { + supply: createDeltaTotalPattern(this, 'utxos_10m_sats_to_1btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_10m_sats_to_1btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_10m_sats_to_1btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_10m_sats_to_1btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_10m_sats_to_1btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_10m_sats_to_1btc'), + unrealized: createNuplPattern(this, 'utxos_10m_sats_to_1btc_nupl'), + }, + _1btcTo10btc: { + supply: createDeltaTotalPattern(this, 'utxos_1btc_to_10btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_1btc_to_10btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_1btc_to_10btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_1btc_to_10btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_1btc_to_10btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_1btc_to_10btc'), + unrealized: createNuplPattern(this, 'utxos_1btc_to_10btc_nupl'), + }, + _10btcTo100btc: { + supply: createDeltaTotalPattern(this, 'utxos_10btc_to_100btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_10btc_to_100btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_10btc_to_100btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_10btc_to_100btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_10btc_to_100btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_10btc_to_100btc'), + unrealized: createNuplPattern(this, 'utxos_10btc_to_100btc_nupl'), + }, + _100btcTo1kBtc: { + supply: createDeltaTotalPattern(this, 'utxos_100btc_to_1k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_100btc_to_1k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_100btc_to_1k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_100btc_to_1k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_100btc_to_1k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_100btc_to_1k_btc'), + unrealized: createNuplPattern(this, 'utxos_100btc_to_1k_btc_nupl'), + }, + _1kBtcTo10kBtc: { + supply: createDeltaTotalPattern(this, 'utxos_1k_btc_to_10k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_1k_btc_to_10k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_1k_btc_to_10k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_1k_btc_to_10k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_1k_btc_to_10k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_1k_btc_to_10k_btc'), + unrealized: createNuplPattern(this, 'utxos_1k_btc_to_10k_btc_nupl'), + }, + _10kBtcTo100kBtc: { + supply: createDeltaTotalPattern(this, 'utxos_10k_btc_to_100k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_10k_btc_to_100k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_10k_btc_to_100k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_10k_btc_to_100k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_10k_btc_to_100k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_10k_btc_to_100k_btc'), + unrealized: createNuplPattern(this, 'utxos_10k_btc_to_100k_btc_nupl'), + }, + over100kBtc: { + supply: createDeltaTotalPattern(this, 'utxos_over_100k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_over_100k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_over_100k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_over_100k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_over_100k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_over_100k_btc'), + unrealized: createNuplPattern(this, 'utxos_over_100k_btc_nupl'), + }, }, underAmount: { - _10sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_10sats'), - _100sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_100sats'), - _1kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_1k_sats'), - _10kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_10k_sats'), - _100kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_100k_sats'), - _1mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_1m_sats'), - _10mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_10m_sats'), - _1btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_1btc'), - _10btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_10btc'), - _100btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_100btc'), - _1kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_1k_btc'), - _10kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_10k_btc'), - _100kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_100k_btc'), + _10sats: { + supply: createDeltaTotalPattern(this, 'utxos_under_10sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_10sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_10sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_10sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_10sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_10sats'), + unrealized: createNuplPattern(this, 'utxos_under_10sats_nupl'), + }, + _100sats: { + supply: createDeltaTotalPattern(this, 'utxos_under_100sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_100sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_100sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_100sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_100sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_100sats'), + unrealized: createNuplPattern(this, 'utxos_under_100sats_nupl'), + }, + _1kSats: { + supply: createDeltaTotalPattern(this, 'utxos_under_1k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_1k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_1k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_1k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_1k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_1k_sats'), + unrealized: createNuplPattern(this, 'utxos_under_1k_sats_nupl'), + }, + _10kSats: { + supply: createDeltaTotalPattern(this, 'utxos_under_10k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_10k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_10k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_10k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_10k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_10k_sats'), + unrealized: createNuplPattern(this, 'utxos_under_10k_sats_nupl'), + }, + _100kSats: { + supply: createDeltaTotalPattern(this, 'utxos_under_100k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_100k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_100k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_100k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_100k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_100k_sats'), + unrealized: createNuplPattern(this, 'utxos_under_100k_sats_nupl'), + }, + _1mSats: { + supply: createDeltaTotalPattern(this, 'utxos_under_1m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_1m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_1m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_1m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_1m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_1m_sats'), + unrealized: createNuplPattern(this, 'utxos_under_1m_sats_nupl'), + }, + _10mSats: { + supply: createDeltaTotalPattern(this, 'utxos_under_10m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_10m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_10m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_10m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_10m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_10m_sats'), + unrealized: createNuplPattern(this, 'utxos_under_10m_sats_nupl'), + }, + _1btc: { + supply: createDeltaTotalPattern(this, 'utxos_under_1btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_1btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_1btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_1btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_1btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_1btc'), + unrealized: createNuplPattern(this, 'utxos_under_1btc_nupl'), + }, + _10btc: { + supply: createDeltaTotalPattern(this, 'utxos_under_10btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_10btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_10btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_10btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_10btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_10btc'), + unrealized: createNuplPattern(this, 'utxos_under_10btc_nupl'), + }, + _100btc: { + supply: createDeltaTotalPattern(this, 'utxos_under_100btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_100btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_100btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_100btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_100btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_100btc'), + unrealized: createNuplPattern(this, 'utxos_under_100btc_nupl'), + }, + _1kBtc: { + supply: createDeltaTotalPattern(this, 'utxos_under_1k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_1k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_1k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_1k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_1k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_1k_btc'), + unrealized: createNuplPattern(this, 'utxos_under_1k_btc_nupl'), + }, + _10kBtc: { + supply: createDeltaTotalPattern(this, 'utxos_under_10k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_10k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_10k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_10k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_10k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_10k_btc'), + unrealized: createNuplPattern(this, 'utxos_under_10k_btc_nupl'), + }, + _100kBtc: { + supply: createDeltaTotalPattern(this, 'utxos_under_100k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'utxos_under_100k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'utxos_under_100k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'utxos_under_100k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'utxos_under_100k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'utxos_under_100k_btc'), + unrealized: createNuplPattern(this, 'utxos_under_100k_btc_nupl'), + }, }, type: { - p2pk65: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2pk65'), - p2pk33: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2pk33'), - p2pkh: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2pkh'), - p2ms: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2ms'), - p2sh: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2sh'), - p2wpkh: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2wpkh'), - p2wsh: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2wsh'), - p2tr: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2tr'), - p2a: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2a'), - unknown: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'unknown_outputs'), - empty: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'empty_outputs'), + p2pk65: { + supply: createDeltaHalfInTotalPattern2(this, 'p2pk65_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'p2pk65_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'p2pk65_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'p2pk65_spending_rate'), + }, + activity: createTransferPattern(this, 'p2pk65_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'p2pk65'), + unrealized: createLossNuplProfitPattern(this, 'p2pk65'), + }, + p2pk33: { + supply: createDeltaHalfInTotalPattern2(this, 'p2pk33_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'p2pk33_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'p2pk33_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'p2pk33_spending_rate'), + }, + activity: createTransferPattern(this, 'p2pk33_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'p2pk33'), + unrealized: createLossNuplProfitPattern(this, 'p2pk33'), + }, + p2pkh: { + supply: createDeltaHalfInTotalPattern2(this, 'p2pkh_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'p2pkh_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'p2pkh_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'p2pkh_spending_rate'), + }, + activity: createTransferPattern(this, 'p2pkh_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'p2pkh'), + unrealized: createLossNuplProfitPattern(this, 'p2pkh'), + }, + p2ms: { + supply: createDeltaHalfInTotalPattern2(this, 'p2ms_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'p2ms_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'p2ms_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'p2ms_spending_rate'), + }, + activity: createTransferPattern(this, 'p2ms_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'p2ms'), + unrealized: createLossNuplProfitPattern(this, 'p2ms'), + }, + p2sh: { + supply: createDeltaHalfInTotalPattern2(this, 'p2sh_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'p2sh_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'p2sh_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'p2sh_spending_rate'), + }, + activity: createTransferPattern(this, 'p2sh_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'p2sh'), + unrealized: createLossNuplProfitPattern(this, 'p2sh'), + }, + p2wpkh: { + supply: createDeltaHalfInTotalPattern2(this, 'p2wpkh_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'p2wpkh_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'p2wpkh_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'p2wpkh_spending_rate'), + }, + activity: createTransferPattern(this, 'p2wpkh_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'p2wpkh'), + unrealized: createLossNuplProfitPattern(this, 'p2wpkh'), + }, + p2wsh: { + supply: createDeltaHalfInTotalPattern2(this, 'p2wsh_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'p2wsh_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'p2wsh_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'p2wsh_spending_rate'), + }, + activity: createTransferPattern(this, 'p2wsh_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'p2wsh'), + unrealized: createLossNuplProfitPattern(this, 'p2wsh'), + }, + p2tr: { + supply: createDeltaHalfInTotalPattern2(this, 'p2tr_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'p2tr_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'p2tr_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'p2tr_spending_rate'), + }, + activity: createTransferPattern(this, 'p2tr_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'p2tr'), + unrealized: createLossNuplProfitPattern(this, 'p2tr'), + }, + p2a: { + supply: createDeltaHalfInTotalPattern2(this, 'p2a_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'p2a_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'p2a_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'p2a_spending_rate'), + }, + activity: createTransferPattern(this, 'p2a_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'p2a'), + unrealized: createLossNuplProfitPattern(this, 'p2a'), + }, + unknown: { + supply: createDeltaHalfInTotalPattern2(this, 'unknown_outputs_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'unknown_outputs_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'unknown_outputs_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'unknown_outputs_spending_rate'), + }, + activity: createTransferPattern(this, 'unknown_outputs_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'unknown_outputs'), + unrealized: createLossNuplProfitPattern(this, 'unknown_outputs'), + }, + empty: { + supply: createDeltaHalfInTotalPattern2(this, 'empty_outputs_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'empty_outputs_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'empty_outputs_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'empty_outputs_spending_rate'), + }, + activity: createTransferPattern(this, 'empty_outputs_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'empty_outputs'), + unrealized: createLossNuplProfitPattern(this, 'empty_outputs'), + }, }, profitability: { range: { - over1000pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_over_1000pct_in_profit'), - _500pctTo1000pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_500pct_to_1000pct_in_profit'), - _300pctTo500pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_300pct_to_500pct_in_profit'), - _200pctTo300pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_200pct_to_300pct_in_profit'), - _100pctTo200pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_100pct_to_200pct_in_profit'), - _90pctTo100pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_90pct_to_100pct_in_profit'), - _80pctTo90pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_80pct_to_90pct_in_profit'), - _70pctTo80pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_70pct_to_80pct_in_profit'), - _60pctTo70pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_60pct_to_70pct_in_profit'), - _50pctTo60pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_50pct_to_60pct_in_profit'), - _40pctTo50pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_40pct_to_50pct_in_profit'), - _30pctTo40pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_30pct_to_40pct_in_profit'), - _20pctTo30pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_20pct_to_30pct_in_profit'), - _10pctTo20pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_10pct_to_20pct_in_profit'), - _0pctTo10pctInProfit: createNuplRealizedSupplyPattern(this, 'utxos_0pct_to_10pct_in_profit'), - _0pctTo10pctInLoss: createNuplRealizedSupplyPattern(this, 'utxos_0pct_to_10pct_in_loss'), - _10pctTo20pctInLoss: createNuplRealizedSupplyPattern(this, 'utxos_10pct_to_20pct_in_loss'), - _20pctTo30pctInLoss: createNuplRealizedSupplyPattern(this, 'utxos_20pct_to_30pct_in_loss'), - _30pctTo40pctInLoss: createNuplRealizedSupplyPattern(this, 'utxos_30pct_to_40pct_in_loss'), - _40pctTo50pctInLoss: createNuplRealizedSupplyPattern(this, 'utxos_40pct_to_50pct_in_loss'), - _50pctTo60pctInLoss: createNuplRealizedSupplyPattern(this, 'utxos_50pct_to_60pct_in_loss'), - _60pctTo70pctInLoss: createNuplRealizedSupplyPattern(this, 'utxos_60pct_to_70pct_in_loss'), - _70pctTo80pctInLoss: createNuplRealizedSupplyPattern(this, 'utxos_70pct_to_80pct_in_loss'), - _80pctTo90pctInLoss: createNuplRealizedSupplyPattern(this, 'utxos_80pct_to_90pct_in_loss'), - _90pctTo100pctInLoss: createNuplRealizedSupplyPattern(this, 'utxos_90pct_to_100pct_in_loss'), + over1000pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_1000pct_in_profit'), + _500pctTo1000pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_500pct_to_1000pct_in_profit'), + _300pctTo500pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_300pct_to_500pct_in_profit'), + _200pctTo300pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_200pct_to_300pct_in_profit'), + _100pctTo200pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_100pct_to_200pct_in_profit'), + _90pctTo100pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_90pct_to_100pct_in_profit'), + _80pctTo90pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_80pct_to_90pct_in_profit'), + _70pctTo80pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_70pct_to_80pct_in_profit'), + _60pctTo70pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_60pct_to_70pct_in_profit'), + _50pctTo60pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_50pct_to_60pct_in_profit'), + _40pctTo50pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_40pct_to_50pct_in_profit'), + _30pctTo40pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_30pct_to_40pct_in_profit'), + _20pctTo30pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_20pct_to_30pct_in_profit'), + _10pctTo20pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_10pct_to_20pct_in_profit'), + _0pctTo10pctInProfit: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_0pct_to_10pct_in_profit'), + _0pctTo10pctInLoss: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_0pct_to_10pct_in_loss'), + _10pctTo20pctInLoss: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_10pct_to_20pct_in_loss'), + _20pctTo30pctInLoss: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_20pct_to_30pct_in_loss'), + _30pctTo40pctInLoss: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_30pct_to_40pct_in_loss'), + _40pctTo50pctInLoss: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_40pct_to_50pct_in_loss'), + _50pctTo60pctInLoss: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_50pct_to_60pct_in_loss'), + _60pctTo70pctInLoss: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_60pct_to_70pct_in_loss'), + _70pctTo80pctInLoss: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_70pct_to_80pct_in_loss'), + _80pctTo90pctInLoss: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_80pct_to_90pct_in_loss'), + _90pctTo100pctInLoss: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_90pct_to_100pct_in_loss'), }, profit: { - all: createNuplRealizedSupplyPattern(this, 'utxos_in_profit'), - _10pct: createNuplRealizedSupplyPattern(this, 'utxos_over_10pct_in_profit'), - _20pct: createNuplRealizedSupplyPattern(this, 'utxos_over_20pct_in_profit'), - _30pct: createNuplRealizedSupplyPattern(this, 'utxos_over_30pct_in_profit'), - _40pct: createNuplRealizedSupplyPattern(this, 'utxos_over_40pct_in_profit'), - _50pct: createNuplRealizedSupplyPattern(this, 'utxos_over_50pct_in_profit'), - _60pct: createNuplRealizedSupplyPattern(this, 'utxos_over_60pct_in_profit'), - _70pct: createNuplRealizedSupplyPattern(this, 'utxos_over_70pct_in_profit'), - _80pct: createNuplRealizedSupplyPattern(this, 'utxos_over_80pct_in_profit'), - _90pct: createNuplRealizedSupplyPattern(this, 'utxos_over_90pct_in_profit'), - _100pct: createNuplRealizedSupplyPattern(this, 'utxos_over_100pct_in_profit'), - _200pct: createNuplRealizedSupplyPattern(this, 'utxos_over_200pct_in_profit'), - _300pct: createNuplRealizedSupplyPattern(this, 'utxos_over_300pct_in_profit'), - _500pct: createNuplRealizedSupplyPattern(this, 'utxos_over_500pct_in_profit'), + all: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_in_profit'), + _10pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_10pct_in_profit'), + _20pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_20pct_in_profit'), + _30pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_30pct_in_profit'), + _40pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_40pct_in_profit'), + _50pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_50pct_in_profit'), + _60pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_60pct_in_profit'), + _70pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_70pct_in_profit'), + _80pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_80pct_in_profit'), + _90pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_90pct_in_profit'), + _100pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_100pct_in_profit'), + _200pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_200pct_in_profit'), + _300pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_300pct_in_profit'), + _500pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_500pct_in_profit'), }, loss: { - all: createNuplRealizedSupplyPattern(this, 'utxos_in_loss'), - _10pct: createNuplRealizedSupplyPattern(this, 'utxos_over_10pct_in_loss'), - _20pct: createNuplRealizedSupplyPattern(this, 'utxos_over_20pct_in_loss'), - _30pct: createNuplRealizedSupplyPattern(this, 'utxos_over_30pct_in_loss'), - _40pct: createNuplRealizedSupplyPattern(this, 'utxos_over_40pct_in_loss'), - _50pct: createNuplRealizedSupplyPattern(this, 'utxos_over_50pct_in_loss'), - _60pct: createNuplRealizedSupplyPattern(this, 'utxos_over_60pct_in_loss'), - _70pct: createNuplRealizedSupplyPattern(this, 'utxos_over_70pct_in_loss'), - _80pct: createNuplRealizedSupplyPattern(this, 'utxos_over_80pct_in_loss'), + all: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_in_loss'), + _10pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_10pct_in_loss'), + _20pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_20pct_in_loss'), + _30pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_30pct_in_loss'), + _40pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_40pct_in_loss'), + _50pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_50pct_in_loss'), + _60pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_60pct_in_loss'), + _70pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_70pct_in_loss'), + _80pct: createNuplRealizedSupplyUnrealizedPattern(this, 'utxos_over_80pct_in_loss'), }, }, matured: { @@ -9186,51 +13276,502 @@ class BrkClient extends BrkClientBase { }, addr: { overAmount: { - _1sat: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1sat'), - _10sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10sats'), - _100sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100sats'), - _1kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1k_sats'), - _10kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10k_sats'), - _100kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100k_sats'), - _1mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1m_sats'), - _10mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10m_sats'), - _1btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1btc'), - _10btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10btc'), - _100btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100btc'), - _1kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1k_btc'), - _10kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10k_btc'), + _1sat: { + supply: createDeltaTotalPattern(this, 'addrs_over_1sat_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_1sat_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_1sat_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_1sat_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_1sat_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_1sat'), + unrealized: createNuplPattern(this, 'addrs_over_1sat_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_1sat_addr_count'), + }, + _10sats: { + supply: createDeltaTotalPattern(this, 'addrs_over_10sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_10sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_10sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_10sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_10sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_10sats'), + unrealized: createNuplPattern(this, 'addrs_over_10sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_10sats_addr_count'), + }, + _100sats: { + supply: createDeltaTotalPattern(this, 'addrs_over_100sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_100sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_100sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_100sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_100sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_100sats'), + unrealized: createNuplPattern(this, 'addrs_over_100sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_100sats_addr_count'), + }, + _1kSats: { + supply: createDeltaTotalPattern(this, 'addrs_over_1k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_1k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_1k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_1k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_1k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_1k_sats'), + unrealized: createNuplPattern(this, 'addrs_over_1k_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_1k_sats_addr_count'), + }, + _10kSats: { + supply: createDeltaTotalPattern(this, 'addrs_over_10k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_10k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_10k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_10k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_10k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_10k_sats'), + unrealized: createNuplPattern(this, 'addrs_over_10k_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_10k_sats_addr_count'), + }, + _100kSats: { + supply: createDeltaTotalPattern(this, 'addrs_over_100k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_100k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_100k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_100k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_100k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_100k_sats'), + unrealized: createNuplPattern(this, 'addrs_over_100k_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_100k_sats_addr_count'), + }, + _1mSats: { + supply: createDeltaTotalPattern(this, 'addrs_over_1m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_1m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_1m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_1m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_1m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_1m_sats'), + unrealized: createNuplPattern(this, 'addrs_over_1m_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_1m_sats_addr_count'), + }, + _10mSats: { + supply: createDeltaTotalPattern(this, 'addrs_over_10m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_10m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_10m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_10m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_10m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_10m_sats'), + unrealized: createNuplPattern(this, 'addrs_over_10m_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_10m_sats_addr_count'), + }, + _1btc: { + supply: createDeltaTotalPattern(this, 'addrs_over_1btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_1btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_1btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_1btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_1btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_1btc'), + unrealized: createNuplPattern(this, 'addrs_over_1btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_1btc_addr_count'), + }, + _10btc: { + supply: createDeltaTotalPattern(this, 'addrs_over_10btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_10btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_10btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_10btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_10btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_10btc'), + unrealized: createNuplPattern(this, 'addrs_over_10btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_10btc_addr_count'), + }, + _100btc: { + supply: createDeltaTotalPattern(this, 'addrs_over_100btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_100btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_100btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_100btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_100btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_100btc'), + unrealized: createNuplPattern(this, 'addrs_over_100btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_100btc_addr_count'), + }, + _1kBtc: { + supply: createDeltaTotalPattern(this, 'addrs_over_1k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_1k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_1k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_1k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_1k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_1k_btc'), + unrealized: createNuplPattern(this, 'addrs_over_1k_btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_1k_btc_addr_count'), + }, + _10kBtc: { + supply: createDeltaTotalPattern(this, 'addrs_over_10k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_10k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_10k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_10k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_10k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_10k_btc'), + unrealized: createNuplPattern(this, 'addrs_over_10k_btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_10k_btc_addr_count'), + }, }, amountRange: { - _0sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_0sats'), - _1satTo10sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1sat_to_10sats'), - _10satsTo100sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10sats_to_100sats'), - _100satsTo1kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_100sats_to_1k_sats'), - _1kSatsTo10kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1k_sats_to_10k_sats'), - _10kSatsTo100kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10k_sats_to_100k_sats'), - _100kSatsTo1mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_100k_sats_to_1m_sats'), - _1mSatsTo10mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1m_sats_to_10m_sats'), - _10mSatsTo1btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10m_sats_to_1btc'), - _1btcTo10btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1btc_to_10btc'), - _10btcTo100btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10btc_to_100btc'), - _100btcTo1kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_100btc_to_1k_btc'), - _1kBtcTo10kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1k_btc_to_10k_btc'), - _10kBtcTo100kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10k_btc_to_100k_btc'), - over100kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100k_btc'), + _0sats: { + supply: createDeltaTotalPattern(this, 'addrs_0sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_0sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_0sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_0sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_0sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_0sats'), + unrealized: createNuplPattern(this, 'addrs_0sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_0sats_addr_count'), + }, + _1satTo10sats: { + supply: createDeltaTotalPattern(this, 'addrs_1sat_to_10sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_1sat_to_10sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_1sat_to_10sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_1sat_to_10sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_1sat_to_10sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_1sat_to_10sats'), + unrealized: createNuplPattern(this, 'addrs_1sat_to_10sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_1sat_to_10sats_addr_count'), + }, + _10satsTo100sats: { + supply: createDeltaTotalPattern(this, 'addrs_10sats_to_100sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_10sats_to_100sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_10sats_to_100sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_10sats_to_100sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_10sats_to_100sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_10sats_to_100sats'), + unrealized: createNuplPattern(this, 'addrs_10sats_to_100sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_10sats_to_100sats_addr_count'), + }, + _100satsTo1kSats: { + supply: createDeltaTotalPattern(this, 'addrs_100sats_to_1k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_100sats_to_1k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_100sats_to_1k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_100sats_to_1k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_100sats_to_1k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_100sats_to_1k_sats'), + unrealized: createNuplPattern(this, 'addrs_100sats_to_1k_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_100sats_to_1k_sats_addr_count'), + }, + _1kSatsTo10kSats: { + supply: createDeltaTotalPattern(this, 'addrs_1k_sats_to_10k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_1k_sats_to_10k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_1k_sats_to_10k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_1k_sats_to_10k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_1k_sats_to_10k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_1k_sats_to_10k_sats'), + unrealized: createNuplPattern(this, 'addrs_1k_sats_to_10k_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_1k_sats_to_10k_sats_addr_count'), + }, + _10kSatsTo100kSats: { + supply: createDeltaTotalPattern(this, 'addrs_10k_sats_to_100k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_10k_sats_to_100k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_10k_sats_to_100k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_10k_sats_to_100k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_10k_sats_to_100k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_10k_sats_to_100k_sats'), + unrealized: createNuplPattern(this, 'addrs_10k_sats_to_100k_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_10k_sats_to_100k_sats_addr_count'), + }, + _100kSatsTo1mSats: { + supply: createDeltaTotalPattern(this, 'addrs_100k_sats_to_1m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_100k_sats_to_1m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_100k_sats_to_1m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_100k_sats_to_1m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_100k_sats_to_1m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_100k_sats_to_1m_sats'), + unrealized: createNuplPattern(this, 'addrs_100k_sats_to_1m_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_100k_sats_to_1m_sats_addr_count'), + }, + _1mSatsTo10mSats: { + supply: createDeltaTotalPattern(this, 'addrs_1m_sats_to_10m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_1m_sats_to_10m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_1m_sats_to_10m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_1m_sats_to_10m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_1m_sats_to_10m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_1m_sats_to_10m_sats'), + unrealized: createNuplPattern(this, 'addrs_1m_sats_to_10m_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_1m_sats_to_10m_sats_addr_count'), + }, + _10mSatsTo1btc: { + supply: createDeltaTotalPattern(this, 'addrs_10m_sats_to_1btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_10m_sats_to_1btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_10m_sats_to_1btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_10m_sats_to_1btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_10m_sats_to_1btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_10m_sats_to_1btc'), + unrealized: createNuplPattern(this, 'addrs_10m_sats_to_1btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_10m_sats_to_1btc_addr_count'), + }, + _1btcTo10btc: { + supply: createDeltaTotalPattern(this, 'addrs_1btc_to_10btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_1btc_to_10btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_1btc_to_10btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_1btc_to_10btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_1btc_to_10btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_1btc_to_10btc'), + unrealized: createNuplPattern(this, 'addrs_1btc_to_10btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_1btc_to_10btc_addr_count'), + }, + _10btcTo100btc: { + supply: createDeltaTotalPattern(this, 'addrs_10btc_to_100btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_10btc_to_100btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_10btc_to_100btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_10btc_to_100btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_10btc_to_100btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_10btc_to_100btc'), + unrealized: createNuplPattern(this, 'addrs_10btc_to_100btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_10btc_to_100btc_addr_count'), + }, + _100btcTo1kBtc: { + supply: createDeltaTotalPattern(this, 'addrs_100btc_to_1k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_100btc_to_1k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_100btc_to_1k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_100btc_to_1k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_100btc_to_1k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_100btc_to_1k_btc'), + unrealized: createNuplPattern(this, 'addrs_100btc_to_1k_btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_100btc_to_1k_btc_addr_count'), + }, + _1kBtcTo10kBtc: { + supply: createDeltaTotalPattern(this, 'addrs_1k_btc_to_10k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_1k_btc_to_10k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_1k_btc_to_10k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_1k_btc_to_10k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_1k_btc_to_10k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_1k_btc_to_10k_btc'), + unrealized: createNuplPattern(this, 'addrs_1k_btc_to_10k_btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_1k_btc_to_10k_btc_addr_count'), + }, + _10kBtcTo100kBtc: { + supply: createDeltaTotalPattern(this, 'addrs_10k_btc_to_100k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_10k_btc_to_100k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_10k_btc_to_100k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_10k_btc_to_100k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_10k_btc_to_100k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_10k_btc_to_100k_btc'), + unrealized: createNuplPattern(this, 'addrs_10k_btc_to_100k_btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_10k_btc_to_100k_btc_addr_count'), + }, + over100kBtc: { + supply: createDeltaTotalPattern(this, 'addrs_over_100k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_over_100k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_over_100k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_over_100k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_over_100k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_over_100k_btc'), + unrealized: createNuplPattern(this, 'addrs_over_100k_btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_over_100k_btc_addr_count'), + }, }, underAmount: { - _10sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10sats'), - _100sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100sats'), - _1kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1k_sats'), - _10kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10k_sats'), - _100kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100k_sats'), - _1mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1m_sats'), - _10mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10m_sats'), - _1btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1btc'), - _10btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10btc'), - _100btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100btc'), - _1kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1k_btc'), - _10kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10k_btc'), - _100kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100k_btc'), + _10sats: { + supply: createDeltaTotalPattern(this, 'addrs_under_10sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_10sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_10sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_10sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_10sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_10sats'), + unrealized: createNuplPattern(this, 'addrs_under_10sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_10sats_addr_count'), + }, + _100sats: { + supply: createDeltaTotalPattern(this, 'addrs_under_100sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_100sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_100sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_100sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_100sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_100sats'), + unrealized: createNuplPattern(this, 'addrs_under_100sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_100sats_addr_count'), + }, + _1kSats: { + supply: createDeltaTotalPattern(this, 'addrs_under_1k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_1k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_1k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_1k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_1k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_1k_sats'), + unrealized: createNuplPattern(this, 'addrs_under_1k_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_1k_sats_addr_count'), + }, + _10kSats: { + supply: createDeltaTotalPattern(this, 'addrs_under_10k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_10k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_10k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_10k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_10k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_10k_sats'), + unrealized: createNuplPattern(this, 'addrs_under_10k_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_10k_sats_addr_count'), + }, + _100kSats: { + supply: createDeltaTotalPattern(this, 'addrs_under_100k_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_100k_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_100k_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_100k_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_100k_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_100k_sats'), + unrealized: createNuplPattern(this, 'addrs_under_100k_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_100k_sats_addr_count'), + }, + _1mSats: { + supply: createDeltaTotalPattern(this, 'addrs_under_1m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_1m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_1m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_1m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_1m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_1m_sats'), + unrealized: createNuplPattern(this, 'addrs_under_1m_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_1m_sats_addr_count'), + }, + _10mSats: { + supply: createDeltaTotalPattern(this, 'addrs_under_10m_sats_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_10m_sats_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_10m_sats_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_10m_sats_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_10m_sats_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_10m_sats'), + unrealized: createNuplPattern(this, 'addrs_under_10m_sats_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_10m_sats_addr_count'), + }, + _1btc: { + supply: createDeltaTotalPattern(this, 'addrs_under_1btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_1btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_1btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_1btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_1btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_1btc'), + unrealized: createNuplPattern(this, 'addrs_under_1btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_1btc_addr_count'), + }, + _10btc: { + supply: createDeltaTotalPattern(this, 'addrs_under_10btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_10btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_10btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_10btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_10btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_10btc'), + unrealized: createNuplPattern(this, 'addrs_under_10btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_10btc_addr_count'), + }, + _100btc: { + supply: createDeltaTotalPattern(this, 'addrs_under_100btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_100btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_100btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_100btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_100btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_100btc'), + unrealized: createNuplPattern(this, 'addrs_under_100btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_100btc_addr_count'), + }, + _1kBtc: { + supply: createDeltaTotalPattern(this, 'addrs_under_1k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_1k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_1k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_1k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_1k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_1k_btc'), + unrealized: createNuplPattern(this, 'addrs_under_1k_btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_1k_btc_addr_count'), + }, + _10kBtc: { + supply: createDeltaTotalPattern(this, 'addrs_under_10k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_10k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_10k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_10k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_10k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_10k_btc'), + unrealized: createNuplPattern(this, 'addrs_under_10k_btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_10k_btc_addr_count'), + }, + _100kBtc: { + supply: createDeltaTotalPattern(this, 'addrs_under_100k_btc_supply'), + outputs: { + unspentCount: createBaseDeltaPattern(this, 'addrs_under_100k_btc_utxo_count'), + spentCount: createAverageBlockCumulativeSumPattern2(this, 'addrs_under_100k_btc_spent_utxo_count'), + spendingRate: createSeriesPattern1(this, 'addrs_under_100k_btc_spending_rate'), + }, + activity: createTransferPattern(this, 'addrs_under_100k_btc_transfer_volume'), + realized: createCapLossMvrvPriceProfitPattern(this, 'addrs_under_100k_btc'), + unrealized: createNuplPattern(this, 'addrs_under_100k_btc_nupl'), + addrCount: createBaseDeltaPattern(this, 'addrs_under_100k_btc_addr_count'), + }, }, }, }, diff --git a/packages/brk_client/brk_client/__init__.py b/packages/brk_client/brk_client/__init__.py index ac237965b..95dba09b5 100644 --- a/packages/brk_client/brk_client/__init__.py +++ b/packages/brk_client/brk_client/__init__.py @@ -2367,15 +2367,7 @@ class _1m1w1y2y4yAllPattern: class ActivityAddrOutputsRealizedSupplyUnrealizedPattern: """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.activity: TransferPattern = TransferPattern(client, _m(acc, 'transfer_volume')) - self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, _m(acc, 'addr_count')) - self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) - self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, acc) - self.supply: DeltaTotalPattern = DeltaTotalPattern(client, _m(acc, 'supply')) - self.unrealized: NuplPattern = NuplPattern(client, _m(acc, 'nupl')) + pass class AverageBlockCumulativeInSumPattern: """Pattern struct for repeated tree structure.""" @@ -2474,36 +2466,15 @@ class _1m1w1y24hBlockPattern: class ActivityOutputsRealizedSupplyUnrealizedPattern: """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, acc) - self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) - self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, acc) - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, _m(acc, 'supply')) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, acc) + pass class ActivityOutputsRealizedSupplyUnrealizedPattern3: """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.activity: TransferPattern = TransferPattern(client, _m(acc, 'transfer_volume')) - self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) - self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, acc) - self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, _m(acc, 'supply')) - self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, acc) + pass class ActivityOutputsRealizedSupplyUnrealizedPattern2: """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.activity: TransferPattern = TransferPattern(client, _m(acc, 'transfer_volume')) - self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) - self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, acc) - self.supply: DeltaTotalPattern = DeltaTotalPattern(client, _m(acc, 'supply')) - self.unrealized: NuplPattern = NuplPattern(client, _m(acc, 'nupl')) + pass class BlockChangeCumulativeDeltaSumPattern: """Pattern struct for repeated tree structure.""" @@ -2796,6 +2767,16 @@ class LossNetNuplProfitPattern: self.nupl: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'nupl')) self.profit: CentsUsdPattern3 = CentsUsdPattern3(client, _m(acc, 'unrealized_profit')) +class NuplRealizedSupplyUnrealizedPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated series name.""" + self.nupl: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'nupl')) + self.realized_cap: AllSthPattern = AllSthPattern(client, acc, '') + self.supply: AllSthPattern2 = AllSthPattern2(client, acc) + self.unrealized_pnl: AllSthPattern = AllSthPattern(client, acc, '') + class _1m1w1y24hPattern(Generic[T]): """Pattern struct for repeated tree structure.""" @@ -2941,15 +2922,6 @@ class LossNuplProfitPattern: self.nupl: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'nupl')) self.profit: CentsUsdPattern3 = CentsUsdPattern3(client, _m(acc, 'unrealized_profit')) -class NuplRealizedSupplyPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.nupl: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'nupl')) - self.realized_cap: AllSthPattern = AllSthPattern(client, acc) - self.supply: AllSthPattern2 = AllSthPattern2(client, acc) - class RatioTransferValuePattern: """Pattern struct for repeated tree structure.""" pass @@ -2963,6 +2935,10 @@ class RsiStochPattern: self.stoch_rsi_d: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, f'stoch_d_{disc}')) self.stoch_rsi_k: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, f'stoch_k_{disc}')) +class SpendingSpentUnspentPattern: + """Pattern struct for repeated tree structure.""" + pass + class _6bBlockTxPattern(Generic[T]): """Pattern struct for repeated tree structure.""" @@ -2999,10 +2975,10 @@ class AllSthPattern2: class AllSthPattern: """Pattern struct for repeated tree structure.""" - def __init__(self, client: BrkClientBase, acc: str): + def __init__(self, client: BrkClientBase, acc: str, disc: str): """Create pattern node with accumulated series name.""" - self.all: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'realized_cap')) - self.sth: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'sth_realized_cap')) + self.all: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, disc)) + self.sth: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, f'sth_{disc}')) class BaseSumPattern: """Pattern struct for repeated tree structure.""" @@ -3172,13 +3148,6 @@ class TransferPattern: """Create pattern node with accumulated series name.""" self.transfer_volume: AverageBlockCumulativeSumPattern3 = AverageBlockCumulativeSumPattern3(client, acc) -class UnspentPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, acc) - # Series tree classes class SeriesTree_Blocks_Difficulty: @@ -4737,6 +4706,14 @@ class SeriesTree_Cohorts_Utxo_All_Supply: self.in_profit: BtcCentsSatsToUsdPattern2 = BtcCentsSatsToUsdPattern2(client, 'supply_in_profit') self.in_loss: BtcCentsSatsToUsdPattern2 = BtcCentsSatsToUsdPattern2(client, 'supply_in_loss') +class SeriesTree_Cohorts_Utxo_All_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'spending_rate') + class SeriesTree_Cohorts_Utxo_All_Activity: """Series tree node.""" @@ -4947,12 +4924,20 @@ class SeriesTree_Cohorts_Utxo_All: def __init__(self, client: BrkClientBase, base_path: str = ''): self.supply: SeriesTree_Cohorts_Utxo_All_Supply = SeriesTree_Cohorts_Utxo_All_Supply(client) - self.outputs: UnspentPattern = UnspentPattern(client, 'utxo_count') + self.outputs: SeriesTree_Cohorts_Utxo_All_Outputs = SeriesTree_Cohorts_Utxo_All_Outputs(client) self.activity: SeriesTree_Cohorts_Utxo_All_Activity = SeriesTree_Cohorts_Utxo_All_Activity(client) self.realized: SeriesTree_Cohorts_Utxo_All_Realized = SeriesTree_Cohorts_Utxo_All_Realized(client) self.cost_basis: SeriesTree_Cohorts_Utxo_All_CostBasis = SeriesTree_Cohorts_Utxo_All_CostBasis(client) self.unrealized: SeriesTree_Cohorts_Utxo_All_Unrealized = SeriesTree_Cohorts_Utxo_All_Unrealized(client) +class SeriesTree_Cohorts_Utxo_Sth_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'sth_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'sth_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_spending_rate') + class SeriesTree_Cohorts_Utxo_Sth_Activity: """Series tree node.""" @@ -5136,12 +5121,20 @@ class SeriesTree_Cohorts_Utxo_Sth: def __init__(self, client: BrkClientBase, base_path: str = ''): self.supply: DeltaHalfInToTotalPattern2 = DeltaHalfInToTotalPattern2(client, 'sth_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'sth_utxo_count') + self.outputs: SeriesTree_Cohorts_Utxo_Sth_Outputs = SeriesTree_Cohorts_Utxo_Sth_Outputs(client) self.activity: SeriesTree_Cohorts_Utxo_Sth_Activity = SeriesTree_Cohorts_Utxo_Sth_Activity(client) self.realized: SeriesTree_Cohorts_Utxo_Sth_Realized = SeriesTree_Cohorts_Utxo_Sth_Realized(client) self.cost_basis: SeriesTree_Cohorts_Utxo_Sth_CostBasis = SeriesTree_Cohorts_Utxo_Sth_CostBasis(client) self.unrealized: SeriesTree_Cohorts_Utxo_Sth_Unrealized = SeriesTree_Cohorts_Utxo_Sth_Unrealized(client) +class SeriesTree_Cohorts_Utxo_Lth_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'lth_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'lth_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_spending_rate') + class SeriesTree_Cohorts_Utxo_Lth_Activity: """Series tree node.""" @@ -5316,251 +5309,2627 @@ class SeriesTree_Cohorts_Utxo_Lth: def __init__(self, client: BrkClientBase, base_path: str = ''): self.supply: DeltaHalfInToTotalPattern2 = DeltaHalfInToTotalPattern2(client, 'lth_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'lth_utxo_count') + self.outputs: SeriesTree_Cohorts_Utxo_Lth_Outputs = SeriesTree_Cohorts_Utxo_Lth_Outputs(client) self.activity: SeriesTree_Cohorts_Utxo_Lth_Activity = SeriesTree_Cohorts_Utxo_Lth_Activity(client) self.realized: SeriesTree_Cohorts_Utxo_Lth_Realized = SeriesTree_Cohorts_Utxo_Lth_Realized(client) self.cost_basis: SeriesTree_Cohorts_Utxo_Lth_CostBasis = SeriesTree_Cohorts_Utxo_Lth_CostBasis(client) self.unrealized: SeriesTree_Cohorts_Utxo_Lth_Unrealized = SeriesTree_Cohorts_Utxo_Lth_Unrealized(client) +class SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_1h_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_1h_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1h_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_Under1h: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_1h_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_1h_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_1h_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_1h_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_1h_to_1d_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_1h_to_1d_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1h_to_1d_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_1h_to_1d_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_1h_to_1d_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_1h_to_1d_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_1h_to_1d_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_1d_to_1w_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_1d_to_1w_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1d_to_1w_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_1d_to_1w_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_1d_to_1w_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_1d_to_1w_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_1d_to_1w_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_1w_to_1m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_1w_to_1m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1w_to_1m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_1w_to_1m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_1w_to_1m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_1w_to_1m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_1w_to_1m_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_1m_to_2m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_1m_to_2m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1m_to_2m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_1m_to_2m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_1m_to_2m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_1m_to_2m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_1m_to_2m_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_2m_to_3m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_2m_to_3m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_2m_to_3m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_2m_to_3m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_2m_to_3m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_2m_to_3m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_2m_to_3m_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_3m_to_4m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_3m_to_4m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_3m_to_4m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_3m_to_4m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_3m_to_4m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_3m_to_4m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_3m_to_4m_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_4m_to_5m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_4m_to_5m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_4m_to_5m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_4m_to_5m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_4m_to_5m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_4m_to_5m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_4m_to_5m_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_5m_to_6m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_5m_to_6m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_5m_to_6m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_5m_to_6m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_5m_to_6m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_5m_to_6m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_5m_to_6m_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_6m_to_1y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_6m_to_1y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_6m_to_1y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_6m_to_1y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_6m_to_1y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_6m_to_1y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_6m_to_1y_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_1y_to_2y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_1y_to_2y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1y_to_2y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_1y_to_2y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_1y_to_2y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_1y_to_2y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_1y_to_2y_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_2y_to_3y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_2y_to_3y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_2y_to_3y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_2y_to_3y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_2y_to_3y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_2y_to_3y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_2y_to_3y_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_3y_to_4y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_3y_to_4y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_3y_to_4y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_3y_to_4y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_3y_to_4y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_3y_to_4y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_3y_to_4y_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_4y_to_5y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_4y_to_5y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_4y_to_5y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_4y_to_5y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_4y_to_5y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_4y_to_5y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_4y_to_5y_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_5y_to_6y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_5y_to_6y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_5y_to_6y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_5y_to_6y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_5y_to_6y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_5y_to_6y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_5y_to_6y_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_6y_to_7y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_6y_to_7y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_6y_to_7y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_6y_to_7y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_6y_to_7y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_6y_to_7y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_6y_to_7y_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_7y_to_8y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_7y_to_8y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_7y_to_8y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_7y_to_8y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_7y_to_8y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_7y_to_8y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_7y_to_8y_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_8y_to_10y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_8y_to_10y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_8y_to_10y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_8y_to_10y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_8y_to_10y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_8y_to_10y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_8y_to_10y_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_10y_to_12y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_10y_to_12y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_10y_to_12y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_10y_to_12y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_10y_to_12y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_10y_to_12y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_10y_to_12y_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_12y_to_15y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_12y_to_15y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_12y_to_15y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_12y_to_15y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_12y_to_15y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_12y_to_15y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_12y_to_15y_old') + +class SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_15y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_15y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_15y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_AgeRange_Over15y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_15y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Outputs = SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_15y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_15y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_15y_old') + class SeriesTree_Cohorts_Utxo_AgeRange: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.under_1h: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1h_old') - self._1h_to_1d: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1h_to_1d_old') - self._1d_to_1w: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1d_to_1w_old') - self._1w_to_1m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1w_to_1m_old') - self._1m_to_2m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1m_to_2m_old') - self._2m_to_3m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_2m_to_3m_old') - self._3m_to_4m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_3m_to_4m_old') - self._4m_to_5m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_4m_to_5m_old') - self._5m_to_6m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_5m_to_6m_old') - self._6m_to_1y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_6m_to_1y_old') - self._1y_to_2y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1y_to_2y_old') - self._2y_to_3y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_2y_to_3y_old') - self._3y_to_4y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_3y_to_4y_old') - self._4y_to_5y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_4y_to_5y_old') - self._5y_to_6y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_5y_to_6y_old') - self._6y_to_7y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_6y_to_7y_old') - self._7y_to_8y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_7y_to_8y_old') - self._8y_to_10y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_8y_to_10y_old') - self._10y_to_12y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10y_to_12y_old') - self._12y_to_15y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_12y_to_15y_old') - self.over_15y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_15y_old') + self.under_1h: SeriesTree_Cohorts_Utxo_AgeRange_Under1h = SeriesTree_Cohorts_Utxo_AgeRange_Under1h(client) + self._1h_to_1d: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d = SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d(client) + self._1d_to_1w: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w = SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w(client) + self._1w_to_1m: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m = SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m(client) + self._1m_to_2m: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m = SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m(client) + self._2m_to_3m: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m = SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m(client) + self._3m_to_4m: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m = SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m(client) + self._4m_to_5m: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m = SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m(client) + self._5m_to_6m: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m = SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m(client) + self._6m_to_1y: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y = SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y(client) + self._1y_to_2y: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y = SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y(client) + self._2y_to_3y: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y = SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y(client) + self._3y_to_4y: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y = SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y(client) + self._4y_to_5y: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y = SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y(client) + self._5y_to_6y: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y = SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y(client) + self._6y_to_7y: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y = SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y(client) + self._7y_to_8y: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y = SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y(client) + self._8y_to_10y: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y = SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y(client) + self._10y_to_12y: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y = SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y(client) + self._12y_to_15y: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y = SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y(client) + self.over_15y: SeriesTree_Cohorts_Utxo_AgeRange_Over15y = SeriesTree_Cohorts_Utxo_AgeRange_Over15y(client) + +class SeriesTree_Cohorts_Utxo_UnderAge_1w_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_1w_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_1w_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1w_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_1w: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_1w_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_1w_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_1w_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_1w_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_1w_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_1w_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_1m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_1m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_1m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_1m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_1m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_1m_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_1m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_1m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_1m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_1m_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_2m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_2m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_2m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_2m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_2m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_2m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_2m_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_2m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_2m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_2m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_2m_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_3m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_3m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_3m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_3m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_3m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_3m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_3m_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_3m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_3m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_3m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_3m_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_4m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_4m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_4m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_4m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_4m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_4m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_4m_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_4m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_4m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_4m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_4m_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_5m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_5m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_5m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_5m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_5m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_5m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_5m_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_5m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_5m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_5m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_5m_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_6m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_6m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_6m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_6m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_6m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_6m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_6m_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_6m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_6m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_6m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_6m_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_1y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_1y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_1y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_1y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_1y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_1y_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_1y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_1y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_1y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_1y_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_2y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_2y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_2y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_2y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_2y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_2y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_2y_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_2y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_2y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_2y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_2y_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_3y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_3y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_3y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_3y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_3y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_3y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_3y_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_3y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_3y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_3y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_3y_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_4y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_4y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_4y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_4y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_4y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_4y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_4y_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_4y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_4y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_4y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_4y_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_5y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_5y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_5y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_5y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_5y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_5y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_5y_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_5y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_5y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_5y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_5y_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_6y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_6y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_6y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_6y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_6y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_6y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_6y_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_6y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_6y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_6y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_6y_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_7y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_7y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_7y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_7y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_7y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_7y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_7y_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_7y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_7y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_7y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_7y_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_8y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_8y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_8y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_8y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_8y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_8y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_8y_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_8y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_8y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_8y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_8y_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_10y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_10y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_10y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_10y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_10y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_10y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_10y_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_10y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_10y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_10y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_10y_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_12y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_12y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_12y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_12y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_12y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_12y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_12y_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_12y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_12y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_12y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_12y_old') + +class SeriesTree_Cohorts_Utxo_UnderAge_15y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_15y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_15y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_15y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAge_15y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_15y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAge_15y_Outputs = SeriesTree_Cohorts_Utxo_UnderAge_15y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_15y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_under_15y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_15y_old') class SeriesTree_Cohorts_Utxo_UnderAge: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._1w: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1w_old') - self._1m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1m_old') - self._2m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_2m_old') - self._3m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_3m_old') - self._4m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_4m_old') - self._5m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_5m_old') - self._6m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_6m_old') - self._1y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1y_old') - self._2y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_2y_old') - self._3y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_3y_old') - self._4y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_4y_old') - self._5y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_5y_old') - self._6y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_6y_old') - self._7y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_7y_old') - self._8y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_8y_old') - self._10y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10y_old') - self._12y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_12y_old') - self._15y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_15y_old') + self._1w: SeriesTree_Cohorts_Utxo_UnderAge_1w = SeriesTree_Cohorts_Utxo_UnderAge_1w(client) + self._1m: SeriesTree_Cohorts_Utxo_UnderAge_1m = SeriesTree_Cohorts_Utxo_UnderAge_1m(client) + self._2m: SeriesTree_Cohorts_Utxo_UnderAge_2m = SeriesTree_Cohorts_Utxo_UnderAge_2m(client) + self._3m: SeriesTree_Cohorts_Utxo_UnderAge_3m = SeriesTree_Cohorts_Utxo_UnderAge_3m(client) + self._4m: SeriesTree_Cohorts_Utxo_UnderAge_4m = SeriesTree_Cohorts_Utxo_UnderAge_4m(client) + self._5m: SeriesTree_Cohorts_Utxo_UnderAge_5m = SeriesTree_Cohorts_Utxo_UnderAge_5m(client) + self._6m: SeriesTree_Cohorts_Utxo_UnderAge_6m = SeriesTree_Cohorts_Utxo_UnderAge_6m(client) + self._1y: SeriesTree_Cohorts_Utxo_UnderAge_1y = SeriesTree_Cohorts_Utxo_UnderAge_1y(client) + self._2y: SeriesTree_Cohorts_Utxo_UnderAge_2y = SeriesTree_Cohorts_Utxo_UnderAge_2y(client) + self._3y: SeriesTree_Cohorts_Utxo_UnderAge_3y = SeriesTree_Cohorts_Utxo_UnderAge_3y(client) + self._4y: SeriesTree_Cohorts_Utxo_UnderAge_4y = SeriesTree_Cohorts_Utxo_UnderAge_4y(client) + self._5y: SeriesTree_Cohorts_Utxo_UnderAge_5y = SeriesTree_Cohorts_Utxo_UnderAge_5y(client) + self._6y: SeriesTree_Cohorts_Utxo_UnderAge_6y = SeriesTree_Cohorts_Utxo_UnderAge_6y(client) + self._7y: SeriesTree_Cohorts_Utxo_UnderAge_7y = SeriesTree_Cohorts_Utxo_UnderAge_7y(client) + self._8y: SeriesTree_Cohorts_Utxo_UnderAge_8y = SeriesTree_Cohorts_Utxo_UnderAge_8y(client) + self._10y: SeriesTree_Cohorts_Utxo_UnderAge_10y = SeriesTree_Cohorts_Utxo_UnderAge_10y(client) + self._12y: SeriesTree_Cohorts_Utxo_UnderAge_12y = SeriesTree_Cohorts_Utxo_UnderAge_12y(client) + self._15y: SeriesTree_Cohorts_Utxo_UnderAge_15y = SeriesTree_Cohorts_Utxo_UnderAge_15y(client) + +class SeriesTree_Cohorts_Utxo_OverAge_1d_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_1d_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_1d_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1d_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_1d: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_1d_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_1d_Outputs = SeriesTree_Cohorts_Utxo_OverAge_1d_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_1d_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_1d_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_1d_old') + +class SeriesTree_Cohorts_Utxo_OverAge_1w_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_1w_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_1w_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1w_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_1w: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_1w_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_1w_Outputs = SeriesTree_Cohorts_Utxo_OverAge_1w_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_1w_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_1w_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_1w_old') + +class SeriesTree_Cohorts_Utxo_OverAge_1m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_1m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_1m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_1m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_1m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_1m_Outputs = SeriesTree_Cohorts_Utxo_OverAge_1m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_1m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_1m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_1m_old') + +class SeriesTree_Cohorts_Utxo_OverAge_2m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_2m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_2m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_2m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_2m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_2m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_2m_Outputs = SeriesTree_Cohorts_Utxo_OverAge_2m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_2m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_2m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_2m_old') + +class SeriesTree_Cohorts_Utxo_OverAge_3m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_3m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_3m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_3m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_3m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_3m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_3m_Outputs = SeriesTree_Cohorts_Utxo_OverAge_3m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_3m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_3m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_3m_old') + +class SeriesTree_Cohorts_Utxo_OverAge_4m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_4m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_4m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_4m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_4m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_4m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_4m_Outputs = SeriesTree_Cohorts_Utxo_OverAge_4m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_4m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_4m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_4m_old') + +class SeriesTree_Cohorts_Utxo_OverAge_5m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_5m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_5m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_5m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_5m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_5m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_5m_Outputs = SeriesTree_Cohorts_Utxo_OverAge_5m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_5m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_5m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_5m_old') + +class SeriesTree_Cohorts_Utxo_OverAge_6m_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_6m_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_6m_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_6m_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_6m: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_6m_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_6m_Outputs = SeriesTree_Cohorts_Utxo_OverAge_6m_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_6m_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_6m_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_6m_old') + +class SeriesTree_Cohorts_Utxo_OverAge_1y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_1y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_1y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_1y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_1y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_1y_Outputs = SeriesTree_Cohorts_Utxo_OverAge_1y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_1y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_1y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_1y_old') + +class SeriesTree_Cohorts_Utxo_OverAge_2y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_2y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_2y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_2y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_2y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_2y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_2y_Outputs = SeriesTree_Cohorts_Utxo_OverAge_2y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_2y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_2y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_2y_old') + +class SeriesTree_Cohorts_Utxo_OverAge_3y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_3y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_3y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_3y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_3y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_3y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_3y_Outputs = SeriesTree_Cohorts_Utxo_OverAge_3y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_3y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_3y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_3y_old') + +class SeriesTree_Cohorts_Utxo_OverAge_4y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_4y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_4y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_4y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_4y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_4y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_4y_Outputs = SeriesTree_Cohorts_Utxo_OverAge_4y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_4y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_4y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_4y_old') + +class SeriesTree_Cohorts_Utxo_OverAge_5y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_5y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_5y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_5y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_5y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_5y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_5y_Outputs = SeriesTree_Cohorts_Utxo_OverAge_5y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_5y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_5y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_5y_old') + +class SeriesTree_Cohorts_Utxo_OverAge_6y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_6y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_6y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_6y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_6y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_6y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_6y_Outputs = SeriesTree_Cohorts_Utxo_OverAge_6y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_6y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_6y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_6y_old') + +class SeriesTree_Cohorts_Utxo_OverAge_7y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_7y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_7y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_7y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_7y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_7y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_7y_Outputs = SeriesTree_Cohorts_Utxo_OverAge_7y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_7y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_7y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_7y_old') + +class SeriesTree_Cohorts_Utxo_OverAge_8y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_8y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_8y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_8y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_8y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_8y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_8y_Outputs = SeriesTree_Cohorts_Utxo_OverAge_8y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_8y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_8y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_8y_old') + +class SeriesTree_Cohorts_Utxo_OverAge_10y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_10y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_10y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_10y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_10y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_10y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_10y_Outputs = SeriesTree_Cohorts_Utxo_OverAge_10y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_10y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_10y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_10y_old') + +class SeriesTree_Cohorts_Utxo_OverAge_12y_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_12y_old_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_12y_old_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_12y_old_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAge_12y: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_12y_old_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAge_12y_Outputs = SeriesTree_Cohorts_Utxo_OverAge_12y_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_12y_old') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'utxos_over_12y_old') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_12y_old') class SeriesTree_Cohorts_Utxo_OverAge: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._1d: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1d_old') - self._1w: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1w_old') - self._1m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1m_old') - self._2m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_2m_old') - self._3m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_3m_old') - self._4m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_4m_old') - self._5m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_5m_old') - self._6m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_6m_old') - self._1y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1y_old') - self._2y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_2y_old') - self._3y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_3y_old') - self._4y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_4y_old') - self._5y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_5y_old') - self._6y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_6y_old') - self._7y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_7y_old') - self._8y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_8y_old') - self._10y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10y_old') - self._12y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_12y_old') + self._1d: SeriesTree_Cohorts_Utxo_OverAge_1d = SeriesTree_Cohorts_Utxo_OverAge_1d(client) + self._1w: SeriesTree_Cohorts_Utxo_OverAge_1w = SeriesTree_Cohorts_Utxo_OverAge_1w(client) + self._1m: SeriesTree_Cohorts_Utxo_OverAge_1m = SeriesTree_Cohorts_Utxo_OverAge_1m(client) + self._2m: SeriesTree_Cohorts_Utxo_OverAge_2m = SeriesTree_Cohorts_Utxo_OverAge_2m(client) + self._3m: SeriesTree_Cohorts_Utxo_OverAge_3m = SeriesTree_Cohorts_Utxo_OverAge_3m(client) + self._4m: SeriesTree_Cohorts_Utxo_OverAge_4m = SeriesTree_Cohorts_Utxo_OverAge_4m(client) + self._5m: SeriesTree_Cohorts_Utxo_OverAge_5m = SeriesTree_Cohorts_Utxo_OverAge_5m(client) + self._6m: SeriesTree_Cohorts_Utxo_OverAge_6m = SeriesTree_Cohorts_Utxo_OverAge_6m(client) + self._1y: SeriesTree_Cohorts_Utxo_OverAge_1y = SeriesTree_Cohorts_Utxo_OverAge_1y(client) + self._2y: SeriesTree_Cohorts_Utxo_OverAge_2y = SeriesTree_Cohorts_Utxo_OverAge_2y(client) + self._3y: SeriesTree_Cohorts_Utxo_OverAge_3y = SeriesTree_Cohorts_Utxo_OverAge_3y(client) + self._4y: SeriesTree_Cohorts_Utxo_OverAge_4y = SeriesTree_Cohorts_Utxo_OverAge_4y(client) + self._5y: SeriesTree_Cohorts_Utxo_OverAge_5y = SeriesTree_Cohorts_Utxo_OverAge_5y(client) + self._6y: SeriesTree_Cohorts_Utxo_OverAge_6y = SeriesTree_Cohorts_Utxo_OverAge_6y(client) + self._7y: SeriesTree_Cohorts_Utxo_OverAge_7y = SeriesTree_Cohorts_Utxo_OverAge_7y(client) + self._8y: SeriesTree_Cohorts_Utxo_OverAge_8y = SeriesTree_Cohorts_Utxo_OverAge_8y(client) + self._10y: SeriesTree_Cohorts_Utxo_OverAge_10y = SeriesTree_Cohorts_Utxo_OverAge_10y(client) + self._12y: SeriesTree_Cohorts_Utxo_OverAge_12y = SeriesTree_Cohorts_Utxo_OverAge_12y(client) + +class SeriesTree_Cohorts_Utxo_Epoch_0_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'epoch_0_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'epoch_0_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'epoch_0_spending_rate') + +class SeriesTree_Cohorts_Utxo_Epoch_0: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'epoch_0_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Epoch_0_Outputs = SeriesTree_Cohorts_Utxo_Epoch_0_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'epoch_0') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'epoch_0') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'epoch_0') + +class SeriesTree_Cohorts_Utxo_Epoch_1_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'epoch_1_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'epoch_1_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'epoch_1_spending_rate') + +class SeriesTree_Cohorts_Utxo_Epoch_1: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'epoch_1_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Epoch_1_Outputs = SeriesTree_Cohorts_Utxo_Epoch_1_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'epoch_1') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'epoch_1') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'epoch_1') + +class SeriesTree_Cohorts_Utxo_Epoch_2_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'epoch_2_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'epoch_2_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'epoch_2_spending_rate') + +class SeriesTree_Cohorts_Utxo_Epoch_2: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'epoch_2_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Epoch_2_Outputs = SeriesTree_Cohorts_Utxo_Epoch_2_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'epoch_2') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'epoch_2') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'epoch_2') + +class SeriesTree_Cohorts_Utxo_Epoch_3_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'epoch_3_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'epoch_3_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'epoch_3_spending_rate') + +class SeriesTree_Cohorts_Utxo_Epoch_3: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'epoch_3_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Epoch_3_Outputs = SeriesTree_Cohorts_Utxo_Epoch_3_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'epoch_3') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'epoch_3') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'epoch_3') + +class SeriesTree_Cohorts_Utxo_Epoch_4_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'epoch_4_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'epoch_4_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'epoch_4_spending_rate') + +class SeriesTree_Cohorts_Utxo_Epoch_4: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'epoch_4_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Epoch_4_Outputs = SeriesTree_Cohorts_Utxo_Epoch_4_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'epoch_4') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'epoch_4') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'epoch_4') class SeriesTree_Cohorts_Utxo_Epoch: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._0: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_0') - self._1: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_1') - self._2: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_2') - self._3: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_3') - self._4: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_4') + self._0: SeriesTree_Cohorts_Utxo_Epoch_0 = SeriesTree_Cohorts_Utxo_Epoch_0(client) + self._1: SeriesTree_Cohorts_Utxo_Epoch_1 = SeriesTree_Cohorts_Utxo_Epoch_1(client) + self._2: SeriesTree_Cohorts_Utxo_Epoch_2 = SeriesTree_Cohorts_Utxo_Epoch_2(client) + self._3: SeriesTree_Cohorts_Utxo_Epoch_3 = SeriesTree_Cohorts_Utxo_Epoch_3(client) + self._4: SeriesTree_Cohorts_Utxo_Epoch_4 = SeriesTree_Cohorts_Utxo_Epoch_4(client) + +class SeriesTree_Cohorts_Utxo_Class_2009_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2009_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2009_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2009_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2009: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2009_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2009_Outputs = SeriesTree_Cohorts_Utxo_Class_2009_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2009') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2009') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2009') + +class SeriesTree_Cohorts_Utxo_Class_2010_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2010_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2010_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2010_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2010: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2010_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2010_Outputs = SeriesTree_Cohorts_Utxo_Class_2010_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2010') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2010') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2010') + +class SeriesTree_Cohorts_Utxo_Class_2011_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2011_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2011_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2011_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2011: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2011_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2011_Outputs = SeriesTree_Cohorts_Utxo_Class_2011_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2011') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2011') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2011') + +class SeriesTree_Cohorts_Utxo_Class_2012_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2012_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2012_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2012_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2012: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2012_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2012_Outputs = SeriesTree_Cohorts_Utxo_Class_2012_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2012') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2012') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2012') + +class SeriesTree_Cohorts_Utxo_Class_2013_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2013_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2013_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2013_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2013: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2013_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2013_Outputs = SeriesTree_Cohorts_Utxo_Class_2013_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2013') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2013') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2013') + +class SeriesTree_Cohorts_Utxo_Class_2014_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2014_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2014_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2014_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2014: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2014_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2014_Outputs = SeriesTree_Cohorts_Utxo_Class_2014_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2014') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2014') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2014') + +class SeriesTree_Cohorts_Utxo_Class_2015_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2015_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2015_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2015_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2015: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2015_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2015_Outputs = SeriesTree_Cohorts_Utxo_Class_2015_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2015') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2015') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2015') + +class SeriesTree_Cohorts_Utxo_Class_2016_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2016_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2016_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2016_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2016: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2016_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2016_Outputs = SeriesTree_Cohorts_Utxo_Class_2016_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2016') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2016') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2016') + +class SeriesTree_Cohorts_Utxo_Class_2017_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2017_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2017_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2017_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2017: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2017_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2017_Outputs = SeriesTree_Cohorts_Utxo_Class_2017_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2017') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2017') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2017') + +class SeriesTree_Cohorts_Utxo_Class_2018_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2018_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2018_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2018_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2018: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2018_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2018_Outputs = SeriesTree_Cohorts_Utxo_Class_2018_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2018') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2018') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2018') + +class SeriesTree_Cohorts_Utxo_Class_2019_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2019_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2019_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2019_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2019: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2019_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2019_Outputs = SeriesTree_Cohorts_Utxo_Class_2019_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2019') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2019') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2019') + +class SeriesTree_Cohorts_Utxo_Class_2020_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2020_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2020_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2020_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2020: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2020_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2020_Outputs = SeriesTree_Cohorts_Utxo_Class_2020_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2020') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2020') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2020') + +class SeriesTree_Cohorts_Utxo_Class_2021_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2021_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2021_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2021_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2021: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2021_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2021_Outputs = SeriesTree_Cohorts_Utxo_Class_2021_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2021') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2021') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2021') + +class SeriesTree_Cohorts_Utxo_Class_2022_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2022_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2022_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2022_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2022: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2022_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2022_Outputs = SeriesTree_Cohorts_Utxo_Class_2022_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2022') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2022') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2022') + +class SeriesTree_Cohorts_Utxo_Class_2023_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2023_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2023_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2023_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2023: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2023_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2023_Outputs = SeriesTree_Cohorts_Utxo_Class_2023_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2023') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2023') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2023') + +class SeriesTree_Cohorts_Utxo_Class_2024_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2024_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2024_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2024_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2024: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2024_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2024_Outputs = SeriesTree_Cohorts_Utxo_Class_2024_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2024') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2024') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2024') + +class SeriesTree_Cohorts_Utxo_Class_2025_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2025_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2025_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2025_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2025: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2025_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2025_Outputs = SeriesTree_Cohorts_Utxo_Class_2025_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2025') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2025') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2025') + +class SeriesTree_Cohorts_Utxo_Class_2026_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'class_2026_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'class_2026_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2026_spending_rate') + +class SeriesTree_Cohorts_Utxo_Class_2026: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2026_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Class_2026_Outputs = SeriesTree_Cohorts_Utxo_Class_2026_Outputs(client) + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2026') + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, 'class_2026') + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2026') class SeriesTree_Cohorts_Utxo_Class: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._2009: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2009') - self._2010: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2010') - self._2011: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2011') - self._2012: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2012') - self._2013: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2013') - self._2014: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2014') - self._2015: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2015') - self._2016: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2016') - self._2017: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2017') - self._2018: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2018') - self._2019: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2019') - self._2020: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2020') - self._2021: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2021') - self._2022: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2022') - self._2023: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2023') - self._2024: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2024') - self._2025: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2025') - self._2026: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2026') + self._2009: SeriesTree_Cohorts_Utxo_Class_2009 = SeriesTree_Cohorts_Utxo_Class_2009(client) + self._2010: SeriesTree_Cohorts_Utxo_Class_2010 = SeriesTree_Cohorts_Utxo_Class_2010(client) + self._2011: SeriesTree_Cohorts_Utxo_Class_2011 = SeriesTree_Cohorts_Utxo_Class_2011(client) + self._2012: SeriesTree_Cohorts_Utxo_Class_2012 = SeriesTree_Cohorts_Utxo_Class_2012(client) + self._2013: SeriesTree_Cohorts_Utxo_Class_2013 = SeriesTree_Cohorts_Utxo_Class_2013(client) + self._2014: SeriesTree_Cohorts_Utxo_Class_2014 = SeriesTree_Cohorts_Utxo_Class_2014(client) + self._2015: SeriesTree_Cohorts_Utxo_Class_2015 = SeriesTree_Cohorts_Utxo_Class_2015(client) + self._2016: SeriesTree_Cohorts_Utxo_Class_2016 = SeriesTree_Cohorts_Utxo_Class_2016(client) + self._2017: SeriesTree_Cohorts_Utxo_Class_2017 = SeriesTree_Cohorts_Utxo_Class_2017(client) + self._2018: SeriesTree_Cohorts_Utxo_Class_2018 = SeriesTree_Cohorts_Utxo_Class_2018(client) + self._2019: SeriesTree_Cohorts_Utxo_Class_2019 = SeriesTree_Cohorts_Utxo_Class_2019(client) + self._2020: SeriesTree_Cohorts_Utxo_Class_2020 = SeriesTree_Cohorts_Utxo_Class_2020(client) + self._2021: SeriesTree_Cohorts_Utxo_Class_2021 = SeriesTree_Cohorts_Utxo_Class_2021(client) + self._2022: SeriesTree_Cohorts_Utxo_Class_2022 = SeriesTree_Cohorts_Utxo_Class_2022(client) + self._2023: SeriesTree_Cohorts_Utxo_Class_2023 = SeriesTree_Cohorts_Utxo_Class_2023(client) + self._2024: SeriesTree_Cohorts_Utxo_Class_2024 = SeriesTree_Cohorts_Utxo_Class_2024(client) + self._2025: SeriesTree_Cohorts_Utxo_Class_2025 = SeriesTree_Cohorts_Utxo_Class_2025(client) + self._2026: SeriesTree_Cohorts_Utxo_Class_2026 = SeriesTree_Cohorts_Utxo_Class_2026(client) + +class SeriesTree_Cohorts_Utxo_OverAmount_1sat_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_1sat_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_1sat_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1sat_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_1sat: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_1sat_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_1sat_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_1sat_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_1sat_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_1sat') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_1sat_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_10sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_10sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_10sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_10sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_10sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_10sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_10sats_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_10sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_10sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_10sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_10sats_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_100sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_100sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_100sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_100sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_100sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_100sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_100sats_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_100sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_100sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_100sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_100sats_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_1kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_1k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_1k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1k_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_1kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_1k_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_1kSats_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_1kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_1k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_1k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_1k_sats_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_10kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_10k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_10k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_10k_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_10kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_10k_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_10kSats_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_10kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_10k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_10k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_10k_sats_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_100kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_100k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_100k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_100k_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_100kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_100k_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_100kSats_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_100kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_100k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_100k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_100k_sats_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_1mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_1m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_1m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1m_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_1mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_1m_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_1mSats_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_1mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_1m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_1m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_1m_sats_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_10mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_10m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_10m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_10m_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_10mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_10m_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_10mSats_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_10mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_10m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_10m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_10m_sats_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_1btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_1btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_1btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_1btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_1btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_1btc_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_1btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_1btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_1btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_1btc_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_10btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_10btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_10btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_10btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_10btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_10btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_10btc_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_10btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_10btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_10btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_10btc_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_100btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_100btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_100btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_100btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_100btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_100btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_100btc_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_100btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_100btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_100btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_100btc_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_1kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_1k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_1k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1k_btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_1kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_1k_btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_1kBtc_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_1kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_1k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_1k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_1k_btc_nupl') + +class SeriesTree_Cohorts_Utxo_OverAmount_10kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_10k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_10k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_10k_btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_OverAmount_10kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_10k_btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_OverAmount_10kBtc_Outputs = SeriesTree_Cohorts_Utxo_OverAmount_10kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_10k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_10k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_10k_btc_nupl') class SeriesTree_Cohorts_Utxo_OverAmount: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._1sat: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_1sat') - self._10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_10sats') - self._100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_100sats') - self._1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_1k_sats') - self._10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_10k_sats') - self._100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_100k_sats') - self._1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_1m_sats') - self._10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_10m_sats') - self._1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_1btc') - self._10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_10btc') - self._100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_100btc') - self._1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_1k_btc') - self._10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_10k_btc') + self._1sat: SeriesTree_Cohorts_Utxo_OverAmount_1sat = SeriesTree_Cohorts_Utxo_OverAmount_1sat(client) + self._10sats: SeriesTree_Cohorts_Utxo_OverAmount_10sats = SeriesTree_Cohorts_Utxo_OverAmount_10sats(client) + self._100sats: SeriesTree_Cohorts_Utxo_OverAmount_100sats = SeriesTree_Cohorts_Utxo_OverAmount_100sats(client) + self._1k_sats: SeriesTree_Cohorts_Utxo_OverAmount_1kSats = SeriesTree_Cohorts_Utxo_OverAmount_1kSats(client) + self._10k_sats: SeriesTree_Cohorts_Utxo_OverAmount_10kSats = SeriesTree_Cohorts_Utxo_OverAmount_10kSats(client) + self._100k_sats: SeriesTree_Cohorts_Utxo_OverAmount_100kSats = SeriesTree_Cohorts_Utxo_OverAmount_100kSats(client) + self._1m_sats: SeriesTree_Cohorts_Utxo_OverAmount_1mSats = SeriesTree_Cohorts_Utxo_OverAmount_1mSats(client) + self._10m_sats: SeriesTree_Cohorts_Utxo_OverAmount_10mSats = SeriesTree_Cohorts_Utxo_OverAmount_10mSats(client) + self._1btc: SeriesTree_Cohorts_Utxo_OverAmount_1btc = SeriesTree_Cohorts_Utxo_OverAmount_1btc(client) + self._10btc: SeriesTree_Cohorts_Utxo_OverAmount_10btc = SeriesTree_Cohorts_Utxo_OverAmount_10btc(client) + self._100btc: SeriesTree_Cohorts_Utxo_OverAmount_100btc = SeriesTree_Cohorts_Utxo_OverAmount_100btc(client) + self._1k_btc: SeriesTree_Cohorts_Utxo_OverAmount_1kBtc = SeriesTree_Cohorts_Utxo_OverAmount_1kBtc(client) + self._10k_btc: SeriesTree_Cohorts_Utxo_OverAmount_10kBtc = SeriesTree_Cohorts_Utxo_OverAmount_10kBtc(client) + +class SeriesTree_Cohorts_Utxo_AmountRange_0sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_0sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_0sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_0sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_0sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_0sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_0sats_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_0sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_0sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_0sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_0sats_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_1sat_to_10sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_1sat_to_10sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1sat_to_10sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_1sat_to_10sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_1sat_to_10sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_1sat_to_10sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_1sat_to_10sats_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_10sats_to_100sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_10sats_to_100sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_10sats_to_100sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_10sats_to_100sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_10sats_to_100sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_10sats_to_100sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_10sats_to_100sats_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_100sats_to_1k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_100sats_to_1k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_100sats_to_1k_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_100sats_to_1k_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_100sats_to_1k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_100sats_to_1k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_100sats_to_1k_sats_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_1k_sats_to_10k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_1k_sats_to_10k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1k_sats_to_10k_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_1k_sats_to_10k_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_1k_sats_to_10k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_1k_sats_to_10k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_1k_sats_to_10k_sats_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_10k_sats_to_100k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_10k_sats_to_100k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_10k_sats_to_100k_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_10k_sats_to_100k_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_10k_sats_to_100k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_10k_sats_to_100k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_10k_sats_to_100k_sats_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_100k_sats_to_1m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_100k_sats_to_1m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_100k_sats_to_1m_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_100k_sats_to_1m_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_100k_sats_to_1m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_100k_sats_to_1m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_100k_sats_to_1m_sats_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_1m_sats_to_10m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_1m_sats_to_10m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1m_sats_to_10m_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_1m_sats_to_10m_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_1m_sats_to_10m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_1m_sats_to_10m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_1m_sats_to_10m_sats_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_10m_sats_to_1btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_10m_sats_to_1btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_10m_sats_to_1btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_10m_sats_to_1btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_10m_sats_to_1btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_10m_sats_to_1btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_10m_sats_to_1btc_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_1btc_to_10btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_1btc_to_10btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1btc_to_10btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_1btc_to_10btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_1btc_to_10btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_1btc_to_10btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_1btc_to_10btc_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_10btc_to_100btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_10btc_to_100btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_10btc_to_100btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_10btc_to_100btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_10btc_to_100btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_10btc_to_100btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_10btc_to_100btc_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_100btc_to_1k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_100btc_to_1k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_100btc_to_1k_btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_100btc_to_1k_btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_100btc_to_1k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_100btc_to_1k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_100btc_to_1k_btc_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_1k_btc_to_10k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_1k_btc_to_10k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1k_btc_to_10k_btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_1k_btc_to_10k_btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_1k_btc_to_10k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_1k_btc_to_10k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_1k_btc_to_10k_btc_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_10k_btc_to_100k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_10k_btc_to_100k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_10k_btc_to_100k_btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_10k_btc_to_100k_btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_10k_btc_to_100k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_10k_btc_to_100k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_10k_btc_to_100k_btc_nupl') + +class SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_over_100k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_over_100k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_100k_btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_over_100k_btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc_Outputs = SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_over_100k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_over_100k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_over_100k_btc_nupl') class SeriesTree_Cohorts_Utxo_AmountRange: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._0sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_0sats') - self._1sat_to_10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_1sat_to_10sats') - self._10sats_to_100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_10sats_to_100sats') - self._100sats_to_1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_100sats_to_1k_sats') - self._1k_sats_to_10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_1k_sats_to_10k_sats') - self._10k_sats_to_100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_10k_sats_to_100k_sats') - self._100k_sats_to_1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_100k_sats_to_1m_sats') - self._1m_sats_to_10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_1m_sats_to_10m_sats') - self._10m_sats_to_1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_10m_sats_to_1btc') - self._1btc_to_10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_1btc_to_10btc') - self._10btc_to_100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_10btc_to_100btc') - self._100btc_to_1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_100btc_to_1k_btc') - self._1k_btc_to_10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_1k_btc_to_10k_btc') - self._10k_btc_to_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_10k_btc_to_100k_btc') - self.over_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_100k_btc') + self._0sats: SeriesTree_Cohorts_Utxo_AmountRange_0sats = SeriesTree_Cohorts_Utxo_AmountRange_0sats(client) + self._1sat_to_10sats: SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats = SeriesTree_Cohorts_Utxo_AmountRange_1satTo10sats(client) + self._10sats_to_100sats: SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats = SeriesTree_Cohorts_Utxo_AmountRange_10satsTo100sats(client) + self._100sats_to_1k_sats: SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats = SeriesTree_Cohorts_Utxo_AmountRange_100satsTo1kSats(client) + self._1k_sats_to_10k_sats: SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats = SeriesTree_Cohorts_Utxo_AmountRange_1kSatsTo10kSats(client) + self._10k_sats_to_100k_sats: SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats = SeriesTree_Cohorts_Utxo_AmountRange_10kSatsTo100kSats(client) + self._100k_sats_to_1m_sats: SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats = SeriesTree_Cohorts_Utxo_AmountRange_100kSatsTo1mSats(client) + self._1m_sats_to_10m_sats: SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats = SeriesTree_Cohorts_Utxo_AmountRange_1mSatsTo10mSats(client) + self._10m_sats_to_1btc: SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc = SeriesTree_Cohorts_Utxo_AmountRange_10mSatsTo1btc(client) + self._1btc_to_10btc: SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc = SeriesTree_Cohorts_Utxo_AmountRange_1btcTo10btc(client) + self._10btc_to_100btc: SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc = SeriesTree_Cohorts_Utxo_AmountRange_10btcTo100btc(client) + self._100btc_to_1k_btc: SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc = SeriesTree_Cohorts_Utxo_AmountRange_100btcTo1kBtc(client) + self._1k_btc_to_10k_btc: SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc = SeriesTree_Cohorts_Utxo_AmountRange_1kBtcTo10kBtc(client) + self._10k_btc_to_100k_btc: SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc = SeriesTree_Cohorts_Utxo_AmountRange_10kBtcTo100kBtc(client) + self.over_100k_btc: SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc = SeriesTree_Cohorts_Utxo_AmountRange_Over100kBtc(client) + +class SeriesTree_Cohorts_Utxo_UnderAmount_10sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_10sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_10sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_10sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_10sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_10sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10sats_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_10sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_10sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_10sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_10sats_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_100sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_100sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_100sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_100sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_100sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_100sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100sats_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_100sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_100sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_100sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_100sats_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_1kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_1k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_1k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1k_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_1kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_1k_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1kSats_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_1kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_1k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_1k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_1k_sats_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_10kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_10k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_10k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_10k_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_10kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_10k_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10kSats_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_10kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_10k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_10k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_10k_sats_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_100kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_100k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_100k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_100k_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_100kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_100k_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100kSats_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_100kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_100k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_100k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_100k_sats_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_1mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_1m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_1m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1m_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_1mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_1m_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1mSats_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_1mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_1m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_1m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_1m_sats_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_10mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_10m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_10m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_10m_sats_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_10mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_10m_sats_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10mSats_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_10mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_10m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_10m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_10m_sats_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_1btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_1btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_1btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_1btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_1btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1btc_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_1btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_1btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_1btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_1btc_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_10btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_10btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_10btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_10btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_10btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_10btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10btc_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_10btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_10btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_10btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_10btc_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_100btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_100btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_100btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_100btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_100btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_100btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100btc_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_100btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_100btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_100btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_100btc_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_1k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_1k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1k_btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_1k_btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_1k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_1k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_1k_btc_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_10k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_10k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_10k_btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_10k_btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_10k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_10k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_10k_btc_nupl') + +class SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'utxos_under_100k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'utxos_under_100k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_100k_btc_spending_rate') + +class SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'utxos_under_100k_btc_supply') + self.outputs: SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc_Outputs = SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'utxos_under_100k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'utxos_under_100k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'utxos_under_100k_btc_nupl') class SeriesTree_Cohorts_Utxo_UnderAmount: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_10sats') - self._100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_100sats') - self._1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_1k_sats') - self._10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_10k_sats') - self._100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_100k_sats') - self._1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_1m_sats') - self._10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_10m_sats') - self._1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_1btc') - self._10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_10btc') - self._100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_100btc') - self._1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_1k_btc') - self._10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_10k_btc') - self._100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_100k_btc') + self._10sats: SeriesTree_Cohorts_Utxo_UnderAmount_10sats = SeriesTree_Cohorts_Utxo_UnderAmount_10sats(client) + self._100sats: SeriesTree_Cohorts_Utxo_UnderAmount_100sats = SeriesTree_Cohorts_Utxo_UnderAmount_100sats(client) + self._1k_sats: SeriesTree_Cohorts_Utxo_UnderAmount_1kSats = SeriesTree_Cohorts_Utxo_UnderAmount_1kSats(client) + self._10k_sats: SeriesTree_Cohorts_Utxo_UnderAmount_10kSats = SeriesTree_Cohorts_Utxo_UnderAmount_10kSats(client) + self._100k_sats: SeriesTree_Cohorts_Utxo_UnderAmount_100kSats = SeriesTree_Cohorts_Utxo_UnderAmount_100kSats(client) + self._1m_sats: SeriesTree_Cohorts_Utxo_UnderAmount_1mSats = SeriesTree_Cohorts_Utxo_UnderAmount_1mSats(client) + self._10m_sats: SeriesTree_Cohorts_Utxo_UnderAmount_10mSats = SeriesTree_Cohorts_Utxo_UnderAmount_10mSats(client) + self._1btc: SeriesTree_Cohorts_Utxo_UnderAmount_1btc = SeriesTree_Cohorts_Utxo_UnderAmount_1btc(client) + self._10btc: SeriesTree_Cohorts_Utxo_UnderAmount_10btc = SeriesTree_Cohorts_Utxo_UnderAmount_10btc(client) + self._100btc: SeriesTree_Cohorts_Utxo_UnderAmount_100btc = SeriesTree_Cohorts_Utxo_UnderAmount_100btc(client) + self._1k_btc: SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc = SeriesTree_Cohorts_Utxo_UnderAmount_1kBtc(client) + self._10k_btc: SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc = SeriesTree_Cohorts_Utxo_UnderAmount_10kBtc(client) + self._100k_btc: SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc = SeriesTree_Cohorts_Utxo_UnderAmount_100kBtc(client) + +class SeriesTree_Cohorts_Utxo_Type_P2pk65_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'p2pk65_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'p2pk65_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'p2pk65_spending_rate') + +class SeriesTree_Cohorts_Utxo_Type_P2pk65: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, 'p2pk65_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Type_P2pk65_Outputs = SeriesTree_Cohorts_Utxo_Type_P2pk65_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'p2pk65_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'p2pk65') + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, 'p2pk65') + +class SeriesTree_Cohorts_Utxo_Type_P2pk33_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'p2pk33_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'p2pk33_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'p2pk33_spending_rate') + +class SeriesTree_Cohorts_Utxo_Type_P2pk33: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, 'p2pk33_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Type_P2pk33_Outputs = SeriesTree_Cohorts_Utxo_Type_P2pk33_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'p2pk33_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'p2pk33') + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, 'p2pk33') + +class SeriesTree_Cohorts_Utxo_Type_P2pkh_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'p2pkh_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'p2pkh_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'p2pkh_spending_rate') + +class SeriesTree_Cohorts_Utxo_Type_P2pkh: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, 'p2pkh_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Type_P2pkh_Outputs = SeriesTree_Cohorts_Utxo_Type_P2pkh_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'p2pkh_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'p2pkh') + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, 'p2pkh') + +class SeriesTree_Cohorts_Utxo_Type_P2ms_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'p2ms_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'p2ms_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'p2ms_spending_rate') + +class SeriesTree_Cohorts_Utxo_Type_P2ms: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, 'p2ms_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Type_P2ms_Outputs = SeriesTree_Cohorts_Utxo_Type_P2ms_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'p2ms_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'p2ms') + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, 'p2ms') + +class SeriesTree_Cohorts_Utxo_Type_P2sh_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'p2sh_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'p2sh_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'p2sh_spending_rate') + +class SeriesTree_Cohorts_Utxo_Type_P2sh: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, 'p2sh_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Type_P2sh_Outputs = SeriesTree_Cohorts_Utxo_Type_P2sh_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'p2sh_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'p2sh') + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, 'p2sh') + +class SeriesTree_Cohorts_Utxo_Type_P2wpkh_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'p2wpkh_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'p2wpkh_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'p2wpkh_spending_rate') + +class SeriesTree_Cohorts_Utxo_Type_P2wpkh: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, 'p2wpkh_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Type_P2wpkh_Outputs = SeriesTree_Cohorts_Utxo_Type_P2wpkh_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'p2wpkh_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'p2wpkh') + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, 'p2wpkh') + +class SeriesTree_Cohorts_Utxo_Type_P2wsh_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'p2wsh_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'p2wsh_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'p2wsh_spending_rate') + +class SeriesTree_Cohorts_Utxo_Type_P2wsh: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, 'p2wsh_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Type_P2wsh_Outputs = SeriesTree_Cohorts_Utxo_Type_P2wsh_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'p2wsh_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'p2wsh') + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, 'p2wsh') + +class SeriesTree_Cohorts_Utxo_Type_P2tr_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'p2tr_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'p2tr_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'p2tr_spending_rate') + +class SeriesTree_Cohorts_Utxo_Type_P2tr: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, 'p2tr_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Type_P2tr_Outputs = SeriesTree_Cohorts_Utxo_Type_P2tr_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'p2tr_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'p2tr') + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, 'p2tr') + +class SeriesTree_Cohorts_Utxo_Type_P2a_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'p2a_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'p2a_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'p2a_spending_rate') + +class SeriesTree_Cohorts_Utxo_Type_P2a: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, 'p2a_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Type_P2a_Outputs = SeriesTree_Cohorts_Utxo_Type_P2a_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'p2a_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'p2a') + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, 'p2a') + +class SeriesTree_Cohorts_Utxo_Type_Unknown_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'unknown_outputs_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'unknown_outputs_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'unknown_outputs_spending_rate') + +class SeriesTree_Cohorts_Utxo_Type_Unknown: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, 'unknown_outputs_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Type_Unknown_Outputs = SeriesTree_Cohorts_Utxo_Type_Unknown_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'unknown_outputs_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'unknown_outputs') + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, 'unknown_outputs') + +class SeriesTree_Cohorts_Utxo_Type_Empty_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'empty_outputs_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'empty_outputs_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'empty_outputs_spending_rate') + +class SeriesTree_Cohorts_Utxo_Type_Empty: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, 'empty_outputs_supply') + self.outputs: SeriesTree_Cohorts_Utxo_Type_Empty_Outputs = SeriesTree_Cohorts_Utxo_Type_Empty_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'empty_outputs_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'empty_outputs') + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, 'empty_outputs') class SeriesTree_Cohorts_Utxo_Type: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.p2pk65: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2pk65') - self.p2pk33: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2pk33') - self.p2pkh: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2pkh') - self.p2ms: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2ms') - self.p2sh: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2sh') - self.p2wpkh: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2wpkh') - self.p2wsh: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2wsh') - self.p2tr: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2tr') - self.p2a: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2a') - self.unknown: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'unknown_outputs') - self.empty: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'empty_outputs') + self.p2pk65: SeriesTree_Cohorts_Utxo_Type_P2pk65 = SeriesTree_Cohorts_Utxo_Type_P2pk65(client) + self.p2pk33: SeriesTree_Cohorts_Utxo_Type_P2pk33 = SeriesTree_Cohorts_Utxo_Type_P2pk33(client) + self.p2pkh: SeriesTree_Cohorts_Utxo_Type_P2pkh = SeriesTree_Cohorts_Utxo_Type_P2pkh(client) + self.p2ms: SeriesTree_Cohorts_Utxo_Type_P2ms = SeriesTree_Cohorts_Utxo_Type_P2ms(client) + self.p2sh: SeriesTree_Cohorts_Utxo_Type_P2sh = SeriesTree_Cohorts_Utxo_Type_P2sh(client) + self.p2wpkh: SeriesTree_Cohorts_Utxo_Type_P2wpkh = SeriesTree_Cohorts_Utxo_Type_P2wpkh(client) + self.p2wsh: SeriesTree_Cohorts_Utxo_Type_P2wsh = SeriesTree_Cohorts_Utxo_Type_P2wsh(client) + self.p2tr: SeriesTree_Cohorts_Utxo_Type_P2tr = SeriesTree_Cohorts_Utxo_Type_P2tr(client) + self.p2a: SeriesTree_Cohorts_Utxo_Type_P2a = SeriesTree_Cohorts_Utxo_Type_P2a(client) + self.unknown: SeriesTree_Cohorts_Utxo_Type_Unknown = SeriesTree_Cohorts_Utxo_Type_Unknown(client) + self.empty: SeriesTree_Cohorts_Utxo_Type_Empty = SeriesTree_Cohorts_Utxo_Type_Empty(client) class SeriesTree_Cohorts_Utxo_Profitability_Range: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.over_1000pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_1000pct_in_profit') - self._500pct_to_1000pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_500pct_to_1000pct_in_profit') - self._300pct_to_500pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_300pct_to_500pct_in_profit') - self._200pct_to_300pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_200pct_to_300pct_in_profit') - self._100pct_to_200pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_100pct_to_200pct_in_profit') - self._90pct_to_100pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_90pct_to_100pct_in_profit') - self._80pct_to_90pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_80pct_to_90pct_in_profit') - self._70pct_to_80pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_70pct_to_80pct_in_profit') - self._60pct_to_70pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_60pct_to_70pct_in_profit') - self._50pct_to_60pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_50pct_to_60pct_in_profit') - self._40pct_to_50pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_40pct_to_50pct_in_profit') - self._30pct_to_40pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_30pct_to_40pct_in_profit') - self._20pct_to_30pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_20pct_to_30pct_in_profit') - self._10pct_to_20pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_10pct_to_20pct_in_profit') - self._0pct_to_10pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_0pct_to_10pct_in_profit') - self._0pct_to_10pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_0pct_to_10pct_in_loss') - self._10pct_to_20pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_10pct_to_20pct_in_loss') - self._20pct_to_30pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_20pct_to_30pct_in_loss') - self._30pct_to_40pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_30pct_to_40pct_in_loss') - self._40pct_to_50pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_40pct_to_50pct_in_loss') - self._50pct_to_60pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_50pct_to_60pct_in_loss') - self._60pct_to_70pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_60pct_to_70pct_in_loss') - self._70pct_to_80pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_70pct_to_80pct_in_loss') - self._80pct_to_90pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_80pct_to_90pct_in_loss') - self._90pct_to_100pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_90pct_to_100pct_in_loss') + self.over_1000pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_1000pct_in_profit') + self._500pct_to_1000pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_500pct_to_1000pct_in_profit') + self._300pct_to_500pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_300pct_to_500pct_in_profit') + self._200pct_to_300pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_200pct_to_300pct_in_profit') + self._100pct_to_200pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_100pct_to_200pct_in_profit') + self._90pct_to_100pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_90pct_to_100pct_in_profit') + self._80pct_to_90pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_80pct_to_90pct_in_profit') + self._70pct_to_80pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_70pct_to_80pct_in_profit') + self._60pct_to_70pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_60pct_to_70pct_in_profit') + self._50pct_to_60pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_50pct_to_60pct_in_profit') + self._40pct_to_50pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_40pct_to_50pct_in_profit') + self._30pct_to_40pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_30pct_to_40pct_in_profit') + self._20pct_to_30pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_20pct_to_30pct_in_profit') + self._10pct_to_20pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_10pct_to_20pct_in_profit') + self._0pct_to_10pct_in_profit: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_0pct_to_10pct_in_profit') + self._0pct_to_10pct_in_loss: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_0pct_to_10pct_in_loss') + self._10pct_to_20pct_in_loss: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_10pct_to_20pct_in_loss') + self._20pct_to_30pct_in_loss: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_20pct_to_30pct_in_loss') + self._30pct_to_40pct_in_loss: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_30pct_to_40pct_in_loss') + self._40pct_to_50pct_in_loss: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_40pct_to_50pct_in_loss') + self._50pct_to_60pct_in_loss: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_50pct_to_60pct_in_loss') + self._60pct_to_70pct_in_loss: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_60pct_to_70pct_in_loss') + self._70pct_to_80pct_in_loss: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_70pct_to_80pct_in_loss') + self._80pct_to_90pct_in_loss: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_80pct_to_90pct_in_loss') + self._90pct_to_100pct_in_loss: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_90pct_to_100pct_in_loss') class SeriesTree_Cohorts_Utxo_Profitability_Profit: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.all: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_in_profit') - self._10pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_10pct_in_profit') - self._20pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_20pct_in_profit') - self._30pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_30pct_in_profit') - self._40pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_40pct_in_profit') - self._50pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_50pct_in_profit') - self._60pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_60pct_in_profit') - self._70pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_70pct_in_profit') - self._80pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_80pct_in_profit') - self._90pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_90pct_in_profit') - self._100pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_100pct_in_profit') - self._200pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_200pct_in_profit') - self._300pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_300pct_in_profit') - self._500pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_500pct_in_profit') + self.all: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_in_profit') + self._10pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_10pct_in_profit') + self._20pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_20pct_in_profit') + self._30pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_30pct_in_profit') + self._40pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_40pct_in_profit') + self._50pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_50pct_in_profit') + self._60pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_60pct_in_profit') + self._70pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_70pct_in_profit') + self._80pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_80pct_in_profit') + self._90pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_90pct_in_profit') + self._100pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_100pct_in_profit') + self._200pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_200pct_in_profit') + self._300pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_300pct_in_profit') + self._500pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_500pct_in_profit') class SeriesTree_Cohorts_Utxo_Profitability_Loss: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.all: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_in_loss') - self._10pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_10pct_in_loss') - self._20pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_20pct_in_loss') - self._30pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_30pct_in_loss') - self._40pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_40pct_in_loss') - self._50pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_50pct_in_loss') - self._60pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_60pct_in_loss') - self._70pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_70pct_in_loss') - self._80pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_80pct_in_loss') + self.all: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_in_loss') + self._10pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_10pct_in_loss') + self._20pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_20pct_in_loss') + self._30pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_30pct_in_loss') + self._40pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_40pct_in_loss') + self._50pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_50pct_in_loss') + self._60pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_60pct_in_loss') + self._70pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_70pct_in_loss') + self._80pct: NuplRealizedSupplyUnrealizedPattern = NuplRealizedSupplyUnrealizedPattern(client, 'utxos_over_80pct_in_loss') class SeriesTree_Cohorts_Utxo_Profitability: """Series tree node.""" @@ -5615,61 +7984,840 @@ class SeriesTree_Cohorts_Utxo: self.profitability: SeriesTree_Cohorts_Utxo_Profitability = SeriesTree_Cohorts_Utxo_Profitability(client) self.matured: SeriesTree_Cohorts_Utxo_Matured = SeriesTree_Cohorts_Utxo_Matured(client) +class SeriesTree_Cohorts_Addr_OverAmount_1sat_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_1sat_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_1sat_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_1sat_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_1sat: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_1sat_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_1sat_Outputs = SeriesTree_Cohorts_Addr_OverAmount_1sat_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_1sat_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_1sat') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_1sat_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_1sat_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_10sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_10sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_10sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_10sats_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_10sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_10sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_10sats_Outputs = SeriesTree_Cohorts_Addr_OverAmount_10sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_10sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_10sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_10sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_10sats_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_100sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_100sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_100sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_100sats_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_100sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_100sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_100sats_Outputs = SeriesTree_Cohorts_Addr_OverAmount_100sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_100sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_100sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_100sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_100sats_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_1kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_1k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_1k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_1k_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_1kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_1k_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_1kSats_Outputs = SeriesTree_Cohorts_Addr_OverAmount_1kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_1k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_1k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_1k_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_1k_sats_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_10kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_10k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_10k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_10k_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_10kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_10k_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_10kSats_Outputs = SeriesTree_Cohorts_Addr_OverAmount_10kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_10k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_10k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_10k_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_10k_sats_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_100kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_100k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_100k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_100k_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_100kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_100k_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_100kSats_Outputs = SeriesTree_Cohorts_Addr_OverAmount_100kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_100k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_100k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_100k_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_100k_sats_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_1mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_1m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_1m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_1m_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_1mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_1m_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_1mSats_Outputs = SeriesTree_Cohorts_Addr_OverAmount_1mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_1m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_1m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_1m_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_1m_sats_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_10mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_10m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_10m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_10m_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_10mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_10m_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_10mSats_Outputs = SeriesTree_Cohorts_Addr_OverAmount_10mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_10m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_10m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_10m_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_10m_sats_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_1btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_1btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_1btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_1btc_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_1btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_1btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_1btc_Outputs = SeriesTree_Cohorts_Addr_OverAmount_1btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_1btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_1btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_1btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_1btc_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_10btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_10btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_10btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_10btc_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_10btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_10btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_10btc_Outputs = SeriesTree_Cohorts_Addr_OverAmount_10btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_10btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_10btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_10btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_10btc_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_100btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_100btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_100btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_100btc_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_100btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_100btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_100btc_Outputs = SeriesTree_Cohorts_Addr_OverAmount_100btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_100btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_100btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_100btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_100btc_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_1kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_1k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_1k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_1k_btc_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_1kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_1k_btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_1kBtc_Outputs = SeriesTree_Cohorts_Addr_OverAmount_1kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_1k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_1k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_1k_btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_1k_btc_addr_count') + +class SeriesTree_Cohorts_Addr_OverAmount_10kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_10k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_10k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_10k_btc_spending_rate') + +class SeriesTree_Cohorts_Addr_OverAmount_10kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_10k_btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_OverAmount_10kBtc_Outputs = SeriesTree_Cohorts_Addr_OverAmount_10kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_10k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_10k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_10k_btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_10k_btc_addr_count') + class SeriesTree_Cohorts_Addr_OverAmount: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._1sat: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1sat') - self._10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10sats') - self._100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100sats') - self._1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1k_sats') - self._10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10k_sats') - self._100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100k_sats') - self._1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1m_sats') - self._10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10m_sats') - self._1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1btc') - self._10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10btc') - self._100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100btc') - self._1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1k_btc') - self._10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10k_btc') + self._1sat: SeriesTree_Cohorts_Addr_OverAmount_1sat = SeriesTree_Cohorts_Addr_OverAmount_1sat(client) + self._10sats: SeriesTree_Cohorts_Addr_OverAmount_10sats = SeriesTree_Cohorts_Addr_OverAmount_10sats(client) + self._100sats: SeriesTree_Cohorts_Addr_OverAmount_100sats = SeriesTree_Cohorts_Addr_OverAmount_100sats(client) + self._1k_sats: SeriesTree_Cohorts_Addr_OverAmount_1kSats = SeriesTree_Cohorts_Addr_OverAmount_1kSats(client) + self._10k_sats: SeriesTree_Cohorts_Addr_OverAmount_10kSats = SeriesTree_Cohorts_Addr_OverAmount_10kSats(client) + self._100k_sats: SeriesTree_Cohorts_Addr_OverAmount_100kSats = SeriesTree_Cohorts_Addr_OverAmount_100kSats(client) + self._1m_sats: SeriesTree_Cohorts_Addr_OverAmount_1mSats = SeriesTree_Cohorts_Addr_OverAmount_1mSats(client) + self._10m_sats: SeriesTree_Cohorts_Addr_OverAmount_10mSats = SeriesTree_Cohorts_Addr_OverAmount_10mSats(client) + self._1btc: SeriesTree_Cohorts_Addr_OverAmount_1btc = SeriesTree_Cohorts_Addr_OverAmount_1btc(client) + self._10btc: SeriesTree_Cohorts_Addr_OverAmount_10btc = SeriesTree_Cohorts_Addr_OverAmount_10btc(client) + self._100btc: SeriesTree_Cohorts_Addr_OverAmount_100btc = SeriesTree_Cohorts_Addr_OverAmount_100btc(client) + self._1k_btc: SeriesTree_Cohorts_Addr_OverAmount_1kBtc = SeriesTree_Cohorts_Addr_OverAmount_1kBtc(client) + self._10k_btc: SeriesTree_Cohorts_Addr_OverAmount_10kBtc = SeriesTree_Cohorts_Addr_OverAmount_10kBtc(client) + +class SeriesTree_Cohorts_Addr_AmountRange_0sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_0sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_0sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_0sats_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_0sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_0sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_0sats_Outputs = SeriesTree_Cohorts_Addr_AmountRange_0sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_0sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_0sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_0sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_0sats_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_1sat_to_10sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_1sat_to_10sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_1sat_to_10sats_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_1sat_to_10sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats_Outputs = SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_1sat_to_10sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_1sat_to_10sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_1sat_to_10sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_1sat_to_10sats_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_10sats_to_100sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_10sats_to_100sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_10sats_to_100sats_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_10sats_to_100sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats_Outputs = SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_10sats_to_100sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_10sats_to_100sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_10sats_to_100sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_10sats_to_100sats_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_100sats_to_1k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_100sats_to_1k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_100sats_to_1k_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_100sats_to_1k_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats_Outputs = SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_100sats_to_1k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_100sats_to_1k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_100sats_to_1k_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_100sats_to_1k_sats_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_1k_sats_to_10k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_1k_sats_to_10k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_1k_sats_to_10k_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_1k_sats_to_10k_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats_Outputs = SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_1k_sats_to_10k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_1k_sats_to_10k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_1k_sats_to_10k_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_1k_sats_to_10k_sats_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_10k_sats_to_100k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_10k_sats_to_100k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_10k_sats_to_100k_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_10k_sats_to_100k_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats_Outputs = SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_10k_sats_to_100k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_10k_sats_to_100k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_10k_sats_to_100k_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_10k_sats_to_100k_sats_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_100k_sats_to_1m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_100k_sats_to_1m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_100k_sats_to_1m_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_100k_sats_to_1m_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats_Outputs = SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_100k_sats_to_1m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_100k_sats_to_1m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_100k_sats_to_1m_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_100k_sats_to_1m_sats_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_1m_sats_to_10m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_1m_sats_to_10m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_1m_sats_to_10m_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_1m_sats_to_10m_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats_Outputs = SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_1m_sats_to_10m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_1m_sats_to_10m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_1m_sats_to_10m_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_1m_sats_to_10m_sats_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_10m_sats_to_1btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_10m_sats_to_1btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_10m_sats_to_1btc_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_10m_sats_to_1btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc_Outputs = SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_10m_sats_to_1btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_10m_sats_to_1btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_10m_sats_to_1btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_10m_sats_to_1btc_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_1btc_to_10btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_1btc_to_10btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_1btc_to_10btc_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_1btc_to_10btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc_Outputs = SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_1btc_to_10btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_1btc_to_10btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_1btc_to_10btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_1btc_to_10btc_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_10btc_to_100btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_10btc_to_100btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_10btc_to_100btc_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_10btc_to_100btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc_Outputs = SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_10btc_to_100btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_10btc_to_100btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_10btc_to_100btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_10btc_to_100btc_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_100btc_to_1k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_100btc_to_1k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_100btc_to_1k_btc_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_100btc_to_1k_btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc_Outputs = SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_100btc_to_1k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_100btc_to_1k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_100btc_to_1k_btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_100btc_to_1k_btc_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_1k_btc_to_10k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_1k_btc_to_10k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_1k_btc_to_10k_btc_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_1k_btc_to_10k_btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc_Outputs = SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_1k_btc_to_10k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_1k_btc_to_10k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_1k_btc_to_10k_btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_1k_btc_to_10k_btc_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_10k_btc_to_100k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_10k_btc_to_100k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_10k_btc_to_100k_btc_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_10k_btc_to_100k_btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc_Outputs = SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_10k_btc_to_100k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_10k_btc_to_100k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_10k_btc_to_100k_btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_10k_btc_to_100k_btc_addr_count') + +class SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_100k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_over_100k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_over_100k_btc_spending_rate') + +class SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_over_100k_btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc_Outputs = SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_over_100k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_over_100k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_over_100k_btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_over_100k_btc_addr_count') class SeriesTree_Cohorts_Addr_AmountRange: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._0sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_0sats') - self._1sat_to_10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1sat_to_10sats') - self._10sats_to_100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10sats_to_100sats') - self._100sats_to_1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100sats_to_1k_sats') - self._1k_sats_to_10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1k_sats_to_10k_sats') - self._10k_sats_to_100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10k_sats_to_100k_sats') - self._100k_sats_to_1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100k_sats_to_1m_sats') - self._1m_sats_to_10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1m_sats_to_10m_sats') - self._10m_sats_to_1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10m_sats_to_1btc') - self._1btc_to_10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1btc_to_10btc') - self._10btc_to_100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10btc_to_100btc') - self._100btc_to_1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100btc_to_1k_btc') - self._1k_btc_to_10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1k_btc_to_10k_btc') - self._10k_btc_to_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10k_btc_to_100k_btc') - self.over_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100k_btc') + self._0sats: SeriesTree_Cohorts_Addr_AmountRange_0sats = SeriesTree_Cohorts_Addr_AmountRange_0sats(client) + self._1sat_to_10sats: SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats = SeriesTree_Cohorts_Addr_AmountRange_1satTo10sats(client) + self._10sats_to_100sats: SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats = SeriesTree_Cohorts_Addr_AmountRange_10satsTo100sats(client) + self._100sats_to_1k_sats: SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats = SeriesTree_Cohorts_Addr_AmountRange_100satsTo1kSats(client) + self._1k_sats_to_10k_sats: SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats = SeriesTree_Cohorts_Addr_AmountRange_1kSatsTo10kSats(client) + self._10k_sats_to_100k_sats: SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats = SeriesTree_Cohorts_Addr_AmountRange_10kSatsTo100kSats(client) + self._100k_sats_to_1m_sats: SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats = SeriesTree_Cohorts_Addr_AmountRange_100kSatsTo1mSats(client) + self._1m_sats_to_10m_sats: SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats = SeriesTree_Cohorts_Addr_AmountRange_1mSatsTo10mSats(client) + self._10m_sats_to_1btc: SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc = SeriesTree_Cohorts_Addr_AmountRange_10mSatsTo1btc(client) + self._1btc_to_10btc: SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc = SeriesTree_Cohorts_Addr_AmountRange_1btcTo10btc(client) + self._10btc_to_100btc: SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc = SeriesTree_Cohorts_Addr_AmountRange_10btcTo100btc(client) + self._100btc_to_1k_btc: SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc = SeriesTree_Cohorts_Addr_AmountRange_100btcTo1kBtc(client) + self._1k_btc_to_10k_btc: SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc = SeriesTree_Cohorts_Addr_AmountRange_1kBtcTo10kBtc(client) + self._10k_btc_to_100k_btc: SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc = SeriesTree_Cohorts_Addr_AmountRange_10kBtcTo100kBtc(client) + self.over_100k_btc: SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc = SeriesTree_Cohorts_Addr_AmountRange_Over100kBtc(client) + +class SeriesTree_Cohorts_Addr_UnderAmount_10sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_10sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_10sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_10sats_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_10sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_10sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_10sats_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_10sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_10sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_10sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_10sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_10sats_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_100sats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_100sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_100sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_100sats_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_100sats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_100sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_100sats_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_100sats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_100sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_100sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_100sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_100sats_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_1kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_1k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_1k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_1k_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_1kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_1k_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_1kSats_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_1kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_1k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_1k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_1k_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_1k_sats_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_10kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_10k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_10k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_10k_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_10kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_10k_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_10kSats_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_10kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_10k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_10k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_10k_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_10k_sats_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_100kSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_100k_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_100k_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_100k_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_100kSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_100k_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_100kSats_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_100kSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_100k_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_100k_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_100k_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_100k_sats_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_1mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_1m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_1m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_1m_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_1mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_1m_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_1mSats_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_1mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_1m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_1m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_1m_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_1m_sats_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_10mSats_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_10m_sats_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_10m_sats_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_10m_sats_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_10mSats: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_10m_sats_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_10mSats_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_10mSats_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_10m_sats_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_10m_sats') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_10m_sats_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_10m_sats_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_1btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_1btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_1btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_1btc_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_1btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_1btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_1btc_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_1btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_1btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_1btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_1btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_1btc_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_10btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_10btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_10btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_10btc_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_10btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_10btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_10btc_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_10btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_10btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_10btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_10btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_10btc_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_100btc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_100btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_100btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_100btc_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_100btc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_100btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_100btc_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_100btc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_100btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_100btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_100btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_100btc_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_1kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_1k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_1k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_1k_btc_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_1kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_1k_btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_1kBtc_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_1kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_1k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_1k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_1k_btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_1k_btc_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_10kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_10k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_10k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_10k_btc_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_10kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_10k_btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_10kBtc_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_10kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_10k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_10k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_10k_btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_10k_btc_addr_count') + +class SeriesTree_Cohorts_Addr_UnderAmount_100kBtc_Outputs: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_100k_btc_utxo_count') + self.spent_count: AverageBlockCumulativeSumPattern2 = AverageBlockCumulativeSumPattern2(client, 'addrs_under_100k_btc_spent_utxo_count') + self.spending_rate: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'addrs_under_100k_btc_spending_rate') + +class SeriesTree_Cohorts_Addr_UnderAmount_100kBtc: + """Series tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, 'addrs_under_100k_btc_supply') + self.outputs: SeriesTree_Cohorts_Addr_UnderAmount_100kBtc_Outputs = SeriesTree_Cohorts_Addr_UnderAmount_100kBtc_Outputs(client) + self.activity: TransferPattern = TransferPattern(client, 'addrs_under_100k_btc_transfer_volume') + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, 'addrs_under_100k_btc') + self.unrealized: NuplPattern = NuplPattern(client, 'addrs_under_100k_btc_nupl') + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, 'addrs_under_100k_btc_addr_count') class SeriesTree_Cohorts_Addr_UnderAmount: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10sats') - self._100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100sats') - self._1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1k_sats') - self._10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10k_sats') - self._100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100k_sats') - self._1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1m_sats') - self._10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10m_sats') - self._1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1btc') - self._10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10btc') - self._100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100btc') - self._1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1k_btc') - self._10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10k_btc') - self._100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100k_btc') + self._10sats: SeriesTree_Cohorts_Addr_UnderAmount_10sats = SeriesTree_Cohorts_Addr_UnderAmount_10sats(client) + self._100sats: SeriesTree_Cohorts_Addr_UnderAmount_100sats = SeriesTree_Cohorts_Addr_UnderAmount_100sats(client) + self._1k_sats: SeriesTree_Cohorts_Addr_UnderAmount_1kSats = SeriesTree_Cohorts_Addr_UnderAmount_1kSats(client) + self._10k_sats: SeriesTree_Cohorts_Addr_UnderAmount_10kSats = SeriesTree_Cohorts_Addr_UnderAmount_10kSats(client) + self._100k_sats: SeriesTree_Cohorts_Addr_UnderAmount_100kSats = SeriesTree_Cohorts_Addr_UnderAmount_100kSats(client) + self._1m_sats: SeriesTree_Cohorts_Addr_UnderAmount_1mSats = SeriesTree_Cohorts_Addr_UnderAmount_1mSats(client) + self._10m_sats: SeriesTree_Cohorts_Addr_UnderAmount_10mSats = SeriesTree_Cohorts_Addr_UnderAmount_10mSats(client) + self._1btc: SeriesTree_Cohorts_Addr_UnderAmount_1btc = SeriesTree_Cohorts_Addr_UnderAmount_1btc(client) + self._10btc: SeriesTree_Cohorts_Addr_UnderAmount_10btc = SeriesTree_Cohorts_Addr_UnderAmount_10btc(client) + self._100btc: SeriesTree_Cohorts_Addr_UnderAmount_100btc = SeriesTree_Cohorts_Addr_UnderAmount_100btc(client) + self._1k_btc: SeriesTree_Cohorts_Addr_UnderAmount_1kBtc = SeriesTree_Cohorts_Addr_UnderAmount_1kBtc(client) + self._10k_btc: SeriesTree_Cohorts_Addr_UnderAmount_10kBtc = SeriesTree_Cohorts_Addr_UnderAmount_10kBtc(client) + self._100k_btc: SeriesTree_Cohorts_Addr_UnderAmount_100kBtc = SeriesTree_Cohorts_Addr_UnderAmount_100kBtc(client) class SeriesTree_Cohorts_Addr: """Series tree node.""" diff --git a/website/.gitignore b/website/.gitignore index 301552ca6..ab66c8faa 100644 --- a/website/.gitignore +++ b/website/.gitignore @@ -2,3 +2,4 @@ !scripts/**/_*.js *_old.js _*.js +dump-* diff --git a/website/scripts/options/distribution/activity.js b/website/scripts/options/distribution/activity.js index 7bdf15041..675f2e257 100644 --- a/website/scripts/options/distribution/activity.js +++ b/website/scripts/options/distribution/activity.js @@ -50,7 +50,7 @@ function volumeTree(tv, color, title) { tree: [ ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Transfer Volume Profitability (${w.title})`), + title: title(`${w.title} Transfer Volume Profitability`), bottom: [ ...satsBtcUsd({ pattern: tv.inProfit.sum[w.key], @@ -157,7 +157,7 @@ function singleRollingSoprTree(ratio, title, prefix = "") { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${prefix}SOPR (${w.title})`), + title: title(`${w.title} ${prefix}SOPR`.trim()), bottom: [ baseline({ series: ratio[w.key], @@ -228,7 +228,7 @@ function singleSellSideRiskTree(sellSideRisk, title) { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Sell Side Risk (${w.title})`), + title: title(`${w.title} Sell Side Risk`), bottom: percentRatio({ pattern: sellSideRisk[w.key], name: "Risk", @@ -509,7 +509,7 @@ function groupedVolumeFolderWithAdjusted(list, all, title, getTransferVolume, ge function groupedSoprCharts(list, all, getRatio, title, prefix = "") { return ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${prefix}SOPR (${w.title})`), + title: title(`${w.title} ${prefix}SOPR`.trim()), bottom: mapCohortsWithAll(list, all, (c) => baseline({ series: getRatio(c)[w.key], @@ -653,7 +653,7 @@ function groupedActivitySharedItems(list, all, title) { name: "Dormancy", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Dormancy (${w.title})`), + title: title(`${w.title} Dormancy`), bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => line({ series: tree.activity.dormancy[w.key], @@ -668,7 +668,7 @@ function groupedActivitySharedItems(list, all, title) { name: "Sell Side Risk", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Sell Side Risk (${w.title})`), + title: title(`${w.title} Sell Side Risk`), bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => line({ series: tree.realized.sellSideRiskRatio[w.key].ratio, @@ -711,7 +711,7 @@ export function createGroupedActivitySectionWithActivity({ list, all, title }) { tree: [ ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Coindays Destroyed (${w.title})`), + title: title(`${w.title} Coindays Destroyed`), bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => line({ series: tree.activity.coindaysDestroyed.sum[w.key], diff --git a/website/scripts/options/distribution/holdings.js b/website/scripts/options/distribution/holdings.js index f980d092b..73f5f753d 100644 --- a/website/scripts/options/distribution/holdings.js +++ b/website/scripts/options/distribution/holdings.js @@ -108,7 +108,7 @@ function groupedDeltaItems(list, all, getDelta, unit, title, name) { name: "Change", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${name} Change (${w.title})`), + title: title(`${w.title} ${name} Change`), bottom: mapCohortsWithAll(list, all, (c) => baseline({ series: getDelta(c).absolute[w.key], @@ -123,7 +123,7 @@ function groupedDeltaItems(list, all, getDelta, unit, title, name) { name: "Growth Rate", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${name} Growth Rate (${w.title})`), + title: title(`${w.title} ${name} Growth Rate`), bottom: flatMapCohortsWithAll(list, all, (c) => percentRatioBaseline({ pattern: getDelta(c).rate[w.key], diff --git a/website/scripts/options/distribution/index.js b/website/scripts/options/distribution/index.js index c677ecdac..0d3c1eb99 100644 --- a/website/scripts/options/distribution/index.js +++ b/website/scripts/options/distribution/index.js @@ -403,7 +403,7 @@ export function createGroupedCohortFolderAgeRangeWithMatured({ name: "Matured", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Matured Supply (${w.title})`), + title: title(`${w.title} Matured Supply`), bottom: list.flatMap((cohort) => satsBtcUsd({ pattern: cohort.matured.sum[w.key], @@ -617,7 +617,7 @@ function groupedBucketCharts(list, groupTitle) { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Supply Change (${w.title})`), + title: title(`${w.title} Supply Change`), bottom: list.map(({ name, color, pattern }) => baseline({ series: pattern.supply.all.delta.absolute[w.key], @@ -647,7 +647,7 @@ function groupedBucketCharts(list, groupTitle) { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Supply Growth Rate (${w.title})`), + title: title(`${w.title} Supply Growth Rate`), bottom: list.flatMap(({ name, color, pattern }) => percentRatio({ pattern: pattern.supply.all.delta.rate[w.key], diff --git a/website/scripts/options/distribution/profitability.js b/website/scripts/options/distribution/profitability.js index 006692646..018999f85 100644 --- a/website/scripts/options/distribution/profitability.js +++ b/website/scripts/options/distribution/profitability.js @@ -315,7 +315,7 @@ function realizedMetricFolder({ pattern, metricTitle, color, title }) { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Realized ${metricTitle} (${w.title})`), + title: title(`${w.title} Realized ${metricTitle}`), bottom: [ line({ series: pattern.sum[w.key].usd, @@ -366,7 +366,7 @@ function realizedNetFolder({ netPnl, title, extraChange = [] }) { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Net Realized P&L (${w.title})`), + title: title(`${w.title} Net Realized P&L`), bottom: [ baseline({ series: netPnl.sum[w.key].usd, @@ -433,7 +433,7 @@ function realizedOverviewFolder({ name: "Overview", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Realized P&L (${w.title})`), + title: title(`${w.title} Realized P&L`), bottom: [ baseline({ series: netPnl.sum[w.key].usd, @@ -576,7 +576,7 @@ function realizedSubfolderFull(r, title) { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Realized P/L Ratio (${w.title})`), + title: title(`${w.title} Realized P/L Ratio`), bottom: [ baseline({ series: r.profitToLossRatio[w.key], @@ -605,7 +605,7 @@ function realizedSubfolderFull(r, title) { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Peak Regret (${w.title})`), + title: title(`${w.title} Peak Regret`), bottom: [ line({ series: r.peakRegret.sum[w.key].usd, @@ -937,7 +937,7 @@ function groupedRealizedNetPnlDeltaItems(list, all, title) { name: "Change", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Net Realized P&L Change (${w.title})`), + title: title(`${w.title} Net Realized P&L Change`), bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => baseline({ series: tree.realized.netPnl.delta.absolute[w.key].usd, @@ -952,7 +952,7 @@ function groupedRealizedNetPnlDeltaItems(list, all, title) { name: "Growth Rate", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Net Realized P&L Growth Rate (${w.title})`), + title: title(`${w.title} Net Realized P&L Growth Rate`), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => percentRatioBaseline({ pattern: tree.realized.netPnl.delta.rate[w.key], @@ -1005,7 +1005,7 @@ function groupedRealizedSubfolderFull(list, all, title) { name: "P/L Ratio", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Realized P/L Ratio (${w.title})`), + title: title(`${w.title} Realized P/L Ratio`), bottom: mapCohortsWithAll(list, all, (c) => baseline({ series: c.tree.realized.profitToLossRatio[w.key], diff --git a/website/scripts/options/distribution/valuation.js b/website/scripts/options/distribution/valuation.js index ac73f98d8..e2ee8a15c 100644 --- a/website/scripts/options/distribution/valuation.js +++ b/website/scripts/options/distribution/valuation.js @@ -44,7 +44,7 @@ function groupedDeltaAndMvrv(list, all, title) { name: "Change", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Realized Cap Change (${w.title})`), + title: title(`${w.title} Realized Cap Change`), bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => baseline({ series: tree.realized.cap.delta.absolute[w.key].usd, name, color, unit: Unit.usd }), ), @@ -54,7 +54,7 @@ function groupedDeltaAndMvrv(list, all, title) { name: "Growth Rate", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`Realized Cap Growth Rate (${w.title})`), + title: title(`${w.title} Realized Cap Growth Rate`), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => percentRatioBaseline({ pattern: tree.realized.cap.delta.rate[w.key], name, color }), ), diff --git a/website/scripts/options/market.js b/website/scripts/options/market.js index cd297c0de..bb29203e3 100644 --- a/website/scripts/options/market.js +++ b/website/scripts/options/market.js @@ -588,7 +588,7 @@ export function createMarketSection() { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `Capitalization Growth Rate Spread (${w.title})`, + title: `${w.title} Capitalization Growth Rate Spread`, bottom: [ baseline({ series: supply.marketMinusRealizedCapGrowthRate[w.key], @@ -676,7 +676,7 @@ export function createMarketSection() { const rsi = technical.rsi[w.key]; return { name: w.name, - title: `RSI (${w.title})`, + title: `${w.title} RSI`, bottom: [ ...indexRatio({ pattern: rsi.rsi, @@ -699,7 +699,7 @@ export function createMarketSection() { const rsi = technical.rsi[w.key]; return { name: w.name, - title: `Stochastic RSI (${w.title})`, + title: `${w.title} Stochastic RSI`, bottom: [ ...indexRatio({ pattern: rsi.stochRsiK, @@ -738,7 +738,7 @@ export function createMarketSection() { }, ...ROLLING_WINDOWS_TO_1M.map((w) => ({ name: w.name, - title: `MACD (${w.title})`, + title: `${w.title} MACD`, bottom: [ line({ series: technical.macd[w.key].line, @@ -785,7 +785,7 @@ export function createMarketSection() { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `Volatility Index (${w.title})`, + title: `${w.title} Volatility Index`, bottom: [ line({ series: volatility[w.key], diff --git a/website/scripts/options/mining.js b/website/scripts/options/mining.js index 245ed2655..b70d08cec 100644 --- a/website/scripts/options/mining.js +++ b/website/scripts/options/mining.js @@ -97,7 +97,7 @@ export function createMiningSection() { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${w.name} ${metric}`), + title: title(`${w.title} ${metric}`), bottom: percentRatio({ pattern: dominance[w.key], name: w.name, color: w.color }), })), { @@ -177,7 +177,7 @@ export function createMiningSection() { name: "Dominance", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `Dominance: ${groupTitle} ${w.title}`, + title: formatCohortTitle(groupTitle)(`${w.title} Dominance`), bottom: poolList.flatMap((p, i) => percentRatio({ pattern: p.pool.dominance[w.key], @@ -191,7 +191,7 @@ export function createMiningSection() { name: "Blocks Mined", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `Blocks Mined: ${groupTitle} ${w.title} Sum`, + title: formatCohortTitle(groupTitle)(`${w.title} Blocks Mined`), bottom: poolList.map((p, i) => line({ series: p.pool.blocksMined.sum[w.key], @@ -299,7 +299,7 @@ export function createMiningSection() { tree: [ ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `Revenue ${w.title} Averages`, + title: `${w.title} Revenue`, bottom: revenueRollingBtcSatsUsd({ coinbase: mining.rewards.coinbase.average[w.key], subsidy: mining.rewards.subsidy.average[w.key], @@ -341,7 +341,7 @@ export function createMiningSection() { name: "Distributions", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `Fee Revenue per Block ${w.title} Distribution`, + title: `${w.title} Fee Revenue per Block Distribution`, bottom: distributionBtcSatsUsd(statsAtWindow(mining.rewards.fees, w.key)), })), }, @@ -352,7 +352,7 @@ export function createMiningSection() { tree: [ ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `Revenue Dominance ${w.title}`, + title: `${w.title} Revenue Dominance`, bottom: [ ...percentRatio({ pattern: mining.rewards.subsidy.dominance[w.key], name: "Subsidy", color: colors.mining.subsidy }), ...percentRatio({ pattern: mining.rewards.fees.dominance[w.key], name: "Fees", color: colors.mining.fee }), @@ -372,7 +372,7 @@ export function createMiningSection() { name: "Fee Multiple", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `Fee-to-Subsidy Ratio ${w.title}`, + title: `${w.title} Fee-to-Subsidy Ratio`, bottom: [line({ series: mining.rewards.fees.toSubsidyRatio[w.key].ratio, name: "Ratio", color: colors.mining.fee, unit: Unit.ratio })], })), }, diff --git a/website/scripts/options/network.js b/website/scripts/options/network.js index 116ca92da..4f4ae34a4 100644 --- a/website/scripts/options/network.js +++ b/website/scripts/options/network.js @@ -162,7 +162,7 @@ export function createNetworkSection() { name: "Compare", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `${titlePrefix}Active Addresses ${w.title} Average`, + title: `${w.title} ${titlePrefix}Active Addresses`, bottom: activityTypes.map((t, i) => line({ series: addrs.activity[key][t.key][w.key], @@ -213,7 +213,7 @@ export function createNetworkSection() { tree: [ ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `${groupName} Output Count ${w.title} Sum`, + title: `${w.title} ${groupName} Output Count`, bottom: types.map((t) => line({ series: /** @type {CountPattern} */ ( @@ -402,7 +402,7 @@ export function createNetworkSection() { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `Block Count ${w.title}`, + title: `${w.title} Block Count`, bottom: [ line({ series: blocks.count.total.sum[w.key], @@ -531,7 +531,7 @@ export function createNetworkSection() { name: "Throughput", tree: ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `Throughput ${w.title} Average`, + title: `${w.title} Throughput`, bottom: [ line({ series: transactions.volume.txPerSec[w.key], @@ -597,7 +597,7 @@ export function createNetworkSection() { tree: [ ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: `Output Count by Script Type ${w.title} Sum`, + title: `${w.title} Output Count by Script Type`, bottom: scriptTypes.map((t) => line({ series: /** @type {CountPattern} */ ( diff --git a/website/scripts/options/series.js b/website/scripts/options/series.js index e9fa0d293..d671e9002 100644 --- a/website/scripts/options/series.js +++ b/website/scripts/options/series.js @@ -519,7 +519,7 @@ export function sumsAndAveragesCumulativeWith({ }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${w.name} ${metric}`), + title: title(`${w.title} ${metric}`), bottom: [ ...series({ pattern: sum[w.key], name: "Sum", color: w.color }), ...series({ @@ -551,7 +551,7 @@ export function sumsAndAveragesCumulativeWith({ export function sumsAndAveragesArray({ sum, average, title = (s) => s, metric, unit }) { return ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${w.name} ${metric}`), + title: title(`${w.title} ${metric}`), bottom: [ line({ series: sum[w.key], name: "Sum", color: w.color, unit }), line({ @@ -611,7 +611,7 @@ export function sumsTreeBaseline({ windows, title = (s) => s, metric, unit }) { return rollingWindowsTreeBaseline({ windows, title: title(metric), - windowTitle: (w) => title(`${w.name} ${metric}`), + windowTitle: (w) => title(`${w.title} ${metric}`), unit, name: "Sums", }); @@ -637,7 +637,7 @@ export function averagesArray({ windows, title = (s) => s, metric, unit }) { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${w.name} ${metric}`), + title: title(`${w.title} ${metric}`), bottom: [ line({ series: windows[w.key], name: w.name, color: w.color, unit }), ], @@ -673,7 +673,7 @@ export function distributionWindowsTree({ pattern, base, title = (s) => s, metri }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${w.name} ${metric} Distribution`), + title: title(`${w.title} ${metric} Distribution`), bottom: [ ...(base ? [line({ series: base, name: "base", unit })] : []), ...percentileSeries({ pattern: statsAtWindow(pattern, w.key), unit }), @@ -870,7 +870,7 @@ export function rollingPercentRatioTree({ }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${w.name} ${metric}`), + title: title(`${w.title} ${metric}`), bottom: percentRatioBaseline({ pattern: windows[w.key], name: w.name }), })), ], @@ -907,7 +907,7 @@ export function deltaTree({ delta, title = (s) => s, metric, unit, extract }) { }, ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${w.name} ${metric} Change`), + title: title(`${w.title} ${metric} Change`), bottom: [ baseline({ series: extract(delta.absolute[w.key]), @@ -1106,7 +1106,7 @@ export function chartsFromCountEntries({ entries, title = (s) => s, metric, unit return [ ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${w.name} ${metric}`), + title: title(`${w.title} ${metric}`), bottom: items.map((e) => line({ series: e.sum[w.key], name: e.name, color: e.color, unit }), ), @@ -1134,7 +1134,7 @@ export function multiSeriesTree({ entries, title = (s) => s, metric, unit }) { return [ ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${w.name} ${metric}`), + title: title(`${w.title} ${metric}`), bottom: entries.map((e) => line({ series: e.average[w.key], name: e.name, color: e.color, unit }), ), diff --git a/website/scripts/options/shared.js b/website/scripts/options/shared.js index d5cd7b4fa..7762b3888 100644 --- a/website/scripts/options/shared.js +++ b/website/scripts/options/shared.js @@ -775,7 +775,7 @@ export function groupedWindowsCumulative({ list, all, title, metricTitle, getWin return [ ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${metricTitle} (${w.title})`), + title: title(`${w.title} ${metricTitle}`), bottom: mapCohortsWithAll(list, all, (c) => seriesFn({ series: getWindowSeries(c, w.key), name: c.name, color: c.color, unit }), ), @@ -827,7 +827,7 @@ export function groupedWindowsCumulativeSatsBtcUsd({ list, all, title, metricTit return [ ...ROLLING_WINDOWS.map((w) => ({ name: w.name, - title: title(`${metricTitle} (${w.title})`), + title: title(`${w.title} ${metricTitle}`), bottom: flatMapCohortsWithAll(list, all, (c) => satsBtcUsd({ pattern: getMetric(c).sum[w.key], name: c.name, color: c.color }), ),