mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-04-24 06:39:58 -07:00
global: snapshot
This commit is contained in:
@@ -1931,32 +1931,6 @@ impl _10y2y3y4y5y6y8yPattern {
|
||||
}
|
||||
}
|
||||
|
||||
/// Pattern struct for repeated tree structure.
|
||||
pub struct ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern {
|
||||
pub activity: CoinblocksCoindaysSentPattern,
|
||||
pub cost_basis: MaxMinPattern,
|
||||
pub outputs: UtxoPattern,
|
||||
pub realized: MvrvNegNetRealizedSentSoprValuePattern,
|
||||
pub relative: SupplyPattern2,
|
||||
pub supply: DeltaHalvedTotalPattern,
|
||||
pub unrealized: InvestedInvestorNegNetSupplyUnrealizedPattern,
|
||||
}
|
||||
|
||||
impl ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern {
|
||||
/// Create a new pattern node with accumulated metric name.
|
||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||
Self {
|
||||
activity: CoinblocksCoindaysSentPattern::new(client.clone(), acc.clone()),
|
||||
cost_basis: MaxMinPattern::new(client.clone(), _m(&acc, "cost_basis")),
|
||||
outputs: UtxoPattern::new(client.clone(), _m(&acc, "utxo_count")),
|
||||
realized: MvrvNegNetRealizedSentSoprValuePattern::new(client.clone(), acc.clone()),
|
||||
relative: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
|
||||
supply: DeltaHalvedTotalPattern::new(client.clone(), _m(&acc, "supply")),
|
||||
unrealized: InvestedInvestorNegNetSupplyUnrealizedPattern::new(client.clone(), acc.clone()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Pattern struct for repeated tree structure.
|
||||
pub struct ActivityAddrOutputsRealizedSupplyUnrealizedPattern {
|
||||
pub activity: SentPattern,
|
||||
@@ -1985,6 +1959,30 @@ impl ActivityAddrOutputsRealizedSupplyUnrealizedPattern {
|
||||
|
||||
/// Pattern struct for repeated tree structure.
|
||||
pub struct ActivityOutputsRealizedRelativeSupplyUnrealizedPattern {
|
||||
pub activity: CoinblocksCoindaysSentPattern,
|
||||
pub outputs: UtxoPattern,
|
||||
pub realized: MvrvNegNetRealizedSentSoprValuePattern,
|
||||
pub relative: SupplyPattern2,
|
||||
pub supply: DeltaHalvedTotalPattern,
|
||||
pub unrealized: InvestedInvestorNegNetSupplyUnrealizedPattern,
|
||||
}
|
||||
|
||||
impl ActivityOutputsRealizedRelativeSupplyUnrealizedPattern {
|
||||
/// Create a new pattern node with accumulated metric name.
|
||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||
Self {
|
||||
activity: CoinblocksCoindaysSentPattern::new(client.clone(), acc.clone()),
|
||||
outputs: UtxoPattern::new(client.clone(), _m(&acc, "utxo_count")),
|
||||
realized: MvrvNegNetRealizedSentSoprValuePattern::new(client.clone(), acc.clone()),
|
||||
relative: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
|
||||
supply: DeltaHalvedTotalPattern::new(client.clone(), _m(&acc, "supply")),
|
||||
unrealized: InvestedInvestorNegNetSupplyUnrealizedPattern::new(client.clone(), acc.clone()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Pattern struct for repeated tree structure.
|
||||
pub struct ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 {
|
||||
pub activity: SentPattern,
|
||||
pub outputs: UtxoPattern,
|
||||
pub realized: MvrvNegNetRealizedSoprValuePattern,
|
||||
@@ -1993,7 +1991,7 @@ pub struct ActivityOutputsRealizedRelativeSupplyUnrealizedPattern {
|
||||
pub unrealized: NegNetSupplyUnrealizedPattern,
|
||||
}
|
||||
|
||||
impl ActivityOutputsRealizedRelativeSupplyUnrealizedPattern {
|
||||
impl ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 {
|
||||
/// Create a new pattern node with accumulated metric name.
|
||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||
Self {
|
||||
@@ -2602,17 +2600,17 @@ impl ChangeRatePattern2 {
|
||||
}
|
||||
|
||||
/// Pattern struct for repeated tree structure.
|
||||
pub struct MaxMinPattern {
|
||||
pub max: CentsSatsUsdPattern,
|
||||
pub min: CentsSatsUsdPattern,
|
||||
pub struct HeightSumPattern {
|
||||
pub height: MetricPattern18<StoredU64>,
|
||||
pub sum: _1m1w1y24hPattern<StoredU64>,
|
||||
}
|
||||
|
||||
impl MaxMinPattern {
|
||||
impl HeightSumPattern {
|
||||
/// Create a new pattern node with accumulated metric name.
|
||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||
Self {
|
||||
max: CentsSatsUsdPattern::new(client.clone(), _m(&acc, "max")),
|
||||
min: CentsSatsUsdPattern::new(client.clone(), _m(&acc, "min")),
|
||||
height: MetricPattern18::new(client.clone(), acc.clone()),
|
||||
sum: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "sum")),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5744,215 +5742,215 @@ impl MetricsTree_Distribution_UtxoCohorts_Lth {
|
||||
|
||||
/// Metrics tree node.
|
||||
pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange {
|
||||
pub up_to_1h: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1h_to_1d: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1d_to_1w: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1w_to_1m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1m_to_2m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2m_to_3m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _3m_to_4m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _4m_to_5m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _5m_to_6m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _6m_to_1y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1y_to_2y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2y_to_3y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _3y_to_4y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _4y_to_5y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _5y_to_6y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _6y_to_7y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _7y_to_8y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _8y_to_10y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _10y_to_12y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _12y_to_15y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub from_15y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub up_to_1h: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1h_to_1d: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1d_to_1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1w_to_1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1m_to_2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2m_to_3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _3m_to_4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _4m_to_5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _5m_to_6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _6m_to_1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1y_to_2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2y_to_3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _3y_to_4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _4y_to_5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _5y_to_6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _6y_to_7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _7y_to_8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _8y_to_10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _10y_to_12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _12y_to_15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub from_15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
}
|
||||
|
||||
impl MetricsTree_Distribution_UtxoCohorts_AgeRange {
|
||||
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
|
||||
Self {
|
||||
up_to_1h: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1h_old".to_string()),
|
||||
_1h_to_1d: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_1h_to_1d_old".to_string()),
|
||||
_1d_to_1w: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_1d_to_1w_old".to_string()),
|
||||
_1w_to_1m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_1w_to_1m_old".to_string()),
|
||||
_1m_to_2m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_1m_to_2m_old".to_string()),
|
||||
_2m_to_3m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_2m_to_3m_old".to_string()),
|
||||
_3m_to_4m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_3m_to_4m_old".to_string()),
|
||||
_4m_to_5m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_4m_to_5m_old".to_string()),
|
||||
_5m_to_6m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_5m_to_6m_old".to_string()),
|
||||
_6m_to_1y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_6m_to_1y_old".to_string()),
|
||||
_1y_to_2y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_1y_to_2y_old".to_string()),
|
||||
_2y_to_3y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_2y_to_3y_old".to_string()),
|
||||
_3y_to_4y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_3y_to_4y_old".to_string()),
|
||||
_4y_to_5y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_4y_to_5y_old".to_string()),
|
||||
_5y_to_6y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_5y_to_6y_old".to_string()),
|
||||
_6y_to_7y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_6y_to_7y_old".to_string()),
|
||||
_7y_to_8y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_7y_to_8y_old".to_string()),
|
||||
_8y_to_10y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_8y_to_10y_old".to_string()),
|
||||
_10y_to_12y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_10y_to_12y_old".to_string()),
|
||||
_12y_to_15y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_12y_to_15y_old".to_string()),
|
||||
from_15y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_15y_old".to_string()),
|
||||
up_to_1h: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1h_old".to_string()),
|
||||
_1h_to_1d: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_1h_to_1d_old".to_string()),
|
||||
_1d_to_1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_1d_to_1w_old".to_string()),
|
||||
_1w_to_1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_1w_to_1m_old".to_string()),
|
||||
_1m_to_2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_1m_to_2m_old".to_string()),
|
||||
_2m_to_3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_2m_to_3m_old".to_string()),
|
||||
_3m_to_4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_3m_to_4m_old".to_string()),
|
||||
_4m_to_5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_4m_to_5m_old".to_string()),
|
||||
_5m_to_6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_5m_to_6m_old".to_string()),
|
||||
_6m_to_1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_6m_to_1y_old".to_string()),
|
||||
_1y_to_2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_1y_to_2y_old".to_string()),
|
||||
_2y_to_3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_2y_to_3y_old".to_string()),
|
||||
_3y_to_4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_3y_to_4y_old".to_string()),
|
||||
_4y_to_5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_4y_to_5y_old".to_string()),
|
||||
_5y_to_6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_5y_to_6y_old".to_string()),
|
||||
_6y_to_7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_6y_to_7y_old".to_string()),
|
||||
_7y_to_8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_7y_to_8y_old".to_string()),
|
||||
_8y_to_10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_8y_to_10y_old".to_string()),
|
||||
_10y_to_12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_10y_to_12y_old".to_string()),
|
||||
_12y_to_15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_12y_to_15y_old".to_string()),
|
||||
from_15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_15y_old".to_string()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Metrics tree node.
|
||||
pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge {
|
||||
pub _1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
}
|
||||
|
||||
impl MetricsTree_Distribution_UtxoCohorts_MaxAge {
|
||||
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
|
||||
Self {
|
||||
_1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1w_old".to_string()),
|
||||
_1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1m_old".to_string()),
|
||||
_2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_2m_old".to_string()),
|
||||
_3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_3m_old".to_string()),
|
||||
_4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_4m_old".to_string()),
|
||||
_5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_5m_old".to_string()),
|
||||
_6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_6m_old".to_string()),
|
||||
_1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1y_old".to_string()),
|
||||
_2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_2y_old".to_string()),
|
||||
_3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_3y_old".to_string()),
|
||||
_4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_4y_old".to_string()),
|
||||
_5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_5y_old".to_string()),
|
||||
_6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_6y_old".to_string()),
|
||||
_7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_7y_old".to_string()),
|
||||
_8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_8y_old".to_string()),
|
||||
_10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_10y_old".to_string()),
|
||||
_12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_12y_old".to_string()),
|
||||
_15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_under_15y_old".to_string()),
|
||||
_1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_1w_old".to_string()),
|
||||
_1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_1m_old".to_string()),
|
||||
_2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_2m_old".to_string()),
|
||||
_3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_3m_old".to_string()),
|
||||
_4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_4m_old".to_string()),
|
||||
_5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_5m_old".to_string()),
|
||||
_6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_6m_old".to_string()),
|
||||
_1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_1y_old".to_string()),
|
||||
_2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_2y_old".to_string()),
|
||||
_3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_3y_old".to_string()),
|
||||
_4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_4y_old".to_string()),
|
||||
_5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_5y_old".to_string()),
|
||||
_6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_6y_old".to_string()),
|
||||
_7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_7y_old".to_string()),
|
||||
_8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_8y_old".to_string()),
|
||||
_10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_10y_old".to_string()),
|
||||
_12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_12y_old".to_string()),
|
||||
_15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_15y_old".to_string()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Metrics tree node.
|
||||
pub struct MetricsTree_Distribution_UtxoCohorts_MinAge {
|
||||
pub _1d: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1d: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
}
|
||||
|
||||
impl MetricsTree_Distribution_UtxoCohorts_MinAge {
|
||||
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
|
||||
Self {
|
||||
_1d: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1d_old".to_string()),
|
||||
_1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1w_old".to_string()),
|
||||
_1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1m_old".to_string()),
|
||||
_2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_2m_old".to_string()),
|
||||
_3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_3m_old".to_string()),
|
||||
_4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_4m_old".to_string()),
|
||||
_5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_5m_old".to_string()),
|
||||
_6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_6m_old".to_string()),
|
||||
_1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1y_old".to_string()),
|
||||
_2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_2y_old".to_string()),
|
||||
_3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_3y_old".to_string()),
|
||||
_4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_4y_old".to_string()),
|
||||
_5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_5y_old".to_string()),
|
||||
_6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_6y_old".to_string()),
|
||||
_7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_7y_old".to_string()),
|
||||
_8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_8y_old".to_string()),
|
||||
_10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_10y_old".to_string()),
|
||||
_12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "utxos_over_12y_old".to_string()),
|
||||
_1d: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1d_old".to_string()),
|
||||
_1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1w_old".to_string()),
|
||||
_1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1m_old".to_string()),
|
||||
_2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_2m_old".to_string()),
|
||||
_3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_3m_old".to_string()),
|
||||
_4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_4m_old".to_string()),
|
||||
_5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_5m_old".to_string()),
|
||||
_6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_6m_old".to_string()),
|
||||
_1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1y_old".to_string()),
|
||||
_2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_2y_old".to_string()),
|
||||
_3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_3y_old".to_string()),
|
||||
_4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_4y_old".to_string()),
|
||||
_5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_5y_old".to_string()),
|
||||
_6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_6y_old".to_string()),
|
||||
_7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_7y_old".to_string()),
|
||||
_8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_8y_old".to_string()),
|
||||
_10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_10y_old".to_string()),
|
||||
_12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_12y_old".to_string()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Metrics tree node.
|
||||
pub struct MetricsTree_Distribution_UtxoCohorts_Epoch {
|
||||
pub _0: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _1: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _3: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _4: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _0: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _1: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _3: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _4: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
}
|
||||
|
||||
impl MetricsTree_Distribution_UtxoCohorts_Epoch {
|
||||
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
|
||||
Self {
|
||||
_0: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "epoch_0".to_string()),
|
||||
_1: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "epoch_1".to_string()),
|
||||
_2: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "epoch_2".to_string()),
|
||||
_3: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "epoch_3".to_string()),
|
||||
_4: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "epoch_4".to_string()),
|
||||
_0: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "epoch_0".to_string()),
|
||||
_1: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "epoch_1".to_string()),
|
||||
_2: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "epoch_2".to_string()),
|
||||
_3: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "epoch_3".to_string()),
|
||||
_4: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "epoch_4".to_string()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Metrics tree node.
|
||||
pub struct MetricsTree_Distribution_UtxoCohorts_Class {
|
||||
pub _2009: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2010: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2011: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2012: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2013: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2014: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2015: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2016: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2017: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2018: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2019: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2020: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2021: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2022: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2023: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2024: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2025: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2026: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern,
|
||||
pub _2009: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2010: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2011: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2012: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2013: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2014: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2015: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2016: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2017: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2018: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2019: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2020: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2021: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2022: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2023: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2024: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2025: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
pub _2026: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2,
|
||||
}
|
||||
|
||||
impl MetricsTree_Distribution_UtxoCohorts_Class {
|
||||
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
|
||||
Self {
|
||||
_2009: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2009".to_string()),
|
||||
_2010: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2010".to_string()),
|
||||
_2011: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2011".to_string()),
|
||||
_2012: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2012".to_string()),
|
||||
_2013: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2013".to_string()),
|
||||
_2014: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2014".to_string()),
|
||||
_2015: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2015".to_string()),
|
||||
_2016: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2016".to_string()),
|
||||
_2017: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2017".to_string()),
|
||||
_2018: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2018".to_string()),
|
||||
_2019: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2019".to_string()),
|
||||
_2020: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2020".to_string()),
|
||||
_2021: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2021".to_string()),
|
||||
_2022: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2022".to_string()),
|
||||
_2023: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2023".to_string()),
|
||||
_2024: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2024".to_string()),
|
||||
_2025: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2025".to_string()),
|
||||
_2026: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern::new(client.clone(), "class_2026".to_string()),
|
||||
_2009: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2009".to_string()),
|
||||
_2010: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2010".to_string()),
|
||||
_2011: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2011".to_string()),
|
||||
_2012: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2012".to_string()),
|
||||
_2013: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2013".to_string()),
|
||||
_2014: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2014".to_string()),
|
||||
_2015: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2015".to_string()),
|
||||
_2016: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2016".to_string()),
|
||||
_2017: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2017".to_string()),
|
||||
_2018: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2018".to_string()),
|
||||
_2019: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2019".to_string()),
|
||||
_2020: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2020".to_string()),
|
||||
_2021: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2021".to_string()),
|
||||
_2022: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2022".to_string()),
|
||||
_2023: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2023".to_string()),
|
||||
_2024: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2024".to_string()),
|
||||
_2025: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2025".to_string()),
|
||||
_2026: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2::new(client.clone(), "class_2026".to_string()),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6268,29 +6266,29 @@ impl MetricsTree_Distribution_AddressActivity {
|
||||
|
||||
/// Metrics tree node.
|
||||
pub struct MetricsTree_Distribution_NewAddrCount {
|
||||
pub all: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern,
|
||||
pub p2pk65: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern,
|
||||
pub p2pk33: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern,
|
||||
pub p2pkh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern,
|
||||
pub p2sh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern,
|
||||
pub p2wpkh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern,
|
||||
pub p2wsh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern,
|
||||
pub p2tr: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern,
|
||||
pub p2a: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern,
|
||||
pub all: HeightSumPattern,
|
||||
pub p2pk65: HeightSumPattern,
|
||||
pub p2pk33: HeightSumPattern,
|
||||
pub p2pkh: HeightSumPattern,
|
||||
pub p2sh: HeightSumPattern,
|
||||
pub p2wpkh: HeightSumPattern,
|
||||
pub p2wsh: HeightSumPattern,
|
||||
pub p2tr: HeightSumPattern,
|
||||
pub p2a: HeightSumPattern,
|
||||
}
|
||||
|
||||
impl MetricsTree_Distribution_NewAddrCount {
|
||||
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
|
||||
Self {
|
||||
all: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern::new(client.clone(), "new_addr_count".to_string()),
|
||||
p2pk65: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern::new(client.clone(), "p2pk65_new_addr_count".to_string()),
|
||||
p2pk33: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern::new(client.clone(), "p2pk33_new_addr_count".to_string()),
|
||||
p2pkh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern::new(client.clone(), "p2pkh_new_addr_count".to_string()),
|
||||
p2sh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern::new(client.clone(), "p2sh_new_addr_count".to_string()),
|
||||
p2wpkh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern::new(client.clone(), "p2wpkh_new_addr_count".to_string()),
|
||||
p2wsh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern::new(client.clone(), "p2wsh_new_addr_count".to_string()),
|
||||
p2tr: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern::new(client.clone(), "p2tr_new_addr_count".to_string()),
|
||||
p2a: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern::new(client.clone(), "p2a_new_addr_count".to_string()),
|
||||
all: HeightSumPattern::new(client.clone(), "new_addr_count".to_string()),
|
||||
p2pk65: HeightSumPattern::new(client.clone(), "p2pk65_new_addr_count".to_string()),
|
||||
p2pk33: HeightSumPattern::new(client.clone(), "p2pk33_new_addr_count".to_string()),
|
||||
p2pkh: HeightSumPattern::new(client.clone(), "p2pkh_new_addr_count".to_string()),
|
||||
p2sh: HeightSumPattern::new(client.clone(), "p2sh_new_addr_count".to_string()),
|
||||
p2wpkh: HeightSumPattern::new(client.clone(), "p2wpkh_new_addr_count".to_string()),
|
||||
p2wsh: HeightSumPattern::new(client.clone(), "p2wsh_new_addr_count".to_string()),
|
||||
p2tr: HeightSumPattern::new(client.clone(), "p2tr_new_addr_count".to_string()),
|
||||
p2a: HeightSumPattern::new(client.clone(), "p2a_new_addr_count".to_string()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ use brk_types::{Cents, CentsCompact, CostBasisDistribution, Date, Height, Sats};
|
||||
|
||||
use crate::internal::{PERCENTILES, PERCENTILES_LEN};
|
||||
|
||||
use crate::distribution::metrics::{CohortMetricsBase, CostBasisExtended};
|
||||
use crate::distribution::metrics::{CohortMetricsBase, CostBasis};
|
||||
|
||||
use super::groups::UTXOCohorts;
|
||||
|
||||
@@ -16,11 +16,14 @@ const COST_BASIS_PRICE_DIGITS: i32 = 5;
|
||||
pub(super) struct CachedPercentiles {
|
||||
sat_result: [Cents; PERCENTILES_LEN],
|
||||
usd_result: [Cents; PERCENTILES_LEN],
|
||||
min_price: Cents,
|
||||
max_price: Cents,
|
||||
}
|
||||
|
||||
impl CachedPercentiles {
|
||||
fn push(&self, height: Height, ext: &mut CostBasisExtended) -> Result<()> {
|
||||
ext.push_arrays(height, &self.sat_result, &self.usd_result)
|
||||
fn push(&self, height: Height, cost_basis: &mut CostBasis) -> Result<()> {
|
||||
cost_basis.truncate_push_minmax(height, self.min_price, self.max_price)?;
|
||||
cost_basis.truncate_push_percentiles(height, &self.sat_result, &self.usd_result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,13 +117,13 @@ impl UTXOCohorts {
|
||||
|
||||
self.percentile_cache
|
||||
.all
|
||||
.push(height, &mut self.all.metrics.cost_basis.extended)?;
|
||||
.push(height, &mut self.all.metrics.cost_basis)?;
|
||||
self.percentile_cache
|
||||
.sth
|
||||
.push(height, &mut self.sth.metrics.cost_basis.extended)?;
|
||||
.push(height, &mut self.sth.metrics.cost_basis)?;
|
||||
self.percentile_cache
|
||||
.lth
|
||||
.push(height, &mut self.lth.metrics.cost_basis.extended)?;
|
||||
.push(height, &mut self.lth.metrics.cost_basis)?;
|
||||
|
||||
// Serialize full distribution at day boundaries
|
||||
if let Some(date) = date_opt {
|
||||
@@ -136,13 +139,13 @@ impl UTXOCohorts {
|
||||
fn push_cached_percentiles(&mut self, height: Height) -> Result<()> {
|
||||
self.percentile_cache
|
||||
.all
|
||||
.push(height, &mut self.all.metrics.cost_basis.extended)?;
|
||||
.push(height, &mut self.all.metrics.cost_basis)?;
|
||||
self.percentile_cache
|
||||
.sth
|
||||
.push(height, &mut self.sth.metrics.cost_basis.extended)?;
|
||||
.push(height, &mut self.sth.metrics.cost_basis)?;
|
||||
self.percentile_cache
|
||||
.lth
|
||||
.push(height, &mut self.lth.metrics.cost_basis.extended)?;
|
||||
.push(height, &mut self.lth.metrics.cost_basis)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
@@ -269,6 +272,8 @@ struct PercTarget {
|
||||
usd_result: [Cents; PERCENTILES_LEN],
|
||||
price_sats: u64,
|
||||
price_usd: u128,
|
||||
min_price: Cents,
|
||||
max_price: Cents,
|
||||
merged: Vec<(CentsCompact, Sats)>,
|
||||
}
|
||||
|
||||
@@ -295,6 +300,8 @@ impl PercTarget {
|
||||
usd_result: [Cents::ZERO; PERCENTILES_LEN],
|
||||
price_sats: 0,
|
||||
price_usd: 0,
|
||||
min_price: Cents::ZERO,
|
||||
max_price: Cents::ZERO,
|
||||
merged: Vec::with_capacity(merged_cap),
|
||||
}
|
||||
}
|
||||
@@ -303,6 +310,8 @@ impl PercTarget {
|
||||
CachedPercentiles {
|
||||
sat_result: self.sat_result,
|
||||
usd_result: self.usd_result,
|
||||
min_price: self.min_price,
|
||||
max_price: self.max_price,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -313,14 +322,21 @@ impl PercTarget {
|
||||
}
|
||||
|
||||
fn finalize_price(&mut self, price: Cents, collect_merged: bool) {
|
||||
if collect_merged && self.price_sats > 0 {
|
||||
let rounded: CentsCompact = price.round_to_dollar(COST_BASIS_PRICE_DIGITS).into();
|
||||
if let Some((lp, ls)) = self.merged.last_mut()
|
||||
&& *lp == rounded
|
||||
{
|
||||
*ls += Sats::from(self.price_sats);
|
||||
} else {
|
||||
self.merged.push((rounded, Sats::from(self.price_sats)));
|
||||
if self.price_sats > 0 {
|
||||
if self.min_price == Cents::ZERO {
|
||||
self.min_price = price;
|
||||
}
|
||||
self.max_price = price;
|
||||
|
||||
if collect_merged {
|
||||
let rounded: CentsCompact = price.round_to_dollar(COST_BASIS_PRICE_DIGITS).into();
|
||||
if let Some((lp, ls)) = self.merged.last_mut()
|
||||
&& *lp == rounded
|
||||
{
|
||||
*ls += Sats::from(self.price_sats);
|
||||
} else {
|
||||
self.merged.push((rounded, Sats::from(self.price_sats)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -136,14 +136,13 @@ impl<M: CohortMetricsBase + Traversable> DynCohortVecs for UTXOCohortVecs<M> {
|
||||
&mut self,
|
||||
height: Height,
|
||||
height_price: Cents,
|
||||
is_day_boundary: bool,
|
||||
_is_day_boundary: bool,
|
||||
) -> Result<()> {
|
||||
if let Some(state) = self.state.as_mut() {
|
||||
self.metrics.compute_then_truncate_push_unrealized_states(
|
||||
self.metrics.compute_and_push_unrealized(
|
||||
height,
|
||||
height_price,
|
||||
state,
|
||||
is_day_boundary,
|
||||
)?;
|
||||
}
|
||||
Ok(())
|
||||
|
||||
@@ -13,7 +13,7 @@ use crate::{blocks, prices};
|
||||
use crate::internal::{ComputedFromHeight, RollingDeltaExcept1m};
|
||||
|
||||
use crate::distribution::metrics::{
|
||||
ActivityFull, CohortMetricsBase, CostBasisWithExtended, ImportConfig, OutputsMetrics,
|
||||
ActivityFull, CohortMetricsBase, CostBasis, ImportConfig, OutputsMetrics,
|
||||
RealizedAdjusted, RealizedFull, RelativeForAll, SupplyMetrics, UnrealizedFull,
|
||||
};
|
||||
|
||||
@@ -28,7 +28,7 @@ pub struct AllCohortMetrics<M: StorageMode = Rw> {
|
||||
pub outputs: Box<OutputsMetrics<M>>,
|
||||
pub activity: Box<ActivityFull<M>>,
|
||||
pub realized: Box<RealizedFull<M>>,
|
||||
pub cost_basis: Box<CostBasisWithExtended<M>>,
|
||||
pub cost_basis: Box<CostBasis<M>>,
|
||||
pub unrealized: Box<UnrealizedFull<M>>,
|
||||
pub adjusted: Box<RealizedAdjusted<M>>,
|
||||
pub relative: Box<RelativeForAll<M>>,
|
||||
@@ -43,10 +43,26 @@ impl CohortMetricsBase for AllCohortMetrics {
|
||||
type ActivityVecs = ActivityFull;
|
||||
type RealizedVecs = RealizedFull;
|
||||
type UnrealizedVecs = UnrealizedFull;
|
||||
type CostBasisVecs = CostBasisWithExtended;
|
||||
|
||||
impl_cohort_accessors!();
|
||||
|
||||
fn validate_computed_versions(&mut self, base_version: Version) -> Result<()> {
|
||||
self.supply.validate_computed_versions(base_version)?;
|
||||
self.activity.validate_computed_versions(base_version)?;
|
||||
self.cost_basis.validate_computed_versions(base_version)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn min_stateful_height_len(&self) -> usize {
|
||||
self.supply
|
||||
.min_len()
|
||||
.min(self.outputs.min_len())
|
||||
.min(self.activity.min_len())
|
||||
.min(self.realized.min_stateful_height_len())
|
||||
.min(self.unrealized.min_stateful_height_len())
|
||||
.min(self.cost_basis.min_stateful_height_len())
|
||||
}
|
||||
|
||||
fn collect_all_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec> {
|
||||
let mut vecs: Vec<&mut dyn AnyStoredVec> = Vec::new();
|
||||
vecs.extend(self.supply.collect_vecs_mut());
|
||||
@@ -82,7 +98,7 @@ impl AllCohortMetrics {
|
||||
outputs: Box::new(OutputsMetrics::forced_import(cfg)?),
|
||||
activity: Box::new(ActivityFull::forced_import(cfg)?),
|
||||
realized: Box::new(realized),
|
||||
cost_basis: Box::new(CostBasisWithExtended::forced_import(cfg)?),
|
||||
cost_basis: Box::new(CostBasis::forced_import(cfg)?),
|
||||
unrealized: Box::new(unrealized),
|
||||
adjusted: Box::new(adjusted),
|
||||
relative: Box::new(relative),
|
||||
|
||||
@@ -7,7 +7,7 @@ use vecdb::{AnyStoredVec, Exit, ReadableVec, Rw, StorageMode};
|
||||
use crate::{blocks, prices};
|
||||
|
||||
use crate::distribution::metrics::{
|
||||
ActivityBase, CohortMetricsBase, CostBasisBase, ImportConfig, OutputsMetrics, RealizedBase,
|
||||
ActivityBase, CohortMetricsBase, ImportConfig, OutputsMetrics, RealizedBase,
|
||||
RelativeToAll, SupplyMetrics, UnrealizedBase,
|
||||
};
|
||||
|
||||
@@ -21,7 +21,6 @@ pub struct BasicCohortMetrics<M: StorageMode = Rw> {
|
||||
pub outputs: Box<OutputsMetrics<M>>,
|
||||
pub activity: Box<ActivityBase<M>>,
|
||||
pub realized: Box<RealizedBase<M>>,
|
||||
pub cost_basis: Box<CostBasisBase<M>>,
|
||||
pub unrealized: Box<UnrealizedBase<M>>,
|
||||
pub relative: Box<RelativeToAll<M>>,
|
||||
}
|
||||
@@ -30,7 +29,6 @@ impl CohortMetricsBase for BasicCohortMetrics {
|
||||
type ActivityVecs = ActivityBase;
|
||||
type RealizedVecs = RealizedBase;
|
||||
type UnrealizedVecs = UnrealizedBase;
|
||||
type CostBasisVecs = CostBasisBase;
|
||||
|
||||
impl_cohort_accessors!();
|
||||
|
||||
@@ -40,7 +38,6 @@ impl CohortMetricsBase for BasicCohortMetrics {
|
||||
vecs.extend(self.outputs.collect_vecs_mut());
|
||||
vecs.extend(self.activity.collect_vecs_mut());
|
||||
vecs.extend(self.realized.collect_vecs_mut());
|
||||
vecs.extend(self.cost_basis.collect_vecs_mut());
|
||||
vecs.extend(self.unrealized.collect_vecs_mut());
|
||||
vecs
|
||||
}
|
||||
@@ -60,7 +57,6 @@ impl BasicCohortMetrics {
|
||||
outputs: Box::new(OutputsMetrics::forced_import(cfg)?),
|
||||
activity: Box::new(ActivityBase::forced_import(cfg)?),
|
||||
realized: Box::new(realized),
|
||||
cost_basis: Box::new(CostBasisBase::forced_import(cfg)?),
|
||||
unrealized: Box::new(unrealized),
|
||||
relative: Box::new(relative),
|
||||
})
|
||||
|
||||
@@ -12,7 +12,7 @@ use crate::{blocks, prices};
|
||||
use crate::internal::{ComputedFromHeight, RollingDeltaExcept1m};
|
||||
|
||||
use crate::distribution::metrics::{
|
||||
ActivityFull, CohortMetricsBase, CostBasisWithExtended, ImportConfig, OutputsMetrics,
|
||||
ActivityFull, CohortMetricsBase, CostBasis, ImportConfig, OutputsMetrics,
|
||||
RealizedFull, RelativeWithExtended, SupplyMetrics, UnrealizedFull,
|
||||
};
|
||||
|
||||
@@ -26,7 +26,7 @@ pub struct ExtendedCohortMetrics<M: StorageMode = Rw> {
|
||||
pub outputs: Box<OutputsMetrics<M>>,
|
||||
pub activity: Box<ActivityFull<M>>,
|
||||
pub realized: Box<RealizedFull<M>>,
|
||||
pub cost_basis: Box<CostBasisWithExtended<M>>,
|
||||
pub cost_basis: Box<CostBasis<M>>,
|
||||
pub unrealized: Box<UnrealizedFull<M>>,
|
||||
pub relative: Box<RelativeWithExtended<M>>,
|
||||
pub dormancy: ComputedFromHeight<StoredF32, M>,
|
||||
@@ -40,10 +40,26 @@ impl CohortMetricsBase for ExtendedCohortMetrics {
|
||||
type ActivityVecs = ActivityFull;
|
||||
type RealizedVecs = RealizedFull;
|
||||
type UnrealizedVecs = UnrealizedFull;
|
||||
type CostBasisVecs = CostBasisWithExtended;
|
||||
|
||||
impl_cohort_accessors!();
|
||||
|
||||
fn validate_computed_versions(&mut self, base_version: Version) -> Result<()> {
|
||||
self.supply.validate_computed_versions(base_version)?;
|
||||
self.activity.validate_computed_versions(base_version)?;
|
||||
self.cost_basis.validate_computed_versions(base_version)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn min_stateful_height_len(&self) -> usize {
|
||||
self.supply
|
||||
.min_len()
|
||||
.min(self.outputs.min_len())
|
||||
.min(self.activity.min_len())
|
||||
.min(self.realized.min_stateful_height_len())
|
||||
.min(self.unrealized.min_stateful_height_len())
|
||||
.min(self.cost_basis.min_stateful_height_len())
|
||||
}
|
||||
|
||||
fn collect_all_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec> {
|
||||
let mut vecs: Vec<&mut dyn AnyStoredVec> = Vec::new();
|
||||
vecs.extend(self.supply.collect_vecs_mut());
|
||||
@@ -72,7 +88,7 @@ impl ExtendedCohortMetrics {
|
||||
outputs: Box::new(OutputsMetrics::forced_import(cfg)?),
|
||||
activity: Box::new(ActivityFull::forced_import(cfg)?),
|
||||
realized: Box::new(realized),
|
||||
cost_basis: Box::new(CostBasisWithExtended::forced_import(cfg)?),
|
||||
cost_basis: Box::new(CostBasis::forced_import(cfg)?),
|
||||
unrealized: Box::new(unrealized),
|
||||
relative: Box::new(relative),
|
||||
dormancy: cfg.import("dormancy", Version::ONE)?,
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Cents, Dollars, Height, Indexes, Sats};
|
||||
use brk_types::{Cents, Dollars, Height, Indexes, Sats, Version};
|
||||
use derive_more::{Deref, DerefMut};
|
||||
use vecdb::{AnyStoredVec, Exit, ReadableVec, Rw, StorageMode};
|
||||
|
||||
use crate::{blocks, prices};
|
||||
|
||||
use crate::distribution::metrics::{
|
||||
ActivityFull, CohortMetricsBase, CostBasisWithExtended, ImportConfig, RealizedAdjusted,
|
||||
ActivityFull, CohortMetricsBase, ImportConfig, RealizedAdjusted,
|
||||
RealizedFull, UnrealizedFull,
|
||||
};
|
||||
|
||||
@@ -30,10 +30,17 @@ impl CohortMetricsBase for ExtendedAdjustedCohortMetrics {
|
||||
type ActivityVecs = ActivityFull;
|
||||
type RealizedVecs = RealizedFull;
|
||||
type UnrealizedVecs = UnrealizedFull;
|
||||
type CostBasisVecs = CostBasisWithExtended;
|
||||
|
||||
impl_cohort_accessors!();
|
||||
|
||||
fn validate_computed_versions(&mut self, base_version: Version) -> Result<()> {
|
||||
self.inner.validate_computed_versions(base_version)
|
||||
}
|
||||
|
||||
fn min_stateful_height_len(&self) -> usize {
|
||||
self.inner.min_stateful_height_len()
|
||||
}
|
||||
|
||||
fn collect_all_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec> {
|
||||
self.inner.collect_all_vecs_mut()
|
||||
}
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Cents, Height, Indexes, Version};
|
||||
use vecdb::{AnyStoredVec, AnyVec, Exit, Rw, StorageMode, WritableVec};
|
||||
|
||||
use crate::{
|
||||
distribution::state::{CohortState, RealizedState},
|
||||
internal::{ComputedFromHeight, Price},
|
||||
};
|
||||
|
||||
use crate::distribution::metrics::ImportConfig;
|
||||
|
||||
/// Base cost basis metrics (always computed).
|
||||
#[derive(Traversable)]
|
||||
pub struct CostBasisBase<M: StorageMode = Rw> {
|
||||
/// Minimum cost basis for any UTXO at this height
|
||||
pub min: Price<ComputedFromHeight<Cents, M>>,
|
||||
|
||||
/// Maximum cost basis for any UTXO at this height
|
||||
pub max: Price<ComputedFromHeight<Cents, M>>,
|
||||
}
|
||||
|
||||
impl CostBasisBase {
|
||||
pub(crate) fn forced_import(cfg: &ImportConfig) -> Result<Self> {
|
||||
Ok(Self {
|
||||
min: cfg.import("cost_basis_min", Version::ZERO)?,
|
||||
max: cfg.import("cost_basis_max", Version::ZERO)?,
|
||||
})
|
||||
}
|
||||
|
||||
pub(crate) fn min_stateful_height_len(&self) -> usize {
|
||||
self.min.cents.height.len().min(self.max.cents.height.len())
|
||||
}
|
||||
|
||||
pub(crate) fn truncate_push_minmax(
|
||||
&mut self,
|
||||
height: Height,
|
||||
state: &CohortState<RealizedState>,
|
||||
) -> Result<()> {
|
||||
self.min.cents.height.truncate_push(
|
||||
height,
|
||||
state
|
||||
.cost_basis_data_first_key_value()
|
||||
.map(|(cents, _)| cents)
|
||||
.unwrap_or(Cents::ZERO),
|
||||
)?;
|
||||
self.max.cents.height.truncate_push(
|
||||
height,
|
||||
state
|
||||
.cost_basis_data_last_key_value()
|
||||
.map(|(cents, _)| cents)
|
||||
.unwrap_or(Cents::ZERO),
|
||||
)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) fn collect_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec> {
|
||||
vec![
|
||||
&mut self.min.cents.height as &mut dyn AnyStoredVec,
|
||||
&mut self.max.cents.height,
|
||||
]
|
||||
}
|
||||
|
||||
pub(crate) fn compute_from_stateful(
|
||||
&mut self,
|
||||
starting_indexes: &Indexes,
|
||||
others: &[&Self],
|
||||
exit: &Exit,
|
||||
) -> Result<()> {
|
||||
self.min.cents.height.compute_min_of_others(
|
||||
starting_indexes.height,
|
||||
&others
|
||||
.iter()
|
||||
.map(|v| &v.min.cents.height)
|
||||
.collect::<Vec<_>>(),
|
||||
exit,
|
||||
)?;
|
||||
self.max.cents.height.compute_max_of_others(
|
||||
starting_indexes.height,
|
||||
&others
|
||||
.iter()
|
||||
.map(|v| &v.max.cents.height)
|
||||
.collect::<Vec<_>>(),
|
||||
exit,
|
||||
)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
@@ -1,102 +0,0 @@
|
||||
use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Cents, Height, Version};
|
||||
use vecdb::{AnyStoredVec, Rw, StorageMode};
|
||||
|
||||
use crate::{
|
||||
distribution::state::{CohortState, RealizedState},
|
||||
internal::{PERCENTILES_LEN, PercentilesVecs},
|
||||
};
|
||||
|
||||
use crate::distribution::metrics::ImportConfig;
|
||||
|
||||
/// Extended cost basis metrics (only for extended cohorts).
|
||||
#[derive(Traversable)]
|
||||
pub struct CostBasisExtended<M: StorageMode = Rw> {
|
||||
/// Cost basis percentiles (sat-weighted)
|
||||
pub percentiles: PercentilesVecs<M>,
|
||||
|
||||
/// Invested capital percentiles (USD-weighted)
|
||||
pub invested_capital: PercentilesVecs<M>,
|
||||
}
|
||||
|
||||
impl CostBasisExtended {
|
||||
pub(crate) fn forced_import(cfg: &ImportConfig) -> Result<Self> {
|
||||
Ok(Self {
|
||||
percentiles: PercentilesVecs::forced_import(
|
||||
cfg.db,
|
||||
&cfg.name("cost_basis"),
|
||||
cfg.version,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
invested_capital: PercentilesVecs::forced_import(
|
||||
cfg.db,
|
||||
&cfg.name("invested_capital"),
|
||||
cfg.version,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
})
|
||||
}
|
||||
|
||||
pub(crate) fn truncate_push_percentiles(
|
||||
&mut self,
|
||||
height: Height,
|
||||
state: &mut CohortState<RealizedState>,
|
||||
is_day_boundary: bool,
|
||||
) -> Result<()> {
|
||||
let computed = if is_day_boundary {
|
||||
state.compute_percentiles()
|
||||
} else {
|
||||
state.cached_percentiles()
|
||||
};
|
||||
|
||||
let sat_prices = computed
|
||||
.as_ref()
|
||||
.map(|p| p.sat_weighted)
|
||||
.unwrap_or([Cents::ZERO; PERCENTILES_LEN]);
|
||||
let usd_prices = computed
|
||||
.as_ref()
|
||||
.map(|p| p.usd_weighted)
|
||||
.unwrap_or([Cents::ZERO; PERCENTILES_LEN]);
|
||||
|
||||
self.push_arrays(height, &sat_prices, &usd_prices)
|
||||
}
|
||||
|
||||
/// Push pre-computed percentile arrays.
|
||||
/// Shared by both individual cohort and aggregate (K-way merge) paths.
|
||||
pub(crate) fn push_arrays(
|
||||
&mut self,
|
||||
height: Height,
|
||||
sat_prices: &[Cents; PERCENTILES_LEN],
|
||||
usd_prices: &[Cents; PERCENTILES_LEN],
|
||||
) -> Result<()> {
|
||||
self.percentiles.truncate_push(height, sat_prices)?;
|
||||
self.invested_capital.truncate_push(height, usd_prices)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) fn collect_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec> {
|
||||
let mut vecs: Vec<&mut dyn AnyStoredVec> = Vec::new();
|
||||
vecs.extend(
|
||||
self.percentiles
|
||||
.vecs
|
||||
.iter_mut()
|
||||
.map(|v| &mut v.cents.height as &mut dyn AnyStoredVec),
|
||||
);
|
||||
vecs.extend(
|
||||
self.invested_capital
|
||||
.vecs
|
||||
.iter_mut()
|
||||
.map(|v| &mut v.cents.height as &mut dyn AnyStoredVec),
|
||||
);
|
||||
vecs
|
||||
}
|
||||
|
||||
pub(crate) fn validate_computed_versions(&mut self, base_version: Version) -> Result<()> {
|
||||
self.percentiles
|
||||
.validate_computed_version_or_reset(base_version)?;
|
||||
self.invested_capital
|
||||
.validate_computed_version_or_reset(base_version)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
@@ -1,51 +1,93 @@
|
||||
mod base;
|
||||
mod extended;
|
||||
mod with_extended;
|
||||
|
||||
pub use base::CostBasisBase;
|
||||
pub use extended::CostBasisExtended;
|
||||
pub use with_extended::CostBasisWithExtended;
|
||||
|
||||
use brk_error::Result;
|
||||
use brk_types::{Height, Version};
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Cents, Height, Version};
|
||||
use vecdb::{AnyStoredVec, AnyVec, Rw, StorageMode, WritableVec};
|
||||
|
||||
use crate::distribution::state::{CohortState, RealizedState};
|
||||
use crate::internal::{ComputedFromHeight, PercentilesVecs, Price, PERCENTILES_LEN};
|
||||
|
||||
/// Polymorphic dispatch for cost basis metric types.
|
||||
///
|
||||
/// `CostBasisBase` has no version validation or percentiles (no-op defaults).
|
||||
/// `CostBasisWithExtended` validates versions and pushes percentiles.
|
||||
pub trait CostBasisLike: Send + Sync {
|
||||
fn as_base(&self) -> &CostBasisBase;
|
||||
fn as_base_mut(&mut self) -> &mut CostBasisBase;
|
||||
fn validate_computed_versions(&mut self, _base_version: Version) -> Result<()> { Ok(()) }
|
||||
fn truncate_push_percentiles(
|
||||
&mut self,
|
||||
_height: Height,
|
||||
_state: &mut CohortState<RealizedState>,
|
||||
_is_day_boundary: bool,
|
||||
) -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
use super::ImportConfig;
|
||||
|
||||
/// Cost basis metrics: min/max + percentiles.
|
||||
/// Used by all/sth/lth cohorts only.
|
||||
#[derive(Traversable)]
|
||||
pub struct CostBasis<M: StorageMode = Rw> {
|
||||
pub min: Price<ComputedFromHeight<Cents, M>>,
|
||||
pub max: Price<ComputedFromHeight<Cents, M>>,
|
||||
pub percentiles: PercentilesVecs<M>,
|
||||
pub invested_capital: PercentilesVecs<M>,
|
||||
}
|
||||
|
||||
impl CostBasisLike for CostBasisBase {
|
||||
fn as_base(&self) -> &CostBasisBase { self }
|
||||
fn as_base_mut(&mut self) -> &mut CostBasisBase { self }
|
||||
}
|
||||
|
||||
impl CostBasisLike for CostBasisWithExtended {
|
||||
fn as_base(&self) -> &CostBasisBase { &self.base }
|
||||
fn as_base_mut(&mut self) -> &mut CostBasisBase { &mut self.base }
|
||||
fn validate_computed_versions(&mut self, base_version: Version) -> Result<()> {
|
||||
self.extended.validate_computed_versions(base_version)
|
||||
impl CostBasis {
|
||||
pub(crate) fn forced_import(cfg: &ImportConfig) -> Result<Self> {
|
||||
Ok(Self {
|
||||
min: cfg.import("cost_basis_min", Version::ZERO)?,
|
||||
max: cfg.import("cost_basis_max", Version::ZERO)?,
|
||||
percentiles: PercentilesVecs::forced_import(
|
||||
cfg.db,
|
||||
&cfg.name("cost_basis"),
|
||||
cfg.version,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
invested_capital: PercentilesVecs::forced_import(
|
||||
cfg.db,
|
||||
&cfg.name("invested_capital"),
|
||||
cfg.version,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
})
|
||||
}
|
||||
fn truncate_push_percentiles(
|
||||
|
||||
pub(crate) fn min_stateful_height_len(&self) -> usize {
|
||||
self.min.cents.height.len().min(self.max.cents.height.len())
|
||||
}
|
||||
|
||||
pub(crate) fn truncate_push_minmax(
|
||||
&mut self,
|
||||
height: Height,
|
||||
state: &mut CohortState<RealizedState>,
|
||||
is_day_boundary: bool,
|
||||
min_price: Cents,
|
||||
max_price: Cents,
|
||||
) -> Result<()> {
|
||||
self.extended.truncate_push_percentiles(height, state, is_day_boundary)
|
||||
self.min.cents.height.truncate_push(height, min_price)?;
|
||||
self.max.cents.height.truncate_push(height, max_price)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) fn truncate_push_percentiles(
|
||||
&mut self,
|
||||
height: Height,
|
||||
sat_prices: &[Cents; PERCENTILES_LEN],
|
||||
usd_prices: &[Cents; PERCENTILES_LEN],
|
||||
) -> Result<()> {
|
||||
self.percentiles.truncate_push(height, sat_prices)?;
|
||||
self.invested_capital.truncate_push(height, usd_prices)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) fn validate_computed_versions(&mut self, base_version: Version) -> Result<()> {
|
||||
self.percentiles
|
||||
.validate_computed_version_or_reset(base_version)?;
|
||||
self.invested_capital
|
||||
.validate_computed_version_or_reset(base_version)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) fn collect_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec> {
|
||||
let mut vecs: Vec<&mut dyn AnyStoredVec> = vec![
|
||||
&mut self.min.cents.height,
|
||||
&mut self.max.cents.height,
|
||||
];
|
||||
vecs.extend(
|
||||
self.percentiles
|
||||
.vecs
|
||||
.iter_mut()
|
||||
.map(|v| &mut v.cents.height as &mut dyn AnyStoredVec),
|
||||
);
|
||||
vecs.extend(
|
||||
self.invested_capital
|
||||
.vecs
|
||||
.iter_mut()
|
||||
.map(|v| &mut v.cents.height as &mut dyn AnyStoredVec),
|
||||
);
|
||||
vecs
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use derive_more::{Deref, DerefMut};
|
||||
use vecdb::{AnyStoredVec, Rw, StorageMode};
|
||||
|
||||
use crate::distribution::metrics::ImportConfig;
|
||||
|
||||
use super::{CostBasisBase, CostBasisExtended};
|
||||
|
||||
/// Cost basis metrics with guaranteed extended (no Option).
|
||||
#[derive(Deref, DerefMut, Traversable)]
|
||||
pub struct CostBasisWithExtended<M: StorageMode = Rw> {
|
||||
#[deref]
|
||||
#[deref_mut]
|
||||
#[traversable(flatten)]
|
||||
pub base: CostBasisBase<M>,
|
||||
#[traversable(flatten)]
|
||||
pub extended: CostBasisExtended<M>,
|
||||
}
|
||||
|
||||
impl CostBasisWithExtended {
|
||||
pub(crate) fn forced_import(cfg: &ImportConfig) -> Result<Self> {
|
||||
Ok(Self {
|
||||
base: CostBasisBase::forced_import(cfg)?,
|
||||
extended: CostBasisExtended::forced_import(cfg)?,
|
||||
})
|
||||
}
|
||||
|
||||
pub(crate) fn collect_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec> {
|
||||
let mut vecs = self.base.collect_vecs_mut();
|
||||
vecs.extend(self.extended.collect_vecs_mut());
|
||||
vecs
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ mod activity;
|
||||
/// Accessor methods for `CohortMetricsBase` implementations.
|
||||
///
|
||||
/// All cohort metric types share the same field names (`filter`, `supply`, `outputs`,
|
||||
/// `activity`, `realized`, `unrealized`, `cost_basis`). For wrapper types like
|
||||
/// `activity`, `realized`, `unrealized`). For wrapper types like
|
||||
/// `ExtendedAdjustedCohortMetrics`, Rust's auto-deref resolves these through `Deref`.
|
||||
macro_rules! impl_cohort_accessors {
|
||||
() => {
|
||||
@@ -29,8 +29,6 @@ macro_rules! impl_cohort_accessors {
|
||||
fn realized_mut(&mut self) -> &mut Self::RealizedVecs { &mut self.realized }
|
||||
fn unrealized(&self) -> &Self::UnrealizedVecs { &self.unrealized }
|
||||
fn unrealized_mut(&mut self) -> &mut Self::UnrealizedVecs { &mut self.unrealized }
|
||||
fn cost_basis(&self) -> &Self::CostBasisVecs { &self.cost_basis }
|
||||
fn cost_basis_mut(&mut self) -> &mut Self::CostBasisVecs { &mut self.cost_basis }
|
||||
};
|
||||
}
|
||||
|
||||
@@ -49,7 +47,7 @@ pub use cohort::{
|
||||
ExtendedCohortMetrics, MinimalCohortMetrics,
|
||||
};
|
||||
pub use config::ImportConfig;
|
||||
pub use cost_basis::{CostBasisBase, CostBasisExtended, CostBasisLike, CostBasisWithExtended};
|
||||
pub use cost_basis::CostBasis;
|
||||
pub use outputs::OutputsMetrics;
|
||||
pub use realized::{
|
||||
RealizedAdjusted, RealizedBase, RealizedCore, RealizedFull, RealizedLike, RealizedMinimal,
|
||||
@@ -94,7 +92,6 @@ pub trait CohortMetricsBase: CohortMetricsState<Realized = RealizedState> + Send
|
||||
type ActivityVecs: ActivityLike;
|
||||
type RealizedVecs: RealizedLike;
|
||||
type UnrealizedVecs: UnrealizedLike;
|
||||
type CostBasisVecs: CostBasisLike;
|
||||
|
||||
fn filter(&self) -> &Filter;
|
||||
fn supply(&self) -> &SupplyMetrics;
|
||||
@@ -107,8 +104,6 @@ pub trait CohortMetricsBase: CohortMetricsState<Realized = RealizedState> + Send
|
||||
fn realized_mut(&mut self) -> &mut Self::RealizedVecs;
|
||||
fn unrealized(&self) -> &Self::UnrealizedVecs;
|
||||
fn unrealized_mut(&mut self) -> &mut Self::UnrealizedVecs;
|
||||
fn cost_basis(&self) -> &Self::CostBasisVecs;
|
||||
fn cost_basis_mut(&mut self) -> &mut Self::CostBasisVecs;
|
||||
|
||||
/// Convenience: access activity as `&ActivityBase` (via `ActivityLike::as_base`).
|
||||
fn activity_base(&self) -> &ActivityBase { self.activity().as_base() }
|
||||
@@ -122,46 +117,26 @@ pub trait CohortMetricsBase: CohortMetricsState<Realized = RealizedState> + Send
|
||||
fn unrealized_base(&self) -> &UnrealizedBase { self.unrealized().as_base() }
|
||||
fn unrealized_base_mut(&mut self) -> &mut UnrealizedBase { self.unrealized_mut().as_base_mut() }
|
||||
|
||||
/// Convenience: access cost basis as `&CostBasisBase` (via `CostBasisLike::as_base`).
|
||||
fn cost_basis_base(&self) -> &CostBasisBase { self.cost_basis().as_base() }
|
||||
fn cost_basis_base_mut(&mut self) -> &mut CostBasisBase { self.cost_basis_mut().as_base_mut() }
|
||||
|
||||
fn validate_computed_versions(&mut self, base_version: Version) -> Result<()> {
|
||||
self.supply_mut().validate_computed_versions(base_version)?;
|
||||
self.activity_mut().validate_computed_versions(base_version)?;
|
||||
self.cost_basis_mut().validate_computed_versions(base_version)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Apply pending, push min/max cost basis, compute and push unrealized state.
|
||||
fn compute_and_push_unrealized_base(
|
||||
/// Apply pending state, compute and push unrealized state.
|
||||
fn compute_and_push_unrealized(
|
||||
&mut self,
|
||||
height: Height,
|
||||
height_price: Cents,
|
||||
state: &mut CohortState<RealizedState>,
|
||||
) -> Result<()> {
|
||||
state.apply_pending();
|
||||
self.cost_basis_base_mut()
|
||||
.truncate_push_minmax(height, state)?;
|
||||
let unrealized_state = state.compute_unrealized_state(height_price);
|
||||
self.unrealized_mut()
|
||||
.truncate_push(height, &unrealized_state)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Compute and push unrealized states + cost basis percentiles (no-op for base types).
|
||||
fn compute_then_truncate_push_unrealized_states(
|
||||
&mut self,
|
||||
height: Height,
|
||||
height_price: Cents,
|
||||
state: &mut CohortState<RealizedState>,
|
||||
is_day_boundary: bool,
|
||||
) -> Result<()> {
|
||||
self.compute_and_push_unrealized_base(height, height_price, state)?;
|
||||
self.cost_basis_mut().truncate_push_percentiles(height, state, is_day_boundary)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn collect_all_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec>;
|
||||
|
||||
fn min_stateful_height_len(&self) -> usize {
|
||||
@@ -171,7 +146,6 @@ pub trait CohortMetricsBase: CohortMetricsState<Realized = RealizedState> + Send
|
||||
.min(self.activity().min_len())
|
||||
.min(self.realized().min_stateful_height_len())
|
||||
.min(self.unrealized().min_stateful_height_len())
|
||||
.min(self.cost_basis_base().min_stateful_height_len())
|
||||
}
|
||||
|
||||
fn truncate_push(&mut self, height: Height, state: &CohortState<RealizedState>) -> Result<()> {
|
||||
@@ -258,11 +232,6 @@ pub trait CohortMetricsBase: CohortMetricsState<Realized = RealizedState> + Send
|
||||
&others.iter().map(|v| v.unrealized_base()).collect::<Vec<_>>(),
|
||||
exit,
|
||||
)?;
|
||||
self.cost_basis_base_mut().compute_from_stateful(
|
||||
starting_indexes,
|
||||
&others.iter().map(|v| v.cost_basis_base()).collect::<Vec<_>>(),
|
||||
exit,
|
||||
)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ use std::{collections::BTreeMap, path::Path};
|
||||
use brk_error::Result;
|
||||
use brk_types::{Age, Cents, CentsCompact, CentsSats, CentsSquaredSats, CostBasisSnapshot, Height, Sats, SupplyState};
|
||||
|
||||
use super::super::cost_basis::{CostBasisData, Percentiles, RealizedOps, UnrealizedState};
|
||||
use super::super::cost_basis::{CostBasisData, RealizedOps, UnrealizedState};
|
||||
|
||||
pub struct SendPrecomputed {
|
||||
pub sats: Sats,
|
||||
@@ -97,18 +97,6 @@ impl<R: RealizedOps> CohortState<R> {
|
||||
self.cost_basis_data.apply_pending();
|
||||
}
|
||||
|
||||
pub(crate) fn cost_basis_data_first_key_value(&self) -> Option<(Cents, &Sats)> {
|
||||
self.cost_basis_data
|
||||
.first_key_value()
|
||||
.map(|(k, v)| (k.into(), v))
|
||||
}
|
||||
|
||||
pub(crate) fn cost_basis_data_last_key_value(&self) -> Option<(Cents, &Sats)> {
|
||||
self.cost_basis_data
|
||||
.last_key_value()
|
||||
.map(|(k, v)| (k.into(), v))
|
||||
}
|
||||
|
||||
pub(crate) fn reset_single_iteration_values(&mut self) {
|
||||
self.sent = Sats::ZERO;
|
||||
self.satdays_destroyed = Sats::ZERO;
|
||||
@@ -288,14 +276,6 @@ impl<R: RealizedOps> CohortState<R> {
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn compute_percentiles(&mut self) -> Option<Percentiles> {
|
||||
self.cost_basis_data.compute_percentiles()
|
||||
}
|
||||
|
||||
pub(crate) fn cached_percentiles(&self) -> Option<Percentiles> {
|
||||
self.cost_basis_data.cached_percentiles()
|
||||
}
|
||||
|
||||
pub(crate) fn compute_unrealized_state(&mut self, height_price: Cents) -> UnrealizedState {
|
||||
self.cost_basis_data.compute_unrealized_state(height_price)
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ use brk_types::{
|
||||
use rustc_hash::FxHashMap;
|
||||
use vecdb::{Bytes, unlikely};
|
||||
|
||||
use super::{CachedUnrealizedState, Percentiles, UnrealizedState};
|
||||
use super::{CachedUnrealizedState, UnrealizedState};
|
||||
|
||||
/// Type alias for the price-to-sats map used in cost basis data.
|
||||
pub(super) type CostBasisMap = BTreeMap<CentsCompact, Sats>;
|
||||
@@ -31,8 +31,6 @@ pub struct CostBasisData {
|
||||
pending: FxHashMap<CentsCompact, (Sats, Sats)>,
|
||||
pending_raw: PendingRaw,
|
||||
cache: Option<CachedUnrealizedState>,
|
||||
percentiles_dirty: bool,
|
||||
cached_percentiles: Option<Percentiles>,
|
||||
rounding_digits: Option<i32>,
|
||||
/// Monotonically increasing counter, bumped on each apply_pending with actual changes.
|
||||
generation: u64,
|
||||
@@ -48,8 +46,6 @@ impl CostBasisData {
|
||||
pending: FxHashMap::default(),
|
||||
pending_raw: PendingRaw::default(),
|
||||
cache: None,
|
||||
percentiles_dirty: true,
|
||||
cached_percentiles: None,
|
||||
rounding_digits: None,
|
||||
generation: 0,
|
||||
}
|
||||
@@ -77,8 +73,6 @@ impl CostBasisData {
|
||||
self.pending.clear();
|
||||
self.pending_raw = PendingRaw::default();
|
||||
self.cache = None;
|
||||
self.percentiles_dirty = true;
|
||||
self.cached_percentiles = None;
|
||||
Ok(height)
|
||||
}
|
||||
|
||||
@@ -105,28 +99,6 @@ impl CostBasisData {
|
||||
self.pending.is_empty() && self.state.as_ref().unwrap().base.map.is_empty()
|
||||
}
|
||||
|
||||
pub(crate) fn first_key_value(&self) -> Option<(CentsCompact, &Sats)> {
|
||||
self.assert_pending_empty();
|
||||
self.state
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.base
|
||||
.map
|
||||
.first_key_value()
|
||||
.map(|(&k, v)| (k, v))
|
||||
}
|
||||
|
||||
pub(crate) fn last_key_value(&self) -> Option<(CentsCompact, &Sats)> {
|
||||
self.assert_pending_empty();
|
||||
self.state
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.base
|
||||
.map
|
||||
.last_key_value()
|
||||
.map(|(&k, v)| (k, v))
|
||||
}
|
||||
|
||||
/// Get the exact cap_raw value (not recomputed from map).
|
||||
pub(crate) fn cap_raw(&self) -> CentsSats {
|
||||
self.assert_pending_empty();
|
||||
@@ -184,7 +156,6 @@ impl CostBasisData {
|
||||
return;
|
||||
}
|
||||
self.generation = self.generation.wrapping_add(1);
|
||||
self.percentiles_dirty = true;
|
||||
let map = &mut self.state.as_mut().unwrap().base.map;
|
||||
for (cents, (inc, dec)) in self.pending.drain() {
|
||||
match map.entry(cents) {
|
||||
@@ -273,23 +244,6 @@ impl CostBasisData {
|
||||
self.pending.clear();
|
||||
self.pending_raw = PendingRaw::default();
|
||||
self.cache = None;
|
||||
self.percentiles_dirty = true;
|
||||
self.cached_percentiles = None;
|
||||
}
|
||||
|
||||
pub(crate) fn cached_percentiles(&self) -> Option<Percentiles> {
|
||||
self.cached_percentiles
|
||||
}
|
||||
|
||||
pub(crate) fn compute_percentiles(&mut self) -> Option<Percentiles> {
|
||||
self.assert_pending_empty();
|
||||
if !self.percentiles_dirty {
|
||||
return self.cached_percentiles;
|
||||
}
|
||||
self.cached_percentiles =
|
||||
Percentiles::compute_from_map(&self.state.as_ref().unwrap().base.map);
|
||||
self.percentiles_dirty = false;
|
||||
self.cached_percentiles
|
||||
}
|
||||
|
||||
pub(crate) fn compute_unrealized_state(&mut self, height_price: Cents) -> UnrealizedState {
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
mod data;
|
||||
mod percentiles;
|
||||
mod realized;
|
||||
mod unrealized;
|
||||
|
||||
pub use data::*;
|
||||
pub use percentiles::*;
|
||||
pub use realized::*;
|
||||
pub use unrealized::UnrealizedState;
|
||||
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
use brk_types::Cents;
|
||||
|
||||
use crate::internal::{PERCENTILES, PERCENTILES_LEN};
|
||||
|
||||
use super::CostBasisMap;
|
||||
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub struct Percentiles {
|
||||
/// Sat-weighted: percentiles by coin count
|
||||
pub sat_weighted: [Cents; PERCENTILES_LEN],
|
||||
/// USD-weighted: percentiles by invested capital (sats × price)
|
||||
pub usd_weighted: [Cents; PERCENTILES_LEN],
|
||||
}
|
||||
|
||||
impl Percentiles {
|
||||
/// Compute both sat-weighted and USD-weighted percentiles in two passes over the BTreeMap.
|
||||
/// Avoids intermediate Vec allocation by iterating the map directly.
|
||||
pub(crate) fn compute_from_map(map: &CostBasisMap) -> Option<Self> {
|
||||
if map.is_empty() {
|
||||
return None;
|
||||
}
|
||||
|
||||
// First pass: compute totals
|
||||
let mut total_sats: u64 = 0;
|
||||
let mut total_usd: u128 = 0;
|
||||
for (¢s, &sats) in map.iter() {
|
||||
total_sats += u64::from(sats);
|
||||
total_usd += cents.as_u128() * sats.as_u128();
|
||||
}
|
||||
|
||||
if total_sats == 0 {
|
||||
return None;
|
||||
}
|
||||
|
||||
// Precompute targets to avoid repeated multiplication in the inner loop
|
||||
let sat_targets: [u64; PERCENTILES_LEN] =
|
||||
PERCENTILES.map(|p| total_sats * u64::from(p) / 100);
|
||||
let usd_targets: [u128; PERCENTILES_LEN] =
|
||||
PERCENTILES.map(|p| total_usd * u128::from(p) / 100);
|
||||
|
||||
let mut sat_weighted = [Cents::ZERO; PERCENTILES_LEN];
|
||||
let mut usd_weighted = [Cents::ZERO; PERCENTILES_LEN];
|
||||
let mut cumsum_sats: u64 = 0;
|
||||
let mut cumsum_usd: u128 = 0;
|
||||
let mut sat_idx = 0;
|
||||
let mut usd_idx = 0;
|
||||
|
||||
// Second pass: compute percentiles
|
||||
for (¢s, &sats) in map.iter() {
|
||||
cumsum_sats += u64::from(sats);
|
||||
cumsum_usd += cents.as_u128() * sats.as_u128();
|
||||
|
||||
while sat_idx < PERCENTILES_LEN && cumsum_sats >= sat_targets[sat_idx] {
|
||||
sat_weighted[sat_idx] = cents.into();
|
||||
sat_idx += 1;
|
||||
}
|
||||
|
||||
while usd_idx < PERCENTILES_LEN && cumsum_usd >= usd_targets[usd_idx] {
|
||||
usd_weighted[usd_idx] = cents.into();
|
||||
usd_idx += 1;
|
||||
}
|
||||
}
|
||||
|
||||
Some(Self {
|
||||
sat_weighted,
|
||||
usd_weighted,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -2640,35 +2640,6 @@ function create_10y2y3y4y5y6y8yPattern(client, acc) {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @typedef {Object} ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern
|
||||
* @property {CoinblocksCoindaysSentPattern} activity
|
||||
* @property {MaxMinPattern} costBasis
|
||||
* @property {UtxoPattern} outputs
|
||||
* @property {MvrvNegNetRealizedSentSoprValuePattern} realized
|
||||
* @property {SupplyPattern2} relative
|
||||
* @property {DeltaHalvedTotalPattern} supply
|
||||
* @property {InvestedInvestorNegNetSupplyUnrealizedPattern} unrealized
|
||||
*/
|
||||
|
||||
/**
|
||||
* Create a ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern pattern node
|
||||
* @param {BrkClientBase} client
|
||||
* @param {string} acc - Accumulated metric name
|
||||
* @returns {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern}
|
||||
*/
|
||||
function createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, acc) {
|
||||
return {
|
||||
activity: createCoinblocksCoindaysSentPattern(client, acc),
|
||||
costBasis: createMaxMinPattern(client, _m(acc, 'cost_basis')),
|
||||
outputs: createUtxoPattern(client, _m(acc, 'utxo_count')),
|
||||
realized: createMvrvNegNetRealizedSentSoprValuePattern(client, acc),
|
||||
relative: createSupplyPattern2(client, _m(acc, 'supply')),
|
||||
supply: createDeltaHalvedTotalPattern(client, _m(acc, 'supply')),
|
||||
unrealized: createInvestedInvestorNegNetSupplyUnrealizedPattern(client, acc),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @typedef {Object} ActivityAddrOutputsRealizedSupplyUnrealizedPattern
|
||||
* @property {SentPattern} activity
|
||||
@@ -2700,12 +2671,12 @@ function createActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, acc) {
|
||||
|
||||
/**
|
||||
* @typedef {Object} ActivityOutputsRealizedRelativeSupplyUnrealizedPattern
|
||||
* @property {SentPattern} activity
|
||||
* @property {CoinblocksCoindaysSentPattern} activity
|
||||
* @property {UtxoPattern} outputs
|
||||
* @property {MvrvNegNetRealizedSoprValuePattern} realized
|
||||
* @property {MvrvNegNetRealizedSentSoprValuePattern} realized
|
||||
* @property {SupplyPattern2} relative
|
||||
* @property {DeltaHalvedTotalPattern} supply
|
||||
* @property {NegNetSupplyUnrealizedPattern} unrealized
|
||||
* @property {InvestedInvestorNegNetSupplyUnrealizedPattern} unrealized
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -2715,6 +2686,33 @@ function createActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, acc) {
|
||||
* @returns {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern}
|
||||
*/
|
||||
function createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, acc) {
|
||||
return {
|
||||
activity: createCoinblocksCoindaysSentPattern(client, acc),
|
||||
outputs: createUtxoPattern(client, _m(acc, 'utxo_count')),
|
||||
realized: createMvrvNegNetRealizedSentSoprValuePattern(client, acc),
|
||||
relative: createSupplyPattern2(client, _m(acc, 'supply')),
|
||||
supply: createDeltaHalvedTotalPattern(client, _m(acc, 'supply')),
|
||||
unrealized: createInvestedInvestorNegNetSupplyUnrealizedPattern(client, acc),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @typedef {Object} ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2
|
||||
* @property {SentPattern} activity
|
||||
* @property {UtxoPattern} outputs
|
||||
* @property {MvrvNegNetRealizedSoprValuePattern} realized
|
||||
* @property {SupplyPattern2} relative
|
||||
* @property {DeltaHalvedTotalPattern} supply
|
||||
* @property {NegNetSupplyUnrealizedPattern} unrealized
|
||||
*/
|
||||
|
||||
/**
|
||||
* Create a ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 pattern node
|
||||
* @param {BrkClientBase} client
|
||||
* @param {string} acc - Accumulated metric name
|
||||
* @returns {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2}
|
||||
*/
|
||||
function createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, acc) {
|
||||
return {
|
||||
activity: createSentPattern(client, _m(acc, 'sent')),
|
||||
outputs: createUtxoPattern(client, _m(acc, 'utxo_count')),
|
||||
@@ -3425,21 +3423,21 @@ function createChangeRatePattern2(client, acc) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @typedef {Object} MaxMinPattern
|
||||
* @property {CentsSatsUsdPattern} max
|
||||
* @property {CentsSatsUsdPattern} min
|
||||
* @typedef {Object} HeightSumPattern
|
||||
* @property {MetricPattern18<StoredU64>} height
|
||||
* @property {_1m1w1y24hPattern<StoredU64>} sum
|
||||
*/
|
||||
|
||||
/**
|
||||
* Create a MaxMinPattern pattern node
|
||||
* Create a HeightSumPattern pattern node
|
||||
* @param {BrkClientBase} client
|
||||
* @param {string} acc - Accumulated metric name
|
||||
* @returns {MaxMinPattern}
|
||||
* @returns {HeightSumPattern}
|
||||
*/
|
||||
function createMaxMinPattern(client, acc) {
|
||||
function createHeightSumPattern(client, acc) {
|
||||
return {
|
||||
max: createCentsSatsUsdPattern(client, _m(acc, 'max')),
|
||||
min: createCentsSatsUsdPattern(client, _m(acc, 'min')),
|
||||
height: createMetricPattern18(client, acc),
|
||||
sum: create_1m1w1y24hPattern(client, _m(acc, 'sum')),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4921,102 +4919,102 @@ function create_24hPattern(client, acc) {
|
||||
|
||||
/**
|
||||
* @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} upTo1h
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _1hTo1d
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _1dTo1w
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _1wTo1m
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _1mTo2m
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _2mTo3m
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _3mTo4m
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _4mTo5m
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _5mTo6m
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _6mTo1y
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _1yTo2y
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _2yTo3y
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _3yTo4y
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _4yTo5y
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _5yTo6y
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _6yTo7y
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _7yTo8y
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _8yTo10y
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _10yTo12y
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} _12yTo15y
|
||||
* @property {ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern} from15y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} upTo1h
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1hTo1d
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1dTo1w
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1wTo1m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1mTo2m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2mTo3m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _3mTo4m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _4mTo5m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _5mTo6m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _6mTo1y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1yTo2y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2yTo3y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _3yTo4y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _4yTo5y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _5yTo6y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _6yTo7y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _7yTo8y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _8yTo10y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _10yTo12y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _12yTo15y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} from15y
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1w
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _3m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _4m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _5m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _6m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _3y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _4y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _5y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _6y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _7y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _8y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _10y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _12y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _15y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _1w
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _1m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _3m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _4m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _5m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _6m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _1y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _3y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _4y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _5y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _6y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _7y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _8y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _10y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _12y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _15y
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1d
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1w
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _3m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _4m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _5m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _6m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _3y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _4y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _5y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _6y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _7y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _8y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _10y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _12y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _1d
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _1w
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _1m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _3m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _4m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _5m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _6m
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _1y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _3y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _4y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _5y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _6y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _7y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _8y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _10y
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _12y
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Epoch
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _0
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _1
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _3
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _4
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _0
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _1
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _3
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _4
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Class
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2009
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2010
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2011
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2012
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2013
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2014
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2015
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2016
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2017
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2018
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2019
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2020
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2021
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2022
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2023
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2024
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2025
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern} _2026
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2009
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2010
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2011
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2012
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2013
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2014
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2015
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2016
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2017
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2018
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2019
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2020
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2021
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2022
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2023
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2024
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2025
|
||||
* @property {ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2} _2026
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -5162,15 +5160,15 @@ function create_24hPattern(client, acc) {
|
||||
|
||||
/**
|
||||
* @typedef {Object} MetricsTree_Distribution_NewAddrCount
|
||||
* @property {AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern} all
|
||||
* @property {AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern} p2pk65
|
||||
* @property {AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern} p2pk33
|
||||
* @property {AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern} p2pkh
|
||||
* @property {AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern} p2sh
|
||||
* @property {AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern} p2wpkh
|
||||
* @property {AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern} p2wsh
|
||||
* @property {AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern} p2tr
|
||||
* @property {AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern} p2a
|
||||
* @property {HeightSumPattern} all
|
||||
* @property {HeightSumPattern} p2pk65
|
||||
* @property {HeightSumPattern} p2pk33
|
||||
* @property {HeightSumPattern} p2pkh
|
||||
* @property {HeightSumPattern} p2sh
|
||||
* @property {HeightSumPattern} p2wpkh
|
||||
* @property {HeightSumPattern} p2wsh
|
||||
* @property {HeightSumPattern} p2tr
|
||||
* @property {HeightSumPattern} p2a
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -7133,94 +7131,94 @@ class BrkClient extends BrkClientBase {
|
||||
utxoCountDeltaExtended: create_24hChangeRatePattern(this, 'lth_utxo_count_delta'),
|
||||
},
|
||||
ageRange: {
|
||||
upTo1h: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_1h_old'),
|
||||
_1hTo1d: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_1h_to_1d_old'),
|
||||
_1dTo1w: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_1d_to_1w_old'),
|
||||
_1wTo1m: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_1w_to_1m_old'),
|
||||
_1mTo2m: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_1m_to_2m_old'),
|
||||
_2mTo3m: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_2m_to_3m_old'),
|
||||
_3mTo4m: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_3m_to_4m_old'),
|
||||
_4mTo5m: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_4m_to_5m_old'),
|
||||
_5mTo6m: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_5m_to_6m_old'),
|
||||
_6mTo1y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_6m_to_1y_old'),
|
||||
_1yTo2y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_1y_to_2y_old'),
|
||||
_2yTo3y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_2y_to_3y_old'),
|
||||
_3yTo4y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_3y_to_4y_old'),
|
||||
_4yTo5y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_4y_to_5y_old'),
|
||||
_5yTo6y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_5y_to_6y_old'),
|
||||
_6yTo7y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_6y_to_7y_old'),
|
||||
_7yTo8y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_7y_to_8y_old'),
|
||||
_8yTo10y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_8y_to_10y_old'),
|
||||
_10yTo12y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_10y_to_12y_old'),
|
||||
_12yTo15y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_12y_to_15y_old'),
|
||||
from15y: createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_15y_old'),
|
||||
upTo1h: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_1h_old'),
|
||||
_1hTo1d: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_1h_to_1d_old'),
|
||||
_1dTo1w: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_1d_to_1w_old'),
|
||||
_1wTo1m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_1w_to_1m_old'),
|
||||
_1mTo2m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_1m_to_2m_old'),
|
||||
_2mTo3m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_2m_to_3m_old'),
|
||||
_3mTo4m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_3m_to_4m_old'),
|
||||
_4mTo5m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_4m_to_5m_old'),
|
||||
_5mTo6m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_5m_to_6m_old'),
|
||||
_6mTo1y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_6m_to_1y_old'),
|
||||
_1yTo2y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_1y_to_2y_old'),
|
||||
_2yTo3y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_2y_to_3y_old'),
|
||||
_3yTo4y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_3y_to_4y_old'),
|
||||
_4yTo5y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_4y_to_5y_old'),
|
||||
_5yTo6y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_5y_to_6y_old'),
|
||||
_6yTo7y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_6y_to_7y_old'),
|
||||
_7yTo8y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_7y_to_8y_old'),
|
||||
_8yTo10y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_8y_to_10y_old'),
|
||||
_10yTo12y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_10y_to_12y_old'),
|
||||
_12yTo15y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_12y_to_15y_old'),
|
||||
from15y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_15y_old'),
|
||||
},
|
||||
maxAge: {
|
||||
_1w: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_1w_old'),
|
||||
_1m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_1m_old'),
|
||||
_2m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_2m_old'),
|
||||
_3m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_3m_old'),
|
||||
_4m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_4m_old'),
|
||||
_5m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_5m_old'),
|
||||
_6m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_6m_old'),
|
||||
_1y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_1y_old'),
|
||||
_2y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_2y_old'),
|
||||
_3y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_3y_old'),
|
||||
_4y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_4y_old'),
|
||||
_5y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_5y_old'),
|
||||
_6y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_6y_old'),
|
||||
_7y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_7y_old'),
|
||||
_8y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_8y_old'),
|
||||
_10y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_10y_old'),
|
||||
_12y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_12y_old'),
|
||||
_15y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_under_15y_old'),
|
||||
_1w: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_1w_old'),
|
||||
_1m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_1m_old'),
|
||||
_2m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_2m_old'),
|
||||
_3m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_3m_old'),
|
||||
_4m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_4m_old'),
|
||||
_5m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_5m_old'),
|
||||
_6m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_6m_old'),
|
||||
_1y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_1y_old'),
|
||||
_2y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_2y_old'),
|
||||
_3y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_3y_old'),
|
||||
_4y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_4y_old'),
|
||||
_5y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_5y_old'),
|
||||
_6y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_6y_old'),
|
||||
_7y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_7y_old'),
|
||||
_8y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_8y_old'),
|
||||
_10y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_10y_old'),
|
||||
_12y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_12y_old'),
|
||||
_15y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_under_15y_old'),
|
||||
},
|
||||
minAge: {
|
||||
_1d: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_1d_old'),
|
||||
_1w: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_1w_old'),
|
||||
_1m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_1m_old'),
|
||||
_2m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_2m_old'),
|
||||
_3m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_3m_old'),
|
||||
_4m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_4m_old'),
|
||||
_5m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_5m_old'),
|
||||
_6m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_6m_old'),
|
||||
_1y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_1y_old'),
|
||||
_2y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_2y_old'),
|
||||
_3y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_3y_old'),
|
||||
_4y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_4y_old'),
|
||||
_5y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_5y_old'),
|
||||
_6y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_6y_old'),
|
||||
_7y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_7y_old'),
|
||||
_8y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_8y_old'),
|
||||
_10y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_10y_old'),
|
||||
_12y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'utxos_over_12y_old'),
|
||||
_1d: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_1d_old'),
|
||||
_1w: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_1w_old'),
|
||||
_1m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_1m_old'),
|
||||
_2m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_2m_old'),
|
||||
_3m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_3m_old'),
|
||||
_4m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_4m_old'),
|
||||
_5m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_5m_old'),
|
||||
_6m: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_6m_old'),
|
||||
_1y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_1y_old'),
|
||||
_2y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_2y_old'),
|
||||
_3y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_3y_old'),
|
||||
_4y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_4y_old'),
|
||||
_5y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_5y_old'),
|
||||
_6y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_6y_old'),
|
||||
_7y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_7y_old'),
|
||||
_8y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_8y_old'),
|
||||
_10y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_10y_old'),
|
||||
_12y: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'utxos_over_12y_old'),
|
||||
},
|
||||
epoch: {
|
||||
_0: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'epoch_0'),
|
||||
_1: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'epoch_1'),
|
||||
_2: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'epoch_2'),
|
||||
_3: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'epoch_3'),
|
||||
_4: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'epoch_4'),
|
||||
_0: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'epoch_0'),
|
||||
_1: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'epoch_1'),
|
||||
_2: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'epoch_2'),
|
||||
_3: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'epoch_3'),
|
||||
_4: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'epoch_4'),
|
||||
},
|
||||
class: {
|
||||
_2009: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2009'),
|
||||
_2010: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2010'),
|
||||
_2011: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2011'),
|
||||
_2012: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2012'),
|
||||
_2013: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2013'),
|
||||
_2014: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2014'),
|
||||
_2015: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2015'),
|
||||
_2016: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2016'),
|
||||
_2017: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2017'),
|
||||
_2018: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2018'),
|
||||
_2019: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2019'),
|
||||
_2020: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2020'),
|
||||
_2021: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2021'),
|
||||
_2022: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2022'),
|
||||
_2023: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2023'),
|
||||
_2024: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2024'),
|
||||
_2025: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2025'),
|
||||
_2026: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(this, 'class_2026'),
|
||||
_2009: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2009'),
|
||||
_2010: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2010'),
|
||||
_2011: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2011'),
|
||||
_2012: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2012'),
|
||||
_2013: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2013'),
|
||||
_2014: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2014'),
|
||||
_2015: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2015'),
|
||||
_2016: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2016'),
|
||||
_2017: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2017'),
|
||||
_2018: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2018'),
|
||||
_2019: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2019'),
|
||||
_2020: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2020'),
|
||||
_2021: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2021'),
|
||||
_2022: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2022'),
|
||||
_2023: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2023'),
|
||||
_2024: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2024'),
|
||||
_2025: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2025'),
|
||||
_2026: createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(this, 'class_2026'),
|
||||
},
|
||||
geAmount: {
|
||||
_1sat: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1sat'),
|
||||
@@ -7347,15 +7345,15 @@ class BrkClient extends BrkClientBase {
|
||||
},
|
||||
totalAddrCount: createAllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern(this, 'total_addr_count'),
|
||||
newAddrCount: {
|
||||
all: createAverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(this, 'new_addr_count'),
|
||||
p2pk65: createAverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(this, 'p2pk65_new_addr_count'),
|
||||
p2pk33: createAverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(this, 'p2pk33_new_addr_count'),
|
||||
p2pkh: createAverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(this, 'p2pkh_new_addr_count'),
|
||||
p2sh: createAverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(this, 'p2sh_new_addr_count'),
|
||||
p2wpkh: createAverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(this, 'p2wpkh_new_addr_count'),
|
||||
p2wsh: createAverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(this, 'p2wsh_new_addr_count'),
|
||||
p2tr: createAverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(this, 'p2tr_new_addr_count'),
|
||||
p2a: createAverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(this, 'p2a_new_addr_count'),
|
||||
all: createHeightSumPattern(this, 'new_addr_count'),
|
||||
p2pk65: createHeightSumPattern(this, 'p2pk65_new_addr_count'),
|
||||
p2pk33: createHeightSumPattern(this, 'p2pk33_new_addr_count'),
|
||||
p2pkh: createHeightSumPattern(this, 'p2pkh_new_addr_count'),
|
||||
p2sh: createHeightSumPattern(this, 'p2sh_new_addr_count'),
|
||||
p2wpkh: createHeightSumPattern(this, 'p2wpkh_new_addr_count'),
|
||||
p2wsh: createHeightSumPattern(this, 'p2wsh_new_addr_count'),
|
||||
p2tr: createHeightSumPattern(this, 'p2tr_new_addr_count'),
|
||||
p2a: createHeightSumPattern(this, 'p2a_new_addr_count'),
|
||||
},
|
||||
delta: {
|
||||
all: createChangeRatePattern2(this, 'addr_count'),
|
||||
|
||||
@@ -2562,19 +2562,6 @@ class _10y2y3y4y5y6y8yPattern:
|
||||
self._6y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '6y'))
|
||||
self._8y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '8y'))
|
||||
|
||||
class ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern:
|
||||
"""Pattern struct for repeated tree structure."""
|
||||
|
||||
def __init__(self, client: BrkClientBase, acc: str):
|
||||
"""Create pattern node with accumulated metric name."""
|
||||
self.activity: CoinblocksCoindaysSentPattern = CoinblocksCoindaysSentPattern(client, acc)
|
||||
self.cost_basis: MaxMinPattern = MaxMinPattern(client, _m(acc, 'cost_basis'))
|
||||
self.outputs: UtxoPattern = UtxoPattern(client, _m(acc, 'utxo_count'))
|
||||
self.realized: MvrvNegNetRealizedSentSoprValuePattern = MvrvNegNetRealizedSentSoprValuePattern(client, acc)
|
||||
self.relative: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply'))
|
||||
self.supply: DeltaHalvedTotalPattern = DeltaHalvedTotalPattern(client, _m(acc, 'supply'))
|
||||
self.unrealized: InvestedInvestorNegNetSupplyUnrealizedPattern = InvestedInvestorNegNetSupplyUnrealizedPattern(client, acc)
|
||||
|
||||
class ActivityAddrOutputsRealizedSupplyUnrealizedPattern:
|
||||
"""Pattern struct for repeated tree structure."""
|
||||
|
||||
@@ -2591,6 +2578,18 @@ class ActivityAddrOutputsRealizedSupplyUnrealizedPattern:
|
||||
class ActivityOutputsRealizedRelativeSupplyUnrealizedPattern:
|
||||
"""Pattern struct for repeated tree structure."""
|
||||
|
||||
def __init__(self, client: BrkClientBase, acc: str):
|
||||
"""Create pattern node with accumulated metric name."""
|
||||
self.activity: CoinblocksCoindaysSentPattern = CoinblocksCoindaysSentPattern(client, acc)
|
||||
self.outputs: UtxoPattern = UtxoPattern(client, _m(acc, 'utxo_count'))
|
||||
self.realized: MvrvNegNetRealizedSentSoprValuePattern = MvrvNegNetRealizedSentSoprValuePattern(client, acc)
|
||||
self.relative: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply'))
|
||||
self.supply: DeltaHalvedTotalPattern = DeltaHalvedTotalPattern(client, _m(acc, 'supply'))
|
||||
self.unrealized: InvestedInvestorNegNetSupplyUnrealizedPattern = InvestedInvestorNegNetSupplyUnrealizedPattern(client, acc)
|
||||
|
||||
class ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2:
|
||||
"""Pattern struct for repeated tree structure."""
|
||||
|
||||
def __init__(self, client: BrkClientBase, acc: str):
|
||||
"""Create pattern node with accumulated metric name."""
|
||||
self.activity: SentPattern = SentPattern(client, _m(acc, 'sent'))
|
||||
@@ -2897,13 +2896,13 @@ class ChangeRatePattern2:
|
||||
self.change: _1m1w1y24hPattern[StoredI64] = _1m1w1y24hPattern(client, _m(acc, 'change'))
|
||||
self.rate: _1m1w1y24hPattern2 = _1m1w1y24hPattern2(client, _m(acc, 'rate'))
|
||||
|
||||
class MaxMinPattern:
|
||||
class HeightSumPattern:
|
||||
"""Pattern struct for repeated tree structure."""
|
||||
|
||||
def __init__(self, client: BrkClientBase, acc: str):
|
||||
"""Create pattern node with accumulated metric name."""
|
||||
self.max: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'max'))
|
||||
self.min: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'min'))
|
||||
self.height: MetricPattern18[StoredU64] = MetricPattern18(client, acc)
|
||||
self.sum: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'sum'))
|
||||
|
||||
class SdSmaPattern:
|
||||
"""Pattern struct for repeated tree structure."""
|
||||
@@ -4360,106 +4359,106 @@ class MetricsTree_Distribution_UtxoCohorts_AgeRange:
|
||||
"""Metrics tree node."""
|
||||
|
||||
def __init__(self, client: BrkClientBase, base_path: str = ''):
|
||||
self.up_to_1h: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_1h_old')
|
||||
self._1h_to_1d: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_1h_to_1d_old')
|
||||
self._1d_to_1w: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_1d_to_1w_old')
|
||||
self._1w_to_1m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_1w_to_1m_old')
|
||||
self._1m_to_2m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_1m_to_2m_old')
|
||||
self._2m_to_3m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_2m_to_3m_old')
|
||||
self._3m_to_4m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_3m_to_4m_old')
|
||||
self._4m_to_5m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_4m_to_5m_old')
|
||||
self._5m_to_6m: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_5m_to_6m_old')
|
||||
self._6m_to_1y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_6m_to_1y_old')
|
||||
self._1y_to_2y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_1y_to_2y_old')
|
||||
self._2y_to_3y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_2y_to_3y_old')
|
||||
self._3y_to_4y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_3y_to_4y_old')
|
||||
self._4y_to_5y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_4y_to_5y_old')
|
||||
self._5y_to_6y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_5y_to_6y_old')
|
||||
self._6y_to_7y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_6y_to_7y_old')
|
||||
self._7y_to_8y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_7y_to_8y_old')
|
||||
self._8y_to_10y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_8y_to_10y_old')
|
||||
self._10y_to_12y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_10y_to_12y_old')
|
||||
self._12y_to_15y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_12y_to_15y_old')
|
||||
self.from_15y: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_15y_old')
|
||||
self.up_to_1h: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_1h_old')
|
||||
self._1h_to_1d: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_1h_to_1d_old')
|
||||
self._1d_to_1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_1d_to_1w_old')
|
||||
self._1w_to_1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_1w_to_1m_old')
|
||||
self._1m_to_2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_1m_to_2m_old')
|
||||
self._2m_to_3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_2m_to_3m_old')
|
||||
self._3m_to_4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_3m_to_4m_old')
|
||||
self._4m_to_5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_4m_to_5m_old')
|
||||
self._5m_to_6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_5m_to_6m_old')
|
||||
self._6m_to_1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_6m_to_1y_old')
|
||||
self._1y_to_2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_1y_to_2y_old')
|
||||
self._2y_to_3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_2y_to_3y_old')
|
||||
self._3y_to_4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_3y_to_4y_old')
|
||||
self._4y_to_5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_4y_to_5y_old')
|
||||
self._5y_to_6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_5y_to_6y_old')
|
||||
self._6y_to_7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_6y_to_7y_old')
|
||||
self._7y_to_8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_7y_to_8y_old')
|
||||
self._8y_to_10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_8y_to_10y_old')
|
||||
self._10y_to_12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_10y_to_12y_old')
|
||||
self._12y_to_15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_12y_to_15y_old')
|
||||
self.from_15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_15y_old')
|
||||
|
||||
class MetricsTree_Distribution_UtxoCohorts_MaxAge:
|
||||
"""Metrics tree node."""
|
||||
|
||||
def __init__(self, client: BrkClientBase, base_path: str = ''):
|
||||
self._1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_1w_old')
|
||||
self._1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_1m_old')
|
||||
self._2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_2m_old')
|
||||
self._3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_3m_old')
|
||||
self._4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_4m_old')
|
||||
self._5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_5m_old')
|
||||
self._6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_6m_old')
|
||||
self._1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_1y_old')
|
||||
self._2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_2y_old')
|
||||
self._3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_3y_old')
|
||||
self._4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_4y_old')
|
||||
self._5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_5y_old')
|
||||
self._6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_6y_old')
|
||||
self._7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_7y_old')
|
||||
self._8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_8y_old')
|
||||
self._10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_10y_old')
|
||||
self._12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_12y_old')
|
||||
self._15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_under_15y_old')
|
||||
self._1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_1w_old')
|
||||
self._1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_1m_old')
|
||||
self._2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_2m_old')
|
||||
self._3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_3m_old')
|
||||
self._4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_4m_old')
|
||||
self._5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_5m_old')
|
||||
self._6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_6m_old')
|
||||
self._1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_1y_old')
|
||||
self._2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_2y_old')
|
||||
self._3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_3y_old')
|
||||
self._4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_4y_old')
|
||||
self._5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_5y_old')
|
||||
self._6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_6y_old')
|
||||
self._7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_7y_old')
|
||||
self._8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_8y_old')
|
||||
self._10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_10y_old')
|
||||
self._12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_12y_old')
|
||||
self._15y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_under_15y_old')
|
||||
|
||||
class MetricsTree_Distribution_UtxoCohorts_MinAge:
|
||||
"""Metrics tree node."""
|
||||
|
||||
def __init__(self, client: BrkClientBase, base_path: str = ''):
|
||||
self._1d: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_1d_old')
|
||||
self._1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_1w_old')
|
||||
self._1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_1m_old')
|
||||
self._2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_2m_old')
|
||||
self._3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_3m_old')
|
||||
self._4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_4m_old')
|
||||
self._5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_5m_old')
|
||||
self._6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_6m_old')
|
||||
self._1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_1y_old')
|
||||
self._2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_2y_old')
|
||||
self._3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_3y_old')
|
||||
self._4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_4y_old')
|
||||
self._5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_5y_old')
|
||||
self._6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_6y_old')
|
||||
self._7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_7y_old')
|
||||
self._8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_8y_old')
|
||||
self._10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_10y_old')
|
||||
self._12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'utxos_over_12y_old')
|
||||
self._1d: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_1d_old')
|
||||
self._1w: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_1w_old')
|
||||
self._1m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_1m_old')
|
||||
self._2m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_2m_old')
|
||||
self._3m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_3m_old')
|
||||
self._4m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_4m_old')
|
||||
self._5m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_5m_old')
|
||||
self._6m: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_6m_old')
|
||||
self._1y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_1y_old')
|
||||
self._2y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_2y_old')
|
||||
self._3y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_3y_old')
|
||||
self._4y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_4y_old')
|
||||
self._5y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_5y_old')
|
||||
self._6y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_6y_old')
|
||||
self._7y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_7y_old')
|
||||
self._8y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_8y_old')
|
||||
self._10y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_10y_old')
|
||||
self._12y: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'utxos_over_12y_old')
|
||||
|
||||
class MetricsTree_Distribution_UtxoCohorts_Epoch:
|
||||
"""Metrics tree node."""
|
||||
|
||||
def __init__(self, client: BrkClientBase, base_path: str = ''):
|
||||
self._0: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'epoch_0')
|
||||
self._1: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'epoch_1')
|
||||
self._2: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'epoch_2')
|
||||
self._3: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'epoch_3')
|
||||
self._4: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'epoch_4')
|
||||
self._0: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'epoch_0')
|
||||
self._1: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'epoch_1')
|
||||
self._2: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'epoch_2')
|
||||
self._3: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'epoch_3')
|
||||
self._4: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'epoch_4')
|
||||
|
||||
class MetricsTree_Distribution_UtxoCohorts_Class:
|
||||
"""Metrics tree node."""
|
||||
|
||||
def __init__(self, client: BrkClientBase, base_path: str = ''):
|
||||
self._2009: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2009')
|
||||
self._2010: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2010')
|
||||
self._2011: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2011')
|
||||
self._2012: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2012')
|
||||
self._2013: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2013')
|
||||
self._2014: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2014')
|
||||
self._2015: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2015')
|
||||
self._2016: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2016')
|
||||
self._2017: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2017')
|
||||
self._2018: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2018')
|
||||
self._2019: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2019')
|
||||
self._2020: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2020')
|
||||
self._2021: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2021')
|
||||
self._2022: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2022')
|
||||
self._2023: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2023')
|
||||
self._2024: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2024')
|
||||
self._2025: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2025')
|
||||
self._2026: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, 'class_2026')
|
||||
self._2009: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2009')
|
||||
self._2010: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2010')
|
||||
self._2011: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2011')
|
||||
self._2012: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2012')
|
||||
self._2013: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2013')
|
||||
self._2014: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2014')
|
||||
self._2015: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2015')
|
||||
self._2016: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2016')
|
||||
self._2017: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2017')
|
||||
self._2018: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2018')
|
||||
self._2019: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2019')
|
||||
self._2020: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2020')
|
||||
self._2021: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2021')
|
||||
self._2022: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2022')
|
||||
self._2023: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2023')
|
||||
self._2024: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2024')
|
||||
self._2025: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2025')
|
||||
self._2026: ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 = ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, 'class_2026')
|
||||
|
||||
class MetricsTree_Distribution_UtxoCohorts_GeAmount:
|
||||
"""Metrics tree node."""
|
||||
@@ -4632,15 +4631,15 @@ class MetricsTree_Distribution_NewAddrCount:
|
||||
"""Metrics tree node."""
|
||||
|
||||
def __init__(self, client: BrkClientBase, base_path: str = ''):
|
||||
self.all: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, 'new_addr_count')
|
||||
self.p2pk65: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, 'p2pk65_new_addr_count')
|
||||
self.p2pk33: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, 'p2pk33_new_addr_count')
|
||||
self.p2pkh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, 'p2pkh_new_addr_count')
|
||||
self.p2sh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, 'p2sh_new_addr_count')
|
||||
self.p2wpkh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, 'p2wpkh_new_addr_count')
|
||||
self.p2wsh: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, 'p2wsh_new_addr_count')
|
||||
self.p2tr: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, 'p2tr_new_addr_count')
|
||||
self.p2a: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, 'p2a_new_addr_count')
|
||||
self.all: HeightSumPattern = HeightSumPattern(client, 'new_addr_count')
|
||||
self.p2pk65: HeightSumPattern = HeightSumPattern(client, 'p2pk65_new_addr_count')
|
||||
self.p2pk33: HeightSumPattern = HeightSumPattern(client, 'p2pk33_new_addr_count')
|
||||
self.p2pkh: HeightSumPattern = HeightSumPattern(client, 'p2pkh_new_addr_count')
|
||||
self.p2sh: HeightSumPattern = HeightSumPattern(client, 'p2sh_new_addr_count')
|
||||
self.p2wpkh: HeightSumPattern = HeightSumPattern(client, 'p2wpkh_new_addr_count')
|
||||
self.p2wsh: HeightSumPattern = HeightSumPattern(client, 'p2wsh_new_addr_count')
|
||||
self.p2tr: HeightSumPattern = HeightSumPattern(client, 'p2tr_new_addr_count')
|
||||
self.p2a: HeightSumPattern = HeightSumPattern(client, 'p2a_new_addr_count')
|
||||
|
||||
class MetricsTree_Distribution_Delta:
|
||||
"""Metrics tree node."""
|
||||
|
||||
Reference in New Issue
Block a user