diff --git a/crates/brk_client/src/lib.rs b/crates/brk_client/src/lib.rs index 8072e607e..22079f4cc 100644 --- a/crates/brk_client/src/lib.rs +++ b/crates/brk_client/src/lib.rs @@ -1535,18 +1535,18 @@ impl ClassDaysInLossPattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - _2015: MetricPattern4::new(client.clone(), _m(&acc, "2015_max_drawdown")), - _2016: MetricPattern4::new(client.clone(), _m(&acc, "2016_max_drawdown")), - _2017: MetricPattern4::new(client.clone(), _m(&acc, "2017_max_drawdown")), - _2018: MetricPattern4::new(client.clone(), _m(&acc, "2018_max_drawdown")), - _2019: MetricPattern4::new(client.clone(), _m(&acc, "2019_max_drawdown")), - _2020: MetricPattern4::new(client.clone(), _m(&acc, "2020_max_drawdown")), - _2021: MetricPattern4::new(client.clone(), _m(&acc, "2021_max_drawdown")), - _2022: MetricPattern4::new(client.clone(), _m(&acc, "2022_max_drawdown")), - _2023: MetricPattern4::new(client.clone(), _m(&acc, "2023_max_drawdown")), - _2024: MetricPattern4::new(client.clone(), _m(&acc, "2024_max_drawdown")), - _2025: MetricPattern4::new(client.clone(), _m(&acc, "2025_max_drawdown")), - _2026: MetricPattern4::new(client.clone(), _m(&acc, "2026_max_drawdown")), + _2015: MetricPattern4::new(client.clone(), _m(&acc, "2015_days_in_profit")), + _2016: MetricPattern4::new(client.clone(), _m(&acc, "2016_days_in_profit")), + _2017: MetricPattern4::new(client.clone(), _m(&acc, "2017_days_in_profit")), + _2018: MetricPattern4::new(client.clone(), _m(&acc, "2018_days_in_profit")), + _2019: MetricPattern4::new(client.clone(), _m(&acc, "2019_days_in_profit")), + _2020: MetricPattern4::new(client.clone(), _m(&acc, "2020_days_in_profit")), + _2021: MetricPattern4::new(client.clone(), _m(&acc, "2021_days_in_profit")), + _2022: MetricPattern4::new(client.clone(), _m(&acc, "2022_days_in_profit")), + _2023: MetricPattern4::new(client.clone(), _m(&acc, "2023_days_in_profit")), + _2024: MetricPattern4::new(client.clone(), _m(&acc, "2024_days_in_profit")), + _2025: MetricPattern4::new(client.clone(), _m(&acc, "2025_days_in_profit")), + _2026: MetricPattern4::new(client.clone(), _m(&acc, "2026_days_in_profit")), } } } @@ -1833,84 +1833,6 @@ impl _0satsPattern { } } -/// Pattern struct for repeated tree structure. -pub struct _0satsPattern2 { - pub activity: ActivityPattern2, - pub cost_basis: CostBasisPattern, - pub outputs: OutputsPattern, - pub realized: RealizedPattern, - pub relative: RelativePattern4, - pub supply: SupplyPattern2, - pub unrealized: UnrealizedPattern, -} - -impl _0satsPattern2 { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - activity: ActivityPattern2::new(client.clone(), acc.clone()), - cost_basis: CostBasisPattern::new(client.clone(), acc.clone()), - outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")), - realized: RealizedPattern::new(client.clone(), acc.clone()), - relative: RelativePattern4::new(client.clone(), _m(&acc, "supply_in")), - supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")), - unrealized: UnrealizedPattern::new(client.clone(), acc.clone()), - } - } -} - -/// Pattern struct for repeated tree structure. -pub struct PeriodCagrPattern { - pub _10y: MetricPattern4, - pub _2y: MetricPattern4, - pub _3y: MetricPattern4, - pub _4y: MetricPattern4, - pub _5y: MetricPattern4, - pub _6y: MetricPattern4, - pub _8y: MetricPattern4, -} - -impl PeriodCagrPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - _10y: MetricPattern4::new(client.clone(), _p("10y", &acc)), - _2y: MetricPattern4::new(client.clone(), _p("2y", &acc)), - _3y: MetricPattern4::new(client.clone(), _p("3y", &acc)), - _4y: MetricPattern4::new(client.clone(), _p("4y", &acc)), - _5y: MetricPattern4::new(client.clone(), _p("5y", &acc)), - _6y: MetricPattern4::new(client.clone(), _p("6y", &acc)), - _8y: MetricPattern4::new(client.clone(), _p("8y", &acc)), - } - } -} - -/// Pattern struct for repeated tree structure. -pub struct _10yTo12yPattern { - pub activity: ActivityPattern2, - pub cost_basis: CostBasisPattern2, - pub outputs: OutputsPattern, - pub realized: RealizedPattern2, - pub relative: RelativePattern2, - pub supply: SupplyPattern2, - pub unrealized: UnrealizedPattern, -} - -impl _10yTo12yPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - activity: ActivityPattern2::new(client.clone(), acc.clone()), - cost_basis: CostBasisPattern2::new(client.clone(), acc.clone()), - outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")), - realized: RealizedPattern2::new(client.clone(), acc.clone()), - relative: RelativePattern2::new(client.clone(), acc.clone()), - supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")), - unrealized: UnrealizedPattern::new(client.clone(), acc.clone()), - } - } -} - /// Pattern struct for repeated tree structure. pub struct _100btcPattern { pub activity: ActivityPattern2, @@ -1937,6 +1859,32 @@ impl _100btcPattern { } } +/// Pattern struct for repeated tree structure. +pub struct _0satsPattern2 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl _0satsPattern2 { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), acc.clone()), + cost_basis: CostBasisPattern::new(client.clone(), acc.clone()), + outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")), + realized: RealizedPattern::new(client.clone(), acc.clone()), + relative: RelativePattern4::new(client.clone(), _m(&acc, "supply_in")), + supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")), + unrealized: UnrealizedPattern::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct _10yPattern { pub activity: ActivityPattern2, @@ -1989,6 +1937,58 @@ impl UnrealizedPattern { } } +/// Pattern struct for repeated tree structure. +pub struct PeriodCagrPattern { + pub _10y: MetricPattern4, + pub _2y: MetricPattern4, + pub _3y: MetricPattern4, + pub _4y: MetricPattern4, + pub _5y: MetricPattern4, + pub _6y: MetricPattern4, + pub _8y: MetricPattern4, +} + +impl PeriodCagrPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + _10y: MetricPattern4::new(client.clone(), _p("10y", &acc)), + _2y: MetricPattern4::new(client.clone(), _p("2y", &acc)), + _3y: MetricPattern4::new(client.clone(), _p("3y", &acc)), + _4y: MetricPattern4::new(client.clone(), _p("4y", &acc)), + _5y: MetricPattern4::new(client.clone(), _p("5y", &acc)), + _6y: MetricPattern4::new(client.clone(), _p("6y", &acc)), + _8y: MetricPattern4::new(client.clone(), _p("8y", &acc)), + } + } +} + +/// Pattern struct for repeated tree structure. +pub struct _10yTo12yPattern { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern2, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl _10yTo12yPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), acc.clone()), + cost_basis: CostBasisPattern2::new(client.clone(), acc.clone()), + outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")), + realized: RealizedPattern2::new(client.clone(), acc.clone()), + relative: RelativePattern2::new(client.clone(), acc.clone()), + supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")), + unrealized: UnrealizedPattern::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct AllPattern { pub balance_decreased: FullnessPattern, @@ -2055,6 +2055,60 @@ impl SplitPattern2 { } } +/// Pattern struct for repeated tree structure. +pub struct UnclaimedRewardsPattern { + pub bitcoin: BitcoinPattern2, + pub dollars: BlockCountPattern, + pub sats: BlockCountPattern, +} + +impl UnclaimedRewardsPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + bitcoin: BitcoinPattern2::new(client.clone(), _m(&acc, "btc")), + dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")), + sats: BlockCountPattern::new(client.clone(), acc.clone()), + } + } +} + +/// Pattern struct for repeated tree structure. +pub struct _2015Pattern { + pub bitcoin: MetricPattern4, + pub dollars: MetricPattern4, + pub sats: MetricPattern4, +} + +impl _2015Pattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + bitcoin: MetricPattern4::new(client.clone(), _m(&acc, "btc")), + dollars: MetricPattern4::new(client.clone(), _m(&acc, "usd")), + sats: MetricPattern4::new(client.clone(), acc.clone()), + } + } +} + +/// Pattern struct for repeated tree structure. +pub struct ActiveSupplyPattern { + pub bitcoin: MetricPattern1, + pub dollars: MetricPattern1, + pub sats: MetricPattern1, +} + +impl ActiveSupplyPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + bitcoin: MetricPattern1::new(client.clone(), _m(&acc, "btc")), + dollars: MetricPattern1::new(client.clone(), _m(&acc, "usd")), + sats: MetricPattern1::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct CoinbasePattern { pub bitcoin: BitcoinPattern, @@ -2073,6 +2127,24 @@ impl CoinbasePattern { } } +/// Pattern struct for repeated tree structure. +pub struct SegwitAdoptionPattern { + pub base: MetricPattern11, + pub cumulative: MetricPattern2, + pub sum: MetricPattern2, +} + +impl SegwitAdoptionPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + base: MetricPattern11::new(client.clone(), acc.clone()), + cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")), + sum: MetricPattern2::new(client.clone(), _m(&acc, "sum")), + } + } +} + /// Pattern struct for repeated tree structure. pub struct CostBasisPattern2 { pub max: ActivePricePattern, @@ -2110,73 +2182,17 @@ impl CoinbasePattern2 { } /// Pattern struct for repeated tree structure. -pub struct SegwitAdoptionPattern { - pub base: MetricPattern11, - pub cumulative: MetricPattern2, - pub sum: MetricPattern2, +pub struct RelativePattern4 { + pub supply_in_loss_rel_to_own_supply: MetricPattern1, + pub supply_in_profit_rel_to_own_supply: MetricPattern1, } -impl SegwitAdoptionPattern { +impl RelativePattern4 { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - base: MetricPattern11::new(client.clone(), acc.clone()), - cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")), - sum: MetricPattern2::new(client.clone(), _m(&acc, "sum")), - } - } -} - -/// Pattern struct for repeated tree structure. -pub struct UnclaimedRewardsPattern { - pub bitcoin: BitcoinPattern2, - pub dollars: BlockCountPattern, - pub sats: BlockCountPattern, -} - -impl UnclaimedRewardsPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - bitcoin: BitcoinPattern2::new(client.clone(), _m(&acc, "btc")), - dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")), - sats: BlockCountPattern::new(client.clone(), acc.clone()), - } - } -} - -/// Pattern struct for repeated tree structure. -pub struct ActiveSupplyPattern { - pub bitcoin: MetricPattern1, - pub dollars: MetricPattern1, - pub sats: MetricPattern1, -} - -impl ActiveSupplyPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - bitcoin: MetricPattern1::new(client.clone(), _m(&acc, "btc")), - dollars: MetricPattern1::new(client.clone(), _m(&acc, "usd")), - sats: MetricPattern1::new(client.clone(), acc.clone()), - } - } -} - -/// Pattern struct for repeated tree structure. -pub struct _2015Pattern { - pub bitcoin: MetricPattern4, - pub dollars: MetricPattern4, - pub sats: MetricPattern4, -} - -impl _2015Pattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - bitcoin: MetricPattern4::new(client.clone(), _m(&acc, "btc")), - dollars: MetricPattern4::new(client.clone(), _m(&acc, "usd")), - sats: MetricPattern4::new(client.clone(), acc.clone()), + supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "loss_rel_to_own_supply")), + supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "profit_rel_to_own_supply")), } } } @@ -2197,38 +2213,6 @@ impl ActivePricePattern { } } -/// Pattern struct for repeated tree structure. -pub struct CostBasisPattern { - pub max: ActivePricePattern, - pub min: ActivePricePattern, -} - -impl CostBasisPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - max: ActivePricePattern::new(client.clone(), _m(&acc, "max_cost_basis")), - min: ActivePricePattern::new(client.clone(), _m(&acc, "min_cost_basis")), - } - } -} - -/// Pattern struct for repeated tree structure. -pub struct _0sdUsdPattern { - pub dollars: MetricPattern4, - pub sats: MetricPattern4, -} - -impl _0sdUsdPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - dollars: MetricPattern4::new(client.clone(), acc.clone()), - sats: MetricPattern4::new(client.clone(), _m(&acc, "sats")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct _1dReturns1mSdPattern { pub sd: MetricPattern4, @@ -2245,22 +2229,6 @@ impl _1dReturns1mSdPattern { } } -/// Pattern struct for repeated tree structure. -pub struct RelativePattern4 { - pub supply_in_loss_rel_to_own_supply: MetricPattern1, - pub supply_in_profit_rel_to_own_supply: MetricPattern1, -} - -impl RelativePattern4 { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "loss_rel_to_own_supply")), - supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "profit_rel_to_own_supply")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct SupplyPattern2 { pub halved: ActiveSupplyPattern, @@ -2277,6 +2245,38 @@ impl SupplyPattern2 { } } +/// Pattern struct for repeated tree structure. +pub struct _0sdUsdPattern { + pub dollars: MetricPattern4, + pub sats: MetricPattern4, +} + +impl _0sdUsdPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + dollars: MetricPattern4::new(client.clone(), acc.clone()), + sats: MetricPattern4::new(client.clone(), _m(&acc, "sats")), + } + } +} + +/// Pattern struct for repeated tree structure. +pub struct CostBasisPattern { + pub max: ActivePricePattern, + pub min: ActivePricePattern, +} + +impl CostBasisPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + max: ActivePricePattern::new(client.clone(), _m(&acc, "max_cost_basis")), + min: ActivePricePattern::new(client.clone(), _m(&acc, "min_cost_basis")), + } + } +} + /// Pattern struct for repeated tree structure. pub struct BlockCountPattern { pub cumulative: MetricPattern1, @@ -2293,22 +2293,6 @@ impl BlockCountPattern { } } -/// Pattern struct for repeated tree structure. -pub struct SatsPattern { - pub ohlc: MetricPattern1, - pub split: SplitPattern2, -} - -impl SatsPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - ohlc: MetricPattern1::new(client.clone(), _m(&acc, "ohlc")), - split: SplitPattern2::new(client.clone(), acc.clone()), - } - } -} - /// Pattern struct for repeated tree structure. pub struct BitcoinPattern2 { pub cumulative: MetricPattern2, @@ -2325,6 +2309,22 @@ impl BitcoinPattern2 { } } +/// Pattern struct for repeated tree structure. +pub struct SatsPattern { + pub ohlc: MetricPattern1, + pub split: SplitPattern2, +} + +impl SatsPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + ohlc: MetricPattern1::new(client.clone(), _m(&acc, "ohlc_sats")), + split: SplitPattern2::new(client.clone(), _m(&acc, "sats")), + } + } +} + /// Pattern struct for repeated tree structure. pub struct OutputsPattern { pub utxo_count: MetricPattern1, @@ -4276,8 +4276,8 @@ impl MetricsTree_Market_Ath { pub struct MetricsTree_Market_Dca { pub class_average_price: MetricsTree_Market_Dca_ClassAveragePrice, pub class_days_in_loss: MetricsTree_Market_Dca_ClassDaysInLoss, - pub class_days_in_profit: MetricsTree_Market_Dca_ClassDaysInProfit, - pub class_max_drawdown: ClassDaysInLossPattern, + pub class_days_in_profit: ClassDaysInLossPattern, + pub class_max_drawdown: MetricsTree_Market_Dca_ClassMaxDrawdown, pub class_max_return: MetricsTree_Market_Dca_ClassMaxReturn, pub class_returns: MetricsTree_Market_Dca_ClassReturns, pub class_stack: MetricsTree_Market_Dca_ClassStack, @@ -4302,8 +4302,8 @@ impl MetricsTree_Market_Dca { Self { class_average_price: MetricsTree_Market_Dca_ClassAveragePrice::new(client.clone(), format!("{base_path}_class_average_price")), class_days_in_loss: MetricsTree_Market_Dca_ClassDaysInLoss::new(client.clone(), format!("{base_path}_class_days_in_loss")), - class_days_in_profit: MetricsTree_Market_Dca_ClassDaysInProfit::new(client.clone(), format!("{base_path}_class_days_in_profit")), - class_max_drawdown: ClassDaysInLossPattern::new(client.clone(), "dca_class".to_string()), + class_days_in_profit: ClassDaysInLossPattern::new(client.clone(), "dca_class".to_string()), + class_max_drawdown: MetricsTree_Market_Dca_ClassMaxDrawdown::new(client.clone(), format!("{base_path}_class_max_drawdown")), class_max_return: MetricsTree_Market_Dca_ClassMaxReturn::new(client.clone(), format!("{base_path}_class_max_return")), class_returns: MetricsTree_Market_Dca_ClassReturns::new(client.clone(), format!("{base_path}_class_returns")), class_stack: MetricsTree_Market_Dca_ClassStack::new(client.clone(), format!("{base_path}_class_stack")), @@ -4396,36 +4396,36 @@ impl MetricsTree_Market_Dca_ClassDaysInLoss { } /// Metrics tree node. -pub struct MetricsTree_Market_Dca_ClassDaysInProfit { - pub _2015: MetricPattern4, - pub _2016: MetricPattern4, - pub _2017: MetricPattern4, - pub _2018: MetricPattern4, - pub _2019: MetricPattern4, - pub _2020: MetricPattern4, - pub _2021: MetricPattern4, - pub _2022: MetricPattern4, - pub _2023: MetricPattern4, - pub _2024: MetricPattern4, - pub _2025: MetricPattern4, - pub _2026: MetricPattern4, +pub struct MetricsTree_Market_Dca_ClassMaxDrawdown { + pub _2015: MetricPattern4, + pub _2016: MetricPattern4, + pub _2017: MetricPattern4, + pub _2018: MetricPattern4, + pub _2019: MetricPattern4, + pub _2020: MetricPattern4, + pub _2021: MetricPattern4, + pub _2022: MetricPattern4, + pub _2023: MetricPattern4, + pub _2024: MetricPattern4, + pub _2025: MetricPattern4, + pub _2026: MetricPattern4, } -impl MetricsTree_Market_Dca_ClassDaysInProfit { +impl MetricsTree_Market_Dca_ClassMaxDrawdown { pub fn new(client: Arc, base_path: String) -> Self { Self { - _2015: MetricPattern4::new(client.clone(), "dca_class_2015_days_in_profit".to_string()), - _2016: MetricPattern4::new(client.clone(), "dca_class_2016_days_in_profit".to_string()), - _2017: MetricPattern4::new(client.clone(), "dca_class_2017_days_in_profit".to_string()), - _2018: MetricPattern4::new(client.clone(), "dca_class_2018_days_in_profit".to_string()), - _2019: MetricPattern4::new(client.clone(), "dca_class_2019_days_in_profit".to_string()), - _2020: MetricPattern4::new(client.clone(), "dca_class_2020_days_in_profit".to_string()), - _2021: MetricPattern4::new(client.clone(), "dca_class_2021_days_in_profit".to_string()), - _2022: MetricPattern4::new(client.clone(), "dca_class_2022_days_in_profit".to_string()), - _2023: MetricPattern4::new(client.clone(), "dca_class_2023_days_in_profit".to_string()), - _2024: MetricPattern4::new(client.clone(), "dca_class_2024_days_in_profit".to_string()), - _2025: MetricPattern4::new(client.clone(), "dca_class_2025_days_in_profit".to_string()), - _2026: MetricPattern4::new(client.clone(), "dca_class_2026_days_in_profit".to_string()), + _2015: MetricPattern4::new(client.clone(), "dca_class_2015_max_drawdown".to_string()), + _2016: MetricPattern4::new(client.clone(), "dca_class_2016_max_drawdown".to_string()), + _2017: MetricPattern4::new(client.clone(), "dca_class_2017_max_drawdown".to_string()), + _2018: MetricPattern4::new(client.clone(), "dca_class_2018_max_drawdown".to_string()), + _2019: MetricPattern4::new(client.clone(), "dca_class_2019_max_drawdown".to_string()), + _2020: MetricPattern4::new(client.clone(), "dca_class_2020_max_drawdown".to_string()), + _2021: MetricPattern4::new(client.clone(), "dca_class_2021_max_drawdown".to_string()), + _2022: MetricPattern4::new(client.clone(), "dca_class_2022_max_drawdown".to_string()), + _2023: MetricPattern4::new(client.clone(), "dca_class_2023_max_drawdown".to_string()), + _2024: MetricPattern4::new(client.clone(), "dca_class_2024_max_drawdown".to_string()), + _2025: MetricPattern4::new(client.clone(), "dca_class_2025_max_drawdown".to_string()), + _2026: MetricPattern4::new(client.clone(), "dca_class_2026_max_drawdown".to_string()), } } } @@ -5278,16 +5278,16 @@ impl MetricsTree_Positions { /// Metrics tree node. pub struct MetricsTree_Price { pub cents: MetricsTree_Price_Cents, - pub sats: MetricsTree_Price_Sats, - pub usd: SatsPattern, + pub sats: SatsPattern, + pub usd: MetricsTree_Price_Usd, } impl MetricsTree_Price { pub fn new(client: Arc, base_path: String) -> Self { Self { cents: MetricsTree_Price_Cents::new(client.clone(), format!("{base_path}_cents")), - sats: MetricsTree_Price_Sats::new(client.clone(), format!("{base_path}_sats")), - usd: SatsPattern::new(client.clone(), "price".to_string()), + sats: SatsPattern::new(client.clone(), "price".to_string()), + usd: MetricsTree_Price_Usd::new(client.clone(), format!("{base_path}_usd")), } } } @@ -5327,16 +5327,16 @@ impl MetricsTree_Price_Cents_Split { } /// Metrics tree node. -pub struct MetricsTree_Price_Sats { - pub ohlc: MetricPattern1, - pub split: SplitPattern2, +pub struct MetricsTree_Price_Usd { + pub ohlc: MetricPattern1, + pub split: SplitPattern2, } -impl MetricsTree_Price_Sats { +impl MetricsTree_Price_Usd { pub fn new(client: Arc, base_path: String) -> Self { Self { - ohlc: MetricPattern1::new(client.clone(), "price_ohlc_sats".to_string()), - split: SplitPattern2::new(client.clone(), "price_sats".to_string()), + ohlc: MetricPattern1::new(client.clone(), "price_ohlc".to_string()), + split: SplitPattern2::new(client.clone(), "price".to_string()), } } } @@ -5651,7 +5651,7 @@ pub struct BrkClient { impl BrkClient { /// Client version. - pub const VERSION: &'static str = "v0.1.0-beta.1"; + pub const VERSION: &'static str = "v0.1.0"; /// Create a new client with the given base URL. pub fn new(base_url: impl Into) -> Self { diff --git a/crates/brk_website/src/handlers.rs b/crates/brk_website/src/handlers.rs index ddeb11e06..cdadf9daf 100644 --- a/crates/brk_website/src/handlers.rs +++ b/crates/brk_website/src/handlers.rs @@ -23,13 +23,17 @@ fn serve(website: &Website, path: &str) -> Result> { let headers = response.headers_mut(); // Empty path or no extension = index.html (SPA fallback) - if path.is_empty() || Path::new(&path).extension().is_none() { + let is_html = path.is_empty() + || Path::new(&path).extension().is_none() + || path.ends_with(".html"); + + if is_html { headers.insert_content_type_text_html(); } else { headers.insert_content_type(Path::new(&path)); } - if cfg!(debug_assertions) { + if cfg!(debug_assertions) || is_html { headers.insert_cache_control_must_revalidate(); } else { headers.insert_cache_control_immutable(); diff --git a/modules/brk-client/index.js b/modules/brk-client/index.js index 057d725e8..cadf5a4e0 100644 --- a/modules/brk-client/index.js +++ b/modules/brk-client/index.js @@ -1953,18 +1953,18 @@ function createPeriodDaysInLossPattern(client, acc) { */ function createClassDaysInLossPattern(client, acc) { return { - _2015: createMetricPattern4(client, _m(acc, '2015_max_drawdown')), - _2016: createMetricPattern4(client, _m(acc, '2016_max_drawdown')), - _2017: createMetricPattern4(client, _m(acc, '2017_max_drawdown')), - _2018: createMetricPattern4(client, _m(acc, '2018_max_drawdown')), - _2019: createMetricPattern4(client, _m(acc, '2019_max_drawdown')), - _2020: createMetricPattern4(client, _m(acc, '2020_max_drawdown')), - _2021: createMetricPattern4(client, _m(acc, '2021_max_drawdown')), - _2022: createMetricPattern4(client, _m(acc, '2022_max_drawdown')), - _2023: createMetricPattern4(client, _m(acc, '2023_max_drawdown')), - _2024: createMetricPattern4(client, _m(acc, '2024_max_drawdown')), - _2025: createMetricPattern4(client, _m(acc, '2025_max_drawdown')), - _2026: createMetricPattern4(client, _m(acc, '2026_max_drawdown')), + _2015: createMetricPattern4(client, _m(acc, '2015_days_in_profit')), + _2016: createMetricPattern4(client, _m(acc, '2016_days_in_profit')), + _2017: createMetricPattern4(client, _m(acc, '2017_days_in_profit')), + _2018: createMetricPattern4(client, _m(acc, '2018_days_in_profit')), + _2019: createMetricPattern4(client, _m(acc, '2019_days_in_profit')), + _2020: createMetricPattern4(client, _m(acc, '2020_days_in_profit')), + _2021: createMetricPattern4(client, _m(acc, '2021_days_in_profit')), + _2022: createMetricPattern4(client, _m(acc, '2022_days_in_profit')), + _2023: createMetricPattern4(client, _m(acc, '2023_days_in_profit')), + _2024: createMetricPattern4(client, _m(acc, '2024_days_in_profit')), + _2025: createMetricPattern4(client, _m(acc, '2025_days_in_profit')), + _2026: createMetricPattern4(client, _m(acc, '2026_days_in_profit')), }; } @@ -2285,93 +2285,6 @@ function create_0satsPattern(client, acc) { }; } -/** - * @typedef {Object} _0satsPattern2 - * @property {ActivityPattern2} activity - * @property {CostBasisPattern} costBasis - * @property {OutputsPattern} outputs - * @property {RealizedPattern} realized - * @property {RelativePattern4} relative - * @property {SupplyPattern2} supply - * @property {UnrealizedPattern} unrealized - */ - -/** - * Create a _0satsPattern2 pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {_0satsPattern2} - */ -function create_0satsPattern2(client, acc) { - return { - activity: createActivityPattern2(client, acc), - costBasis: createCostBasisPattern(client, acc), - outputs: createOutputsPattern(client, _m(acc, 'utxo_count')), - realized: createRealizedPattern(client, acc), - relative: createRelativePattern4(client, _m(acc, 'supply_in')), - supply: createSupplyPattern2(client, _m(acc, 'supply')), - unrealized: createUnrealizedPattern(client, acc), - }; -} - -/** - * @typedef {Object} PeriodCagrPattern - * @property {MetricPattern4} _10y - * @property {MetricPattern4} _2y - * @property {MetricPattern4} _3y - * @property {MetricPattern4} _4y - * @property {MetricPattern4} _5y - * @property {MetricPattern4} _6y - * @property {MetricPattern4} _8y - */ - -/** - * Create a PeriodCagrPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {PeriodCagrPattern} - */ -function createPeriodCagrPattern(client, acc) { - return { - _10y: createMetricPattern4(client, _p('10y', acc)), - _2y: createMetricPattern4(client, _p('2y', acc)), - _3y: createMetricPattern4(client, _p('3y', acc)), - _4y: createMetricPattern4(client, _p('4y', acc)), - _5y: createMetricPattern4(client, _p('5y', acc)), - _6y: createMetricPattern4(client, _p('6y', acc)), - _8y: createMetricPattern4(client, _p('8y', acc)), - }; -} - -/** - * @typedef {Object} _10yTo12yPattern - * @property {ActivityPattern2} activity - * @property {CostBasisPattern2} costBasis - * @property {OutputsPattern} outputs - * @property {RealizedPattern2} realized - * @property {RelativePattern2} relative - * @property {SupplyPattern2} supply - * @property {UnrealizedPattern} unrealized - */ - -/** - * Create a _10yTo12yPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {_10yTo12yPattern} - */ -function create_10yTo12yPattern(client, acc) { - return { - activity: createActivityPattern2(client, acc), - costBasis: createCostBasisPattern2(client, acc), - outputs: createOutputsPattern(client, _m(acc, 'utxo_count')), - realized: createRealizedPattern2(client, acc), - relative: createRelativePattern2(client, acc), - supply: createSupplyPattern2(client, _m(acc, 'supply')), - unrealized: createUnrealizedPattern(client, acc), - }; -} - /** * @typedef {Object} _100btcPattern * @property {ActivityPattern2} activity @@ -2401,6 +2314,35 @@ function create_100btcPattern(client, acc) { }; } +/** + * @typedef {Object} _0satsPattern2 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * Create a _0satsPattern2 pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {_0satsPattern2} + */ +function create_0satsPattern2(client, acc) { + return { + activity: createActivityPattern2(client, acc), + costBasis: createCostBasisPattern(client, acc), + outputs: createOutputsPattern(client, _m(acc, 'utxo_count')), + realized: createRealizedPattern(client, acc), + relative: createRelativePattern4(client, _m(acc, 'supply_in')), + supply: createSupplyPattern2(client, _m(acc, 'supply')), + unrealized: createUnrealizedPattern(client, acc), + }; +} + /** * @typedef {Object} _10yPattern * @property {ActivityPattern2} activity @@ -2459,6 +2401,64 @@ function createUnrealizedPattern(client, acc) { }; } +/** + * @typedef {Object} PeriodCagrPattern + * @property {MetricPattern4} _10y + * @property {MetricPattern4} _2y + * @property {MetricPattern4} _3y + * @property {MetricPattern4} _4y + * @property {MetricPattern4} _5y + * @property {MetricPattern4} _6y + * @property {MetricPattern4} _8y + */ + +/** + * Create a PeriodCagrPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {PeriodCagrPattern} + */ +function createPeriodCagrPattern(client, acc) { + return { + _10y: createMetricPattern4(client, _p('10y', acc)), + _2y: createMetricPattern4(client, _p('2y', acc)), + _3y: createMetricPattern4(client, _p('3y', acc)), + _4y: createMetricPattern4(client, _p('4y', acc)), + _5y: createMetricPattern4(client, _p('5y', acc)), + _6y: createMetricPattern4(client, _p('6y', acc)), + _8y: createMetricPattern4(client, _p('8y', acc)), + }; +} + +/** + * @typedef {Object} _10yTo12yPattern + * @property {ActivityPattern2} activity + * @property {CostBasisPattern2} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * Create a _10yTo12yPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {_10yTo12yPattern} + */ +function create_10yTo12yPattern(client, acc) { + return { + activity: createActivityPattern2(client, acc), + costBasis: createCostBasisPattern2(client, acc), + outputs: createOutputsPattern(client, _m(acc, 'utxo_count')), + realized: createRealizedPattern2(client, acc), + relative: createRelativePattern2(client, acc), + supply: createSupplyPattern2(client, _m(acc, 'supply')), + unrealized: createUnrealizedPattern(client, acc), + }; +} + /** * @typedef {Object} AllPattern * @property {FullnessPattern} balanceDecreased @@ -2536,6 +2536,69 @@ function createSplitPattern2(client, acc) { }; } +/** + * @typedef {Object} UnclaimedRewardsPattern + * @property {BitcoinPattern2} bitcoin + * @property {BlockCountPattern} dollars + * @property {BlockCountPattern} sats + */ + +/** + * Create a UnclaimedRewardsPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {UnclaimedRewardsPattern} + */ +function createUnclaimedRewardsPattern(client, acc) { + return { + bitcoin: createBitcoinPattern2(client, _m(acc, 'btc')), + dollars: createBlockCountPattern(client, _m(acc, 'usd')), + sats: createBlockCountPattern(client, acc), + }; +} + +/** + * @typedef {Object} _2015Pattern + * @property {MetricPattern4} bitcoin + * @property {MetricPattern4} dollars + * @property {MetricPattern4} sats + */ + +/** + * Create a _2015Pattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {_2015Pattern} + */ +function create_2015Pattern(client, acc) { + return { + bitcoin: createMetricPattern4(client, _m(acc, 'btc')), + dollars: createMetricPattern4(client, _m(acc, 'usd')), + sats: createMetricPattern4(client, acc), + }; +} + +/** + * @typedef {Object} ActiveSupplyPattern + * @property {MetricPattern1} bitcoin + * @property {MetricPattern1} dollars + * @property {MetricPattern1} sats + */ + +/** + * Create a ActiveSupplyPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {ActiveSupplyPattern} + */ +function createActiveSupplyPattern(client, acc) { + return { + bitcoin: createMetricPattern1(client, _m(acc, 'btc')), + dollars: createMetricPattern1(client, _m(acc, 'usd')), + sats: createMetricPattern1(client, acc), + }; +} + /** * @typedef {Object} CoinbasePattern * @property {BitcoinPattern} bitcoin @@ -2557,6 +2620,27 @@ function createCoinbasePattern(client, acc) { }; } +/** + * @typedef {Object} SegwitAdoptionPattern + * @property {MetricPattern11} base + * @property {MetricPattern2} cumulative + * @property {MetricPattern2} sum + */ + +/** + * Create a SegwitAdoptionPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {SegwitAdoptionPattern} + */ +function createSegwitAdoptionPattern(client, acc) { + return { + base: createMetricPattern11(client, acc), + cumulative: createMetricPattern2(client, _m(acc, 'cumulative')), + sum: createMetricPattern2(client, _m(acc, 'sum')), + }; +} + /** * @typedef {Object} CostBasisPattern2 * @property {ActivePricePattern} max @@ -2600,86 +2684,21 @@ function createCoinbasePattern2(client, acc) { } /** - * @typedef {Object} SegwitAdoptionPattern - * @property {MetricPattern11} base - * @property {MetricPattern2} cumulative - * @property {MetricPattern2} sum + * @typedef {Object} RelativePattern4 + * @property {MetricPattern1} supplyInLossRelToOwnSupply + * @property {MetricPattern1} supplyInProfitRelToOwnSupply */ /** - * Create a SegwitAdoptionPattern pattern node + * Create a RelativePattern4 pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {SegwitAdoptionPattern} + * @returns {RelativePattern4} */ -function createSegwitAdoptionPattern(client, acc) { +function createRelativePattern4(client, acc) { return { - base: createMetricPattern11(client, acc), - cumulative: createMetricPattern2(client, _m(acc, 'cumulative')), - sum: createMetricPattern2(client, _m(acc, 'sum')), - }; -} - -/** - * @typedef {Object} UnclaimedRewardsPattern - * @property {BitcoinPattern2} bitcoin - * @property {BlockCountPattern} dollars - * @property {BlockCountPattern} sats - */ - -/** - * Create a UnclaimedRewardsPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {UnclaimedRewardsPattern} - */ -function createUnclaimedRewardsPattern(client, acc) { - return { - bitcoin: createBitcoinPattern2(client, _m(acc, 'btc')), - dollars: createBlockCountPattern(client, _m(acc, 'usd')), - sats: createBlockCountPattern(client, acc), - }; -} - -/** - * @typedef {Object} ActiveSupplyPattern - * @property {MetricPattern1} bitcoin - * @property {MetricPattern1} dollars - * @property {MetricPattern1} sats - */ - -/** - * Create a ActiveSupplyPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {ActiveSupplyPattern} - */ -function createActiveSupplyPattern(client, acc) { - return { - bitcoin: createMetricPattern1(client, _m(acc, 'btc')), - dollars: createMetricPattern1(client, _m(acc, 'usd')), - sats: createMetricPattern1(client, acc), - }; -} - -/** - * @typedef {Object} _2015Pattern - * @property {MetricPattern4} bitcoin - * @property {MetricPattern4} dollars - * @property {MetricPattern4} sats - */ - -/** - * Create a _2015Pattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {_2015Pattern} - */ -function create_2015Pattern(client, acc) { - return { - bitcoin: createMetricPattern4(client, _m(acc, 'btc')), - dollars: createMetricPattern4(client, _m(acc, 'usd')), - sats: createMetricPattern4(client, acc), + supplyInLossRelToOwnSupply: createMetricPattern1(client, _m(acc, 'loss_rel_to_own_supply')), + supplyInProfitRelToOwnSupply: createMetricPattern1(client, _m(acc, 'profit_rel_to_own_supply')), }; } @@ -2703,21 +2722,40 @@ function createActivePricePattern(client, acc) { } /** - * @typedef {Object} CostBasisPattern - * @property {ActivePricePattern} max - * @property {ActivePricePattern} min + * @typedef {Object} _1dReturns1mSdPattern + * @property {MetricPattern4} sd + * @property {MetricPattern4} sma */ /** - * Create a CostBasisPattern pattern node + * Create a _1dReturns1mSdPattern pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {CostBasisPattern} + * @returns {_1dReturns1mSdPattern} */ -function createCostBasisPattern(client, acc) { +function create_1dReturns1mSdPattern(client, acc) { return { - max: createActivePricePattern(client, _m(acc, 'max_cost_basis')), - min: createActivePricePattern(client, _m(acc, 'min_cost_basis')), + sd: createMetricPattern4(client, _m(acc, 'sd')), + sma: createMetricPattern4(client, _m(acc, 'sma')), + }; +} + +/** + * @typedef {Object} SupplyPattern2 + * @property {ActiveSupplyPattern} halved + * @property {ActiveSupplyPattern} total + */ + +/** + * Create a SupplyPattern2 pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {SupplyPattern2} + */ +function createSupplyPattern2(client, acc) { + return { + halved: createActiveSupplyPattern(client, _m(acc, 'halved')), + total: createActiveSupplyPattern(client, acc), }; } @@ -2741,59 +2779,21 @@ function create_0sdUsdPattern(client, acc) { } /** - * @typedef {Object} _1dReturns1mSdPattern - * @property {MetricPattern4} sd - * @property {MetricPattern4} sma + * @typedef {Object} CostBasisPattern + * @property {ActivePricePattern} max + * @property {ActivePricePattern} min */ /** - * Create a _1dReturns1mSdPattern pattern node + * Create a CostBasisPattern pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {_1dReturns1mSdPattern} + * @returns {CostBasisPattern} */ -function create_1dReturns1mSdPattern(client, acc) { +function createCostBasisPattern(client, acc) { return { - sd: createMetricPattern4(client, _m(acc, 'sd')), - sma: createMetricPattern4(client, _m(acc, 'sma')), - }; -} - -/** - * @typedef {Object} RelativePattern4 - * @property {MetricPattern1} supplyInLossRelToOwnSupply - * @property {MetricPattern1} supplyInProfitRelToOwnSupply - */ - -/** - * Create a RelativePattern4 pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {RelativePattern4} - */ -function createRelativePattern4(client, acc) { - return { - supplyInLossRelToOwnSupply: createMetricPattern1(client, _m(acc, 'loss_rel_to_own_supply')), - supplyInProfitRelToOwnSupply: createMetricPattern1(client, _m(acc, 'profit_rel_to_own_supply')), - }; -} - -/** - * @typedef {Object} SupplyPattern2 - * @property {ActiveSupplyPattern} halved - * @property {ActiveSupplyPattern} total - */ - -/** - * Create a SupplyPattern2 pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {SupplyPattern2} - */ -function createSupplyPattern2(client, acc) { - return { - halved: createActiveSupplyPattern(client, _m(acc, 'halved')), - total: createActiveSupplyPattern(client, acc), + max: createActivePricePattern(client, _m(acc, 'max_cost_basis')), + min: createActivePricePattern(client, _m(acc, 'min_cost_basis')), }; } @@ -2818,27 +2818,6 @@ function createBlockCountPattern(client, acc) { }; } -/** - * @template T - * @typedef {Object} SatsPattern - * @property {MetricPattern1} ohlc - * @property {SplitPattern2} split - */ - -/** - * Create a SatsPattern pattern node - * @template T - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {SatsPattern} - */ -function createSatsPattern(client, acc) { - return { - ohlc: createMetricPattern1(client, _m(acc, 'ohlc')), - split: createSplitPattern2(client, acc), - }; -} - /** * @template T * @typedef {Object} BitcoinPattern2 @@ -2860,6 +2839,27 @@ function createBitcoinPattern2(client, acc) { }; } +/** + * @template T + * @typedef {Object} SatsPattern + * @property {MetricPattern1} ohlc + * @property {SplitPattern2} split + */ + +/** + * Create a SatsPattern pattern node + * @template T + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {SatsPattern} + */ +function createSatsPattern(client, acc) { + return { + ohlc: createMetricPattern1(client, _m(acc, 'ohlc_sats')), + split: createSplitPattern2(client, _m(acc, 'sats')), + }; +} + /** * @typedef {Object} OutputsPattern * @property {MetricPattern1} utxoCount @@ -3743,8 +3743,8 @@ function createRealizedPriceExtraPattern(client, acc) { * @typedef {Object} MetricsTree_Market_Dca * @property {MetricsTree_Market_Dca_ClassAveragePrice} classAveragePrice * @property {MetricsTree_Market_Dca_ClassDaysInLoss} classDaysInLoss - * @property {MetricsTree_Market_Dca_ClassDaysInProfit} classDaysInProfit - * @property {ClassDaysInLossPattern} classMaxDrawdown + * @property {ClassDaysInLossPattern} classDaysInProfit + * @property {MetricsTree_Market_Dca_ClassMaxDrawdown} classMaxDrawdown * @property {MetricsTree_Market_Dca_ClassMaxReturn} classMaxReturn * @property {MetricsTree_Market_Dca_ClassReturns} classReturns * @property {MetricsTree_Market_Dca_ClassStack} classStack @@ -3797,19 +3797,19 @@ function createRealizedPriceExtraPattern(client, acc) { */ /** - * @typedef {Object} MetricsTree_Market_Dca_ClassDaysInProfit - * @property {MetricPattern4} _2015 - * @property {MetricPattern4} _2016 - * @property {MetricPattern4} _2017 - * @property {MetricPattern4} _2018 - * @property {MetricPattern4} _2019 - * @property {MetricPattern4} _2020 - * @property {MetricPattern4} _2021 - * @property {MetricPattern4} _2022 - * @property {MetricPattern4} _2023 - * @property {MetricPattern4} _2024 - * @property {MetricPattern4} _2025 - * @property {MetricPattern4} _2026 + * @typedef {Object} MetricsTree_Market_Dca_ClassMaxDrawdown + * @property {MetricPattern4} _2015 + * @property {MetricPattern4} _2016 + * @property {MetricPattern4} _2017 + * @property {MetricPattern4} _2018 + * @property {MetricPattern4} _2019 + * @property {MetricPattern4} _2020 + * @property {MetricPattern4} _2021 + * @property {MetricPattern4} _2022 + * @property {MetricPattern4} _2023 + * @property {MetricPattern4} _2024 + * @property {MetricPattern4} _2025 + * @property {MetricPattern4} _2026 */ /** @@ -4212,8 +4212,8 @@ function createRealizedPriceExtraPattern(client, acc) { /** * @typedef {Object} MetricsTree_Price * @property {MetricsTree_Price_Cents} cents - * @property {MetricsTree_Price_Sats} sats - * @property {SatsPattern} usd + * @property {SatsPattern} sats + * @property {MetricsTree_Price_Usd} usd */ /** @@ -4231,9 +4231,9 @@ function createRealizedPriceExtraPattern(client, acc) { */ /** - * @typedef {Object} MetricsTree_Price_Sats - * @property {MetricPattern1} ohlc - * @property {SplitPattern2} split + * @typedef {Object} MetricsTree_Price_Usd + * @property {MetricPattern1} ohlc + * @property {SplitPattern2} split */ /** @@ -4371,7 +4371,7 @@ function createRealizedPriceExtraPattern(client, acc) { * @extends BrkClientBase */ class BrkClient extends BrkClientBase { - VERSION = "v0.1.0-beta.1"; + VERSION = "v0.1.0"; INDEXES = /** @type {const} */ ([ "dateindex", @@ -5906,21 +5906,21 @@ class BrkClient extends BrkClientBase { _2025: createMetricPattern4(this, 'dca_class_2025_days_in_loss'), _2026: createMetricPattern4(this, 'dca_class_2026_days_in_loss'), }, - classDaysInProfit: { - _2015: createMetricPattern4(this, 'dca_class_2015_days_in_profit'), - _2016: createMetricPattern4(this, 'dca_class_2016_days_in_profit'), - _2017: createMetricPattern4(this, 'dca_class_2017_days_in_profit'), - _2018: createMetricPattern4(this, 'dca_class_2018_days_in_profit'), - _2019: createMetricPattern4(this, 'dca_class_2019_days_in_profit'), - _2020: createMetricPattern4(this, 'dca_class_2020_days_in_profit'), - _2021: createMetricPattern4(this, 'dca_class_2021_days_in_profit'), - _2022: createMetricPattern4(this, 'dca_class_2022_days_in_profit'), - _2023: createMetricPattern4(this, 'dca_class_2023_days_in_profit'), - _2024: createMetricPattern4(this, 'dca_class_2024_days_in_profit'), - _2025: createMetricPattern4(this, 'dca_class_2025_days_in_profit'), - _2026: createMetricPattern4(this, 'dca_class_2026_days_in_profit'), + classDaysInProfit: createClassDaysInLossPattern(this, 'dca_class'), + classMaxDrawdown: { + _2015: createMetricPattern4(this, 'dca_class_2015_max_drawdown'), + _2016: createMetricPattern4(this, 'dca_class_2016_max_drawdown'), + _2017: createMetricPattern4(this, 'dca_class_2017_max_drawdown'), + _2018: createMetricPattern4(this, 'dca_class_2018_max_drawdown'), + _2019: createMetricPattern4(this, 'dca_class_2019_max_drawdown'), + _2020: createMetricPattern4(this, 'dca_class_2020_max_drawdown'), + _2021: createMetricPattern4(this, 'dca_class_2021_max_drawdown'), + _2022: createMetricPattern4(this, 'dca_class_2022_max_drawdown'), + _2023: createMetricPattern4(this, 'dca_class_2023_max_drawdown'), + _2024: createMetricPattern4(this, 'dca_class_2024_max_drawdown'), + _2025: createMetricPattern4(this, 'dca_class_2025_max_drawdown'), + _2026: createMetricPattern4(this, 'dca_class_2026_max_drawdown'), }, - classMaxDrawdown: createClassDaysInLossPattern(this, 'dca_class'), classMaxReturn: { _2015: createMetricPattern4(this, 'dca_class_2015_max_return'), _2016: createMetricPattern4(this, 'dca_class_2016_max_return'), @@ -6305,11 +6305,11 @@ class BrkClient extends BrkClientBase { open: createMetricPattern5(this, 'price_open_cents'), }, }, - sats: { - ohlc: createMetricPattern1(this, 'price_ohlc_sats'), - split: createSplitPattern2(this, 'price_sats'), + sats: createSatsPattern(this, 'price'), + usd: { + ohlc: createMetricPattern1(this, 'price_ohlc'), + split: createSplitPattern2(this, 'price'), }, - usd: createSatsPattern(this, 'price'), }, scripts: { count: { diff --git a/modules/brk-client/package.json b/modules/brk-client/package.json index 93f8a6ac1..b4bbdef13 100644 --- a/modules/brk-client/package.json +++ b/modules/brk-client/package.json @@ -34,5 +34,5 @@ "url": "git+https://github.com/bitcoinresearchkit/brk.git" }, "type": "module", - "version": "0.1.0-beta.1" + "version": "0.1.0" } diff --git a/packages/brk_client/brk_client/__init__.py b/packages/brk_client/brk_client/__init__.py index 3bc285b0f..7149d5090 100644 --- a/packages/brk_client/brk_client/__init__.py +++ b/packages/brk_client/brk_client/__init__.py @@ -2,25 +2,13 @@ # Do not edit manually from __future__ import annotations - -import json from dataclasses import dataclass -from http.client import HTTPConnection, HTTPSConnection -from typing import ( - Any, - Generic, - List, - Literal, - Optional, - Protocol, - TypedDict, - TypeVar, - Union, - overload, -) +from typing import TypeVar, Generic, Any, Optional, List, Literal, TypedDict, Union, Protocol, overload +from http.client import HTTPSConnection, HTTPConnection from urllib.parse import urlparse +import json -T = TypeVar("T") +T = TypeVar('T') # Type definitions @@ -85,20 +73,7 @@ Open = Cents OpReturnIndex = TypeIndex OutPoint = int # Type (P2PKH, P2WPKH, P2SH, P2TR, etc.) -OutputType = Literal[ - "p2pk65", - "p2pk33", - "p2pkh", - "p2ms", - "p2sh", - "opreturn", - "p2wpkh", - "p2wsh", - "p2tr", - "p2a", - "empty", - "unknown", -] +OutputType = Literal["p2pk65", "p2pk33", "p2pkh", "p2ms", "p2sh", "opreturn", "p2wpkh", "p2wsh", "p2tr", "p2a", "empty", "unknown"] P2AAddressIndex = TypeIndex U8x2 = List[int] P2ABytes = U8x2 @@ -121,173 +96,14 @@ P2WPKHAddressIndex = TypeIndex P2WPKHBytes = U8x20 P2WSHAddressIndex = TypeIndex P2WSHBytes = U8x32 -PoolSlug = Literal[ - "unknown", - "blockfills", - "ultimuspool", - "terrapool", - "luxor", - "onethash", - "btccom", - "bitfarms", - "huobipool", - "wayicn", - "canoepool", - "btctop", - "bitcoincom", - "pool175btc", - "gbminers", - "axbt", - "asicminer", - "bitminter", - "bitcoinrussia", - "btcserv", - "simplecoinus", - "btcguild", - "eligius", - "ozcoin", - "eclipsemc", - "maxbtc", - "triplemining", - "coinlab", - "pool50btc", - "ghashio", - "stminingcorp", - "bitparking", - "mmpool", - "polmine", - "kncminer", - "bitalo", - "f2pool", - "hhtt", - "megabigpower", - "mtred", - "nmcbit", - "yourbtcnet", - "givemecoins", - "braiinspool", - "antpool", - "multicoinco", - "bcpoolio", - "cointerra", - "kanopool", - "solock", - "ckpool", - "nicehash", - "bitclub", - "bitcoinaffiliatenetwork", - "btcc", - "bwpool", - "exxbw", - "bitsolo", - "bitfury", - "twentyoneinc", - "digitalbtc", - "eightbaochi", - "mybtccoinpool", - "tbdice", - "hashpool", - "nexious", - "bravomining", - "hotpool", - "okexpool", - "bcmonster", - "onehash", - "bixin", - "tatmaspool", - "viabtc", - "connectbtc", - "batpool", - "waterhole", - "dcexploration", - "dcex", - "btpool", - "fiftyeightcoin", - "bitcoinindia", - "shawnp0wers", - "phashio", - "rigpool", - "haozhuzhu", - "sevenpool", - "miningkings", - "hashbx", - "dpool", - "rawpool", - "haominer", - "helix", - "bitcoinukraine", - "poolin", - "secretsuperstar", - "tigerpoolnet", - "sigmapoolcom", - "okpooltop", - "hummerpool", - "tangpool", - "bytepool", - "spiderpool", - "novablock", - "miningcity", - "binancepool", - "minerium", - "lubiancom", - "okkong", - "aaopool", - "emcdpool", - "foundryusa", - "sbicrypto", - "arkpool", - "purebtccom", - "marapool", - "kucoinpool", - "entrustcharitypool", - "okminer", - "titan", - "pegapool", - "btcnuggets", - "cloudhashing", - "digitalxmintsy", - "telco214", - "btcpoolparty", - "multipool", - "transactioncoinmining", - "btcdig", - "trickysbtcpool", - "btcmp", - "eobot", - "unomp", - "patels", - "gogreenlight", - "ekanembtc", - "canoe", - "tiger", - "onem1x", - "zulupool", - "secpool", - "ocean", - "whitepool", - "wk057", - "futurebitapollosolo", - "carbonnegative", - "portlandhodl", - "phoenix", - "neopool", - "maxipool", - "bitfufupool", - "luckypool", - "miningdutch", - "publicpool", - "miningsquared", - "innopolistech", - "btclab", - "parasite", -] +PoolSlug = Literal["unknown", "blockfills", "ultimuspool", "terrapool", "luxor", "onethash", "btccom", "bitfarms", "huobipool", "wayicn", "canoepool", "btctop", "bitcoincom", "pool175btc", "gbminers", "axbt", "asicminer", "bitminter", "bitcoinrussia", "btcserv", "simplecoinus", "btcguild", "eligius", "ozcoin", "eclipsemc", "maxbtc", "triplemining", "coinlab", "pool50btc", "ghashio", "stminingcorp", "bitparking", "mmpool", "polmine", "kncminer", "bitalo", "f2pool", "hhtt", "megabigpower", "mtred", "nmcbit", "yourbtcnet", "givemecoins", "braiinspool", "antpool", "multicoinco", "bcpoolio", "cointerra", "kanopool", "solock", "ckpool", "nicehash", "bitclub", "bitcoinaffiliatenetwork", "btcc", "bwpool", "exxbw", "bitsolo", "bitfury", "twentyoneinc", "digitalbtc", "eightbaochi", "mybtccoinpool", "tbdice", "hashpool", "nexious", "bravomining", "hotpool", "okexpool", "bcmonster", "onehash", "bixin", "tatmaspool", "viabtc", "connectbtc", "batpool", "waterhole", "dcexploration", "dcex", "btpool", "fiftyeightcoin", "bitcoinindia", "shawnp0wers", "phashio", "rigpool", "haozhuzhu", "sevenpool", "miningkings", "hashbx", "dpool", "rawpool", "haominer", "helix", "bitcoinukraine", "poolin", "secretsuperstar", "tigerpoolnet", "sigmapoolcom", "okpooltop", "hummerpool", "tangpool", "bytepool", "spiderpool", "novablock", "miningcity", "binancepool", "minerium", "lubiancom", "okkong", "aaopool", "emcdpool", "foundryusa", "sbicrypto", "arkpool", "purebtccom", "marapool", "kucoinpool", "entrustcharitypool", "okminer", "titan", "pegapool", "btcnuggets", "cloudhashing", "digitalxmintsy", "telco214", "btcpoolparty", "multipool", "transactioncoinmining", "btcdig", "trickysbtcpool", "btcmp", "eobot", "unomp", "patels", "gogreenlight", "ekanembtc", "canoe", "tiger", "onem1x", "zulupool", "secpool", "ocean", "whitepool", "wk057", "futurebitapollosolo", "carbonnegative", "portlandhodl", "phoenix", "neopool", "maxipool", "bitfufupool", "luckypool", "miningdutch", "publicpool", "miningsquared", "innopolistech", "btclab", "parasite"] QuarterIndex = int # Transaction locktime RawLockTime = int # Fractional satoshis (f64) - for representing USD prices in sats -# +# # Formula: `sats_fract = usd_value * 100_000_000 / btc_price` -# +# # When BTC is $100,000: # - $1 = 1,000 sats # - $0.001 = 1 sat @@ -307,7 +123,7 @@ StoredU32 = int # Fixed-size 64-bit unsigned integer optimized for on-disk storage StoredU64 = int # Time period for mining statistics. -# +# # Used to specify the lookback window for pool statistics, hashrate calculations, # and other time-based mining metrics. TimePeriod = Literal["24h", "3d", "1w", "1m", "3m", "6m", "1y", "2y", "3y"] @@ -324,44 +140,13 @@ WeekIndex = int YearIndex = int # Aggregation dimension for querying metrics. Includes time-based (date, week, month, year), # block-based (height, txindex), and address/output type indexes. -Index = Literal[ - "dateindex", - "decadeindex", - "difficultyepoch", - "emptyoutputindex", - "halvingepoch", - "height", - "txinindex", - "monthindex", - "opreturnindex", - "txoutindex", - "p2aaddressindex", - "p2msoutputindex", - "p2pk33addressindex", - "p2pk65addressindex", - "p2pkhaddressindex", - "p2shaddressindex", - "p2traddressindex", - "p2wpkhaddressindex", - "p2wshaddressindex", - "quarterindex", - "semesterindex", - "txindex", - "unknownoutputindex", - "weekindex", - "yearindex", - "loadedaddressindex", - "emptyaddressindex", - "pairoutputindex", -] +Index = Literal["dateindex", "decadeindex", "difficultyepoch", "emptyoutputindex", "halvingepoch", "height", "txinindex", "monthindex", "opreturnindex", "txoutindex", "p2aaddressindex", "p2msoutputindex", "p2pk33addressindex", "p2pk65addressindex", "p2pkhaddressindex", "p2shaddressindex", "p2traddressindex", "p2wpkhaddressindex", "p2wshaddressindex", "quarterindex", "semesterindex", "txindex", "unknownoutputindex", "weekindex", "yearindex", "loadedaddressindex", "emptyaddressindex", "pairoutputindex"] # Hierarchical tree node for organizing metrics into categories TreeNode = Union[dict[str, "TreeNode"], "MetricLeafWithSchema"] - - class AddressChainStats(TypedDict): """ Address statistics on the blockchain (confirmed transactions only) - + Based on mempool.space's format with type_index extension. Attributes: @@ -372,7 +157,6 @@ class AddressChainStats(TypedDict): tx_count: Total number of confirmed transactions involving this address type_index: Index of this address within its type on the blockchain """ - funded_txo_count: int funded_txo_sum: Sats spent_txo_count: int @@ -380,11 +164,10 @@ class AddressChainStats(TypedDict): tx_count: int type_index: TypeIndex - class AddressMempoolStats(TypedDict): """ Address statistics in the mempool (unconfirmed transactions only) - + Based on mempool.space's format. Attributes: @@ -394,18 +177,15 @@ class AddressMempoolStats(TypedDict): spent_txo_sum: Total amount in satoshis being spent in unconfirmed transactions tx_count: Number of unconfirmed transactions involving this address """ - funded_txo_count: int funded_txo_sum: Sats spent_txo_count: int spent_txo_sum: Sats tx_count: int - class AddressParam(TypedDict): address: Address - class AddressStats(TypedDict): """ Address information compatible with mempool.space API format @@ -415,23 +195,19 @@ class AddressStats(TypedDict): chain_stats: Statistics for confirmed transactions on the blockchain mempool_stats: Statistics for unconfirmed transactions in the mempool """ - address: Address chain_stats: AddressChainStats mempool_stats: Union[AddressMempoolStats, None] - class AddressTxidsParam(TypedDict): """ Attributes: after_txid: Txid to paginate from (return transactions before this one) limit: Maximum number of results to return. Defaults to 25 if not specified. """ - after_txid: Union[Txid, None] limit: int - class AddressValidation(TypedDict): """ Address validation result @@ -445,7 +221,6 @@ class AddressValidation(TypedDict): witness_version: Witness version (0 for P2WPKH/P2WSH, 1 for P2TR) witness_program: Witness program in hex """ - isvalid: bool address: Optional[str] scriptPubKey: Optional[str] @@ -454,52 +229,42 @@ class AddressValidation(TypedDict): witness_version: Optional[int] witness_program: Optional[str] - class BlockCountParam(TypedDict): """ Attributes: block_count: Number of recent blocks to include """ - block_count: int - class BlockFeesEntry(TypedDict): """ A single block fees data point. """ - avgHeight: Height timestamp: Timestamp avgFees: Sats - class BlockHashParam(TypedDict): hash: BlockHash - class BlockHashStartIndex(TypedDict): """ Attributes: hash: Bitcoin block hash start_index: Starting transaction index within the block (0-based) """ - hash: BlockHash start_index: TxIndex - class BlockHashTxIndex(TypedDict): """ Attributes: hash: Bitcoin block hash index: Transaction index within the block (0-based) """ - hash: BlockHash index: TxIndex - class BlockInfo(TypedDict): """ Block information returned by the API @@ -513,7 +278,6 @@ class BlockInfo(TypedDict): timestamp: Block timestamp (Unix time) difficulty: Block difficulty as a floating point number """ - id: BlockHash height: Height tx_count: int @@ -522,46 +286,37 @@ class BlockInfo(TypedDict): timestamp: Timestamp difficulty: float - class BlockRewardsEntry(TypedDict): """ A single block rewards data point. """ - avgHeight: int timestamp: int avgRewards: int - class BlockSizeEntry(TypedDict): """ A single block size data point. """ - avgHeight: int timestamp: int avgSize: int - class BlockWeightEntry(TypedDict): """ A single block weight data point. """ - avgHeight: int timestamp: int avgWeight: int - class BlockSizesWeights(TypedDict): """ Combined block sizes and weights response. """ - sizes: List[BlockSizeEntry] weights: List[BlockWeightEntry] - class BlockStatus(TypedDict): """ Block status indicating whether block is in the best chain @@ -571,12 +326,10 @@ class BlockStatus(TypedDict): height: Block height (only if in best chain) next_best: Hash of the next block in the best chain (only if in best chain and not tip) """ - in_best_chain: bool height: Union[Height, None] next_best: Union[BlockHash, None] - class BlockTimestamp(TypedDict): """ Block information returned for timestamp queries @@ -586,12 +339,10 @@ class BlockTimestamp(TypedDict): hash: Block hash timestamp: Block timestamp in ISO 8601 format """ - height: Height hash: BlockHash timestamp: str - class DataRangeFormat(TypedDict): """ Data range with output format for API query parameters @@ -602,13 +353,11 @@ class DataRangeFormat(TypedDict): limit: Maximum number of values to return (ignored if `end` is set) format: Format of the output """ - start: Optional[int] end: Optional[int] limit: Union[Limit, None] format: Format - class DifficultyAdjustment(TypedDict): """ Difficulty adjustment information. @@ -625,7 +374,6 @@ class DifficultyAdjustment(TypedDict): adjustedTimeAvg: Time-adjusted average (accounting for timestamp manipulation) timeOffset: Time offset from expected schedule (seconds) """ - progressPercent: float difficultyChange: float estimatedRetargetDate: int @@ -637,19 +385,16 @@ class DifficultyAdjustment(TypedDict): adjustedTimeAvg: int timeOffset: int - class DifficultyAdjustmentEntry(TypedDict): """ A single difficulty adjustment entry. Serializes as array: [timestamp, height, difficulty, change_percent] """ - timestamp: Timestamp height: Height difficulty: float change_percent: float - class DifficultyEntry(TypedDict): """ A single difficulty data point. @@ -659,12 +404,10 @@ class DifficultyEntry(TypedDict): difficulty: Difficulty value. height: Block height of the adjustment. """ - timestamp: Timestamp difficulty: float height: Height - class DiskUsage(TypedDict): """ Disk usage of the indexed data @@ -676,14 +419,12 @@ class DiskUsage(TypedDict): bitcoin_bytes: Bitcoin blocks directory size in bytes ratio: brk as percentage of Bitcoin data """ - brk: str brk_bytes: int bitcoin: str bitcoin_bytes: int ratio: float - class EmptyAddressData(TypedDict): """ Data of an empty address @@ -693,12 +434,10 @@ class EmptyAddressData(TypedDict): funded_txo_count: Total funded/spent transaction output count (equal since address is empty) transfered: Total satoshis transferred """ - tx_count: int funded_txo_count: int transfered: Sats - class HashrateEntry(TypedDict): """ A single hashrate data point. @@ -707,11 +446,9 @@ class HashrateEntry(TypedDict): timestamp: Unix timestamp. avgHashrate: Average hashrate (H/s). """ - timestamp: Timestamp avgHashrate: int - class HashrateSummary(TypedDict): """ Summary of network hashrate and difficulty data. @@ -722,13 +459,11 @@ class HashrateSummary(TypedDict): currentHashrate: Current network hashrate (H/s). currentDifficulty: Current network difficulty. """ - hashrates: List[HashrateEntry] difficulty: List[DifficultyEntry] currentHashrate: int currentDifficulty: float - class Health(TypedDict): """ Server health status @@ -737,18 +472,15 @@ class Health(TypedDict): started_at: Server start time (ISO 8601) uptime_seconds: Uptime in seconds """ - status: str service: str timestamp: str started_at: str uptime_seconds: int - class HeightParam(TypedDict): height: Height - class IndexInfo(TypedDict): """ Information about an available index and its query aliases @@ -757,15 +489,12 @@ class IndexInfo(TypedDict): index: The canonical index name aliases: All Accepted query aliases """ - index: Index aliases: List[str] - class LimitParam(TypedDict): limit: Limit - class LoadedAddressData(TypedDict): """ Data for a loaded (non-empty) address with current balance @@ -778,7 +507,6 @@ class LoadedAddressData(TypedDict): sent: Satoshis sent by this address realized_cap: The realized capitalization of this address """ - tx_count: int funded_txo_count: int spent_txo_count: int @@ -786,7 +514,6 @@ class LoadedAddressData(TypedDict): sent: Sats realized_cap: Dollars - class MempoolBlock(TypedDict): """ Block info in a mempool.space like format for fee estimation. @@ -799,7 +526,6 @@ class MempoolBlock(TypedDict): medianFee: Median fee rate in sat/vB feeRange: Fee rate range: [min, 10%, 25%, 50%, 75%, 90%, max] """ - blockSize: int blockVSize: float nTx: int @@ -807,7 +533,6 @@ class MempoolBlock(TypedDict): medianFee: FeeRate feeRange: List[FeeRate] - class MempoolInfo(TypedDict): """ Mempool statistics @@ -817,12 +542,10 @@ class MempoolInfo(TypedDict): vsize: Total virtual size of all transactions in the mempool (vbytes) total_fee: Total fees of all transactions in the mempool (satoshis) """ - count: int vsize: VSize total_fee: Sats - class MetricCount(TypedDict): """ Metric count statistics - distinct metrics and total metric-index combinations @@ -833,17 +556,14 @@ class MetricCount(TypedDict): lazy_endpoints: Number of lazy (computed on-the-fly) metric-index combinations stored_endpoints: Number of eager (stored on disk) metric-index combinations """ - distinct_metrics: int total_endpoints: int lazy_endpoints: int stored_endpoints: int - class MetricParam(TypedDict): metric: Metric - class MetricSelection(TypedDict): """ Selection of metrics to query @@ -856,7 +576,6 @@ class MetricSelection(TypedDict): limit: Maximum number of values to return (ignored if `end` is set) format: Format of the output """ - metrics: Metrics index: Index start: Optional[int] @@ -864,7 +583,6 @@ class MetricSelection(TypedDict): limit: Union[Limit, None] format: Format - class MetricSelectionLegacy(TypedDict): """ Legacy metric selection parameters (deprecated) @@ -875,7 +593,6 @@ class MetricSelectionLegacy(TypedDict): limit: Maximum number of values to return (ignored if `end` is set) format: Format of the output """ - index: Index ids: Metrics start: Optional[int] @@ -883,51 +600,42 @@ class MetricSelectionLegacy(TypedDict): limit: Union[Limit, None] format: Format - class MetricWithIndex(TypedDict): """ Attributes: metric: Metric name index: Aggregation index """ - metric: Metric index: Index - class OHLCCents(TypedDict): """ OHLC (Open, High, Low, Close) data in cents """ - open: Open high: High low: Low close: Close - class OHLCDollars(TypedDict): """ OHLC (Open, High, Low, Close) data in dollars """ - open: Open high: High low: Low close: Close - class OHLCSats(TypedDict): """ OHLC (Open, High, Low, Close) data in satoshis """ - open: Open high: High low: Low close: Close - class PaginatedMetrics(TypedDict): """ A paginated list of available metric names (1000 per page) @@ -937,12 +645,10 @@ class PaginatedMetrics(TypedDict): max_page: Maximum valid page index (0-indexed) metrics: List of metric names (max 1000 per page) """ - current_page: int max_page: int metrics: List[str] - class Pagination(TypedDict): """ Pagination parameters for paginated API endpoints @@ -950,10 +656,8 @@ class Pagination(TypedDict): Attributes: page: Pagination index """ - page: Optional[int] - class PoolBlockCounts(TypedDict): """ Block counts for different time periods @@ -963,12 +667,10 @@ class PoolBlockCounts(TypedDict): _24h: Blocks mined in last 24 hours _1w: Blocks mined in last week """ - all: int _24h: int _1w: int - class PoolBlockShares(TypedDict): """ Pool's share of total blocks for different time periods @@ -978,12 +680,10 @@ class PoolBlockShares(TypedDict): _24h: Share of blocks in last 24 hours _1w: Share of blocks in last week """ - all: float _24h: float _1w: float - class PoolDetailInfo(TypedDict): """ Pool information for detail view @@ -996,7 +696,6 @@ class PoolDetailInfo(TypedDict): regexes: Coinbase tag patterns (regexes) slug: URL-friendly pool identifier """ - id: int name: str link: str @@ -1004,7 +703,6 @@ class PoolDetailInfo(TypedDict): regexes: List[str] slug: PoolSlug - class PoolDetail(TypedDict): """ Detailed pool information with statistics across time periods @@ -1016,14 +714,12 @@ class PoolDetail(TypedDict): estimatedHashrate: Estimated hashrate based on blocks mined reportedHashrate: Self-reported hashrate (if available) """ - pool: PoolDetailInfo blockCount: PoolBlockCounts blockShare: PoolBlockShares estimatedHashrate: int reportedHashrate: Optional[int] - class PoolInfo(TypedDict): """ Basic pool information for listing all pools @@ -1033,16 +729,13 @@ class PoolInfo(TypedDict): slug: URL-friendly pool identifier unique_id: Unique numeric pool identifier """ - name: str slug: PoolSlug unique_id: int - class PoolSlugParam(TypedDict): slug: PoolSlug - class PoolStats(TypedDict): """ Mining pool with block statistics for a time period @@ -1057,7 +750,6 @@ class PoolStats(TypedDict): slug: URL-friendly pool identifier share: Pool's share of total blocks (0.0 - 1.0) """ - poolId: int name: str link: str @@ -1067,7 +759,6 @@ class PoolStats(TypedDict): slug: PoolSlug share: float - class PoolsSummary(TypedDict): """ Mining pools response for a time period @@ -1077,12 +768,10 @@ class PoolsSummary(TypedDict): blockCount: Total blocks in the time period lastEstimatedHashrate: Estimated network hashrate (hashes per second) """ - pools: List[PoolStats] blockCount: int lastEstimatedHashrate: int - class RecommendedFees(TypedDict): """ Recommended fee rates in sat/vB @@ -1094,14 +783,12 @@ class RecommendedFees(TypedDict): economyFee: Fee rate for economical confirmation minimumFee: Minimum relay fee rate """ - fastestFee: FeeRate halfHourFee: FeeRate hourFee: FeeRate economyFee: FeeRate minimumFee: FeeRate - class RewardStats(TypedDict): """ Block reward statistics over a range of blocks @@ -1110,14 +797,12 @@ class RewardStats(TypedDict): startBlock: First block in the range endBlock: Last block in the range """ - startBlock: Height endBlock: Height totalReward: Sats totalFee: Sats totalTx: int - class SupplyState(TypedDict): """ Current supply state tracking UTXO count and total value @@ -1126,11 +811,9 @@ class SupplyState(TypedDict): utxo_count: Number of unspent transaction outputs value: Total value in satoshis """ - utxo_count: int value: Sats - class SyncStatus(TypedDict): """ Sync status of the indexer @@ -1142,22 +825,18 @@ class SyncStatus(TypedDict): last_indexed_at: Human-readable timestamp of the last indexed block (ISO 8601) last_indexed_at_unix: Unix timestamp of the last indexed block """ - indexed_height: Height tip_height: Height blocks_behind: Height last_indexed_at: str last_indexed_at_unix: Timestamp - class TimePeriodParam(TypedDict): time_period: TimePeriod - class TimestampParam(TypedDict): timestamp: Timestamp - class TxOut(TypedDict): """ Transaction output @@ -1166,11 +845,9 @@ class TxOut(TypedDict): scriptpubkey: Script pubkey (locking script) value: Value of the output in satoshis """ - scriptpubkey: str value: Sats - class TxIn(TypedDict): """ Transaction input @@ -1184,7 +861,6 @@ class TxIn(TypedDict): sequence: Input sequence number inner_redeemscript_asm: Inner redeemscript in assembly format (for P2SH-wrapped SegWit) """ - txid: Txid vout: Vout prevout: Union[TxOut, None] @@ -1194,7 +870,6 @@ class TxIn(TypedDict): sequence: int inner_redeemscript_asm: Optional[str] - class TxStatus(TypedDict): """ Transaction confirmation status @@ -1205,13 +880,11 @@ class TxStatus(TypedDict): block_hash: Block hash (only present if confirmed) block_time: Block timestamp (only present if confirmed) """ - confirmed: bool block_height: Union[Height, None] block_hash: Union[BlockHash, None] block_time: Union[Timestamp, None] - class Transaction(TypedDict): """ Transaction information compatible with mempool.space API format @@ -1224,7 +897,6 @@ class Transaction(TypedDict): vin: Transaction inputs vout: Transaction outputs """ - index: Union[TxIndex, None] txid: Txid version: TxVersion @@ -1237,7 +909,6 @@ class Transaction(TypedDict): vout: List[TxOut] status: TxStatus - class TxOutspend(TypedDict): """ Status of an output indicating whether it has been spent @@ -1248,17 +919,14 @@ class TxOutspend(TypedDict): vin: Input index in the spending transaction (only present if spent) status: Status of the spending transaction (only present if spent) """ - spent: bool txid: Union[Txid, None] vin: Union[Vin, None] status: Union[TxStatus, None] - class TxidParam(TypedDict): txid: Txid - class TxidVout(TypedDict): """ Transaction output reference (txid + output index) @@ -1267,31 +935,25 @@ class TxidVout(TypedDict): txid: Transaction ID vout: Output index """ - txid: Txid vout: Vout - class Utxo(TypedDict): """ Unspent transaction output """ - txid: Txid vout: Vout status: TxStatus value: Sats - class ValidateAddressParam(TypedDict): """ Attributes: address: Bitcoin address to validate (can be any string) """ - address: str - class MetricLeafWithSchema(TypedDict): """ MetricLeaf with JSON Schema for client generation @@ -1302,7 +964,6 @@ class MetricLeafWithSchema(TypedDict): indexes: Available indexes for this metric type: JSON Schema type (e.g., "integer", "number", "string", "boolean", "array", "object") """ - name: str kind: str indexes: List[Index] @@ -1323,7 +984,7 @@ class BrkClientBase: def __init__(self, base_url: str, timeout: float = 30.0): parsed = urlparse(base_url) self._host = parsed.netloc - self._secure = parsed.scheme == "https" + self._secure = parsed.scheme == 'https' self._timeout = timeout self._conn: Optional[Union[HTTPSConnection, HTTPConnection]] = None @@ -1373,8 +1034,7 @@ class BrkClientBase: def _m(acc: str, s: str) -> str: """Build metric name with suffix.""" - if not s: - return acc + if not s: return acc return f"{acc}_{s}" if acc else s @@ -1386,7 +1046,6 @@ def _p(prefix: str, acc: str) -> str: @dataclass class MetricData(Generic[T]): """Metric data with range information.""" - version: int total: int start: int @@ -1401,21 +1060,14 @@ AnyMetricData = MetricData[Any] class _EndpointConfig: """Shared endpoint configuration.""" - client: BrkClientBase name: str index: Index start: Optional[int] end: Optional[int] - def __init__( - self, - client: BrkClientBase, - name: str, - index: Index, - start: Optional[int] = None, - end: Optional[int] = None, - ): + def __init__(self, client: BrkClientBase, name: str, index: Index, + start: Optional[int] = None, end: Optional[int] = None): self.client = client self.name = name self.index = index @@ -1442,7 +1094,7 @@ class _EndpointConfig: return MetricData(**data) def get_csv(self) -> str: - return self.client.get_text(self._build_path(format="csv")) + return self.client.get_text(self._build_path(format='csv')) class RangeBuilder(Generic[T]): @@ -1484,15 +1136,10 @@ class SkippedBuilder(Generic[T]): def take(self, n: int) -> RangeBuilder[T]: """Take n items after the skipped position.""" start = self._config.start or 0 - return RangeBuilder( - _EndpointConfig( - self._config.client, - self._config.name, - self._config.index, - start, - start + n, - ) - ) + return RangeBuilder(_EndpointConfig( + self._config.client, self._config.name, self._config.index, + start, start + n + )) def fetch(self) -> MetricData[T]: """Fetch from skipped position to end.""" @@ -1537,9 +1184,7 @@ class MetricEndpointBuilder(Generic[T]): @overload def __getitem__(self, key: slice) -> RangeBuilder[T]: ... - def __getitem__( - self, key: Union[int, slice] - ) -> Union[SingleItemBuilder[T], RangeBuilder[T]]: + def __getitem__(self, key: Union[int, slice]) -> Union[SingleItemBuilder[T], RangeBuilder[T]]: """Access single item or slice. Examples: @@ -1549,49 +1194,36 @@ class MetricEndpointBuilder(Generic[T]): endpoint[100:110] # Range 100-109 """ if isinstance(key, int): - return SingleItemBuilder( - _EndpointConfig( - self._config.client, - self._config.name, - self._config.index, - key, - key + 1, - ) - ) - return RangeBuilder( - _EndpointConfig( - self._config.client, - self._config.name, - self._config.index, - key.start, - key.stop, - ) - ) + return SingleItemBuilder(_EndpointConfig( + self._config.client, self._config.name, self._config.index, + key, key + 1 + )) + return RangeBuilder(_EndpointConfig( + self._config.client, self._config.name, self._config.index, + key.start, key.stop + )) def head(self, n: int = 10) -> RangeBuilder[T]: """Get the first n items (pandas-style).""" - return RangeBuilder( - _EndpointConfig( - self._config.client, self._config.name, self._config.index, None, n - ) - ) + return RangeBuilder(_EndpointConfig( + self._config.client, self._config.name, self._config.index, + None, n + )) def tail(self, n: int = 10) -> RangeBuilder[T]: """Get the last n items (pandas-style).""" start, end = (None, 0) if n == 0 else (-n, None) - return RangeBuilder( - _EndpointConfig( - self._config.client, self._config.name, self._config.index, start, end - ) - ) + return RangeBuilder(_EndpointConfig( + self._config.client, self._config.name, self._config.index, + start, end + )) def skip(self, n: int) -> SkippedBuilder[T]: """Skip the first n items. Chain with take() to get a range.""" - return SkippedBuilder( - _EndpointConfig( - self._config.client, self._config.name, self._config.index, n, None - ) - ) + return SkippedBuilder(_EndpointConfig( + self._config.client, self._config.name, self._config.index, + n, None + )) def fetch(self) -> MetricData[T]: """Fetch all data as parsed JSON.""" @@ -1628,4978 +1260,2779 @@ class MetricPattern(Protocol[T]): # Static index tuples -_i1 = ( - "dateindex", - "decadeindex", - "difficultyepoch", - "height", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", -) -_i2 = ( - "dateindex", - "decadeindex", - "difficultyepoch", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", -) -_i3 = ( - "dateindex", - "decadeindex", - "height", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", -) -_i4 = ( - "dateindex", - "decadeindex", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", -) -_i5 = ("dateindex", "height") -_i6 = ("dateindex",) -_i7 = ("decadeindex",) -_i8 = ("difficultyepoch",) -_i9 = ("emptyoutputindex",) -_i10 = ("halvingepoch",) -_i11 = ("height",) -_i12 = ("txinindex",) -_i13 = ("monthindex",) -_i14 = ("opreturnindex",) -_i15 = ("txoutindex",) -_i16 = ("p2aaddressindex",) -_i17 = ("p2msoutputindex",) -_i18 = ("p2pk33addressindex",) -_i19 = ("p2pk65addressindex",) -_i20 = ("p2pkhaddressindex",) -_i21 = ("p2shaddressindex",) -_i22 = ("p2traddressindex",) -_i23 = ("p2wpkhaddressindex",) -_i24 = ("p2wshaddressindex",) -_i25 = ("quarterindex",) -_i26 = ("semesterindex",) -_i27 = ("txindex",) -_i28 = ("unknownoutputindex",) -_i29 = ("weekindex",) -_i30 = ("yearindex",) -_i31 = ("loadedaddressindex",) -_i32 = ("emptyaddressindex",) - +_i1 = ('dateindex', 'decadeindex', 'difficultyepoch', 'height', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex') +_i2 = ('dateindex', 'decadeindex', 'difficultyepoch', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex') +_i3 = ('dateindex', 'decadeindex', 'height', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex') +_i4 = ('dateindex', 'decadeindex', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex') +_i5 = ('dateindex', 'height') +_i6 = ('dateindex',) +_i7 = ('decadeindex',) +_i8 = ('difficultyepoch',) +_i9 = ('emptyoutputindex',) +_i10 = ('halvingepoch',) +_i11 = ('height',) +_i12 = ('txinindex',) +_i13 = ('monthindex',) +_i14 = ('opreturnindex',) +_i15 = ('txoutindex',) +_i16 = ('p2aaddressindex',) +_i17 = ('p2msoutputindex',) +_i18 = ('p2pk33addressindex',) +_i19 = ('p2pk65addressindex',) +_i20 = ('p2pkhaddressindex',) +_i21 = ('p2shaddressindex',) +_i22 = ('p2traddressindex',) +_i23 = ('p2wpkhaddressindex',) +_i24 = ('p2wshaddressindex',) +_i25 = ('quarterindex',) +_i26 = ('semesterindex',) +_i27 = ('txindex',) +_i28 = ('unknownoutputindex',) +_i29 = ('weekindex',) +_i30 = ('yearindex',) +_i31 = ('loadedaddressindex',) +_i32 = ('emptyaddressindex',) def _ep(c: BrkClientBase, n: str, i: Index) -> MetricEndpointBuilder[Any]: return MetricEndpointBuilder(c, n, i) - # Index accessor classes - class _MetricPattern1By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def dateindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "dateindex") - - def decadeindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "decadeindex") - - def difficultyepoch(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "difficultyepoch") - - def height(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "height") - - def monthindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "monthindex") - - def quarterindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "quarterindex") - - def semesterindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "semesterindex") - - def weekindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "weekindex") - - def yearindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "yearindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def dateindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'dateindex') + def decadeindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'decadeindex') + def difficultyepoch(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'difficultyepoch') + def height(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'height') + def monthindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'monthindex') + def quarterindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'quarterindex') + def semesterindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'semesterindex') + def weekindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'weekindex') + def yearindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'yearindex') class MetricPattern1(Generic[T]): by: _MetricPattern1By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern1By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern1By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i1) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i1 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i1) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i1 else None class _MetricPattern2By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def dateindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "dateindex") - - def decadeindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "decadeindex") - - def difficultyepoch(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "difficultyepoch") - - def monthindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "monthindex") - - def quarterindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "quarterindex") - - def semesterindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "semesterindex") - - def weekindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "weekindex") - - def yearindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "yearindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def dateindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'dateindex') + def decadeindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'decadeindex') + def difficultyepoch(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'difficultyepoch') + def monthindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'monthindex') + def quarterindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'quarterindex') + def semesterindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'semesterindex') + def weekindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'weekindex') + def yearindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'yearindex') class MetricPattern2(Generic[T]): by: _MetricPattern2By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern2By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern2By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i2) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i2 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i2) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i2 else None class _MetricPattern3By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def dateindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "dateindex") - - def decadeindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "decadeindex") - - def height(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "height") - - def monthindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "monthindex") - - def quarterindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "quarterindex") - - def semesterindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "semesterindex") - - def weekindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "weekindex") - - def yearindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "yearindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def dateindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'dateindex') + def decadeindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'decadeindex') + def height(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'height') + def monthindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'monthindex') + def quarterindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'quarterindex') + def semesterindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'semesterindex') + def weekindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'weekindex') + def yearindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'yearindex') class MetricPattern3(Generic[T]): by: _MetricPattern3By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern3By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern3By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i3) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i3 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i3) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i3 else None class _MetricPattern4By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def dateindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "dateindex") - - def decadeindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "decadeindex") - - def monthindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "monthindex") - - def quarterindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "quarterindex") - - def semesterindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "semesterindex") - - def weekindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "weekindex") - - def yearindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "yearindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def dateindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'dateindex') + def decadeindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'decadeindex') + def monthindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'monthindex') + def quarterindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'quarterindex') + def semesterindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'semesterindex') + def weekindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'weekindex') + def yearindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'yearindex') class MetricPattern4(Generic[T]): by: _MetricPattern4By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern4By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern4By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i4) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i4 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i4) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i4 else None class _MetricPattern5By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def dateindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "dateindex") - - def height(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "height") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def dateindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'dateindex') + def height(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'height') class MetricPattern5(Generic[T]): by: _MetricPattern5By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern5By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern5By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i5) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i5 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i5) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i5 else None class _MetricPattern6By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def dateindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "dateindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def dateindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'dateindex') class MetricPattern6(Generic[T]): by: _MetricPattern6By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern6By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern6By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i6) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i6 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i6) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i6 else None class _MetricPattern7By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def decadeindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "decadeindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def decadeindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'decadeindex') class MetricPattern7(Generic[T]): by: _MetricPattern7By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern7By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern7By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i7) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i7 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i7) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i7 else None class _MetricPattern8By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def difficultyepoch(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "difficultyepoch") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def difficultyepoch(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'difficultyepoch') class MetricPattern8(Generic[T]): by: _MetricPattern8By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern8By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern8By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i8) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i8 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i8) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i8 else None class _MetricPattern9By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def emptyoutputindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "emptyoutputindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def emptyoutputindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'emptyoutputindex') class MetricPattern9(Generic[T]): by: _MetricPattern9By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern9By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern9By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i9) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i9 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i9) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i9 else None class _MetricPattern10By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def halvingepoch(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "halvingepoch") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def halvingepoch(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'halvingepoch') class MetricPattern10(Generic[T]): by: _MetricPattern10By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern10By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern10By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i10) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i10 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i10) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i10 else None class _MetricPattern11By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def height(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "height") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def height(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'height') class MetricPattern11(Generic[T]): by: _MetricPattern11By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern11By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern11By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i11) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i11 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i11) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i11 else None class _MetricPattern12By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def txinindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "txinindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def txinindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'txinindex') class MetricPattern12(Generic[T]): by: _MetricPattern12By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern12By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern12By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i12) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i12 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i12) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i12 else None class _MetricPattern13By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def monthindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "monthindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def monthindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'monthindex') class MetricPattern13(Generic[T]): by: _MetricPattern13By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern13By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern13By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i13) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i13 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i13) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i13 else None class _MetricPattern14By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def opreturnindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "opreturnindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def opreturnindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'opreturnindex') class MetricPattern14(Generic[T]): by: _MetricPattern14By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern14By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern14By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i14) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i14 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i14) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i14 else None class _MetricPattern15By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def txoutindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "txoutindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def txoutindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'txoutindex') class MetricPattern15(Generic[T]): by: _MetricPattern15By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern15By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern15By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i15) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i15 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i15) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i15 else None class _MetricPattern16By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def p2aaddressindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "p2aaddressindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def p2aaddressindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'p2aaddressindex') class MetricPattern16(Generic[T]): by: _MetricPattern16By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern16By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern16By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i16) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i16 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i16) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i16 else None class _MetricPattern17By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def p2msoutputindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "p2msoutputindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def p2msoutputindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'p2msoutputindex') class MetricPattern17(Generic[T]): by: _MetricPattern17By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern17By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern17By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i17) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i17 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i17) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i17 else None class _MetricPattern18By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def p2pk33addressindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "p2pk33addressindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def p2pk33addressindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'p2pk33addressindex') class MetricPattern18(Generic[T]): by: _MetricPattern18By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern18By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern18By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i18) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i18 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i18) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i18 else None class _MetricPattern19By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def p2pk65addressindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "p2pk65addressindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def p2pk65addressindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'p2pk65addressindex') class MetricPattern19(Generic[T]): by: _MetricPattern19By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern19By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern19By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i19) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i19 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i19) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i19 else None class _MetricPattern20By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def p2pkhaddressindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "p2pkhaddressindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def p2pkhaddressindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'p2pkhaddressindex') class MetricPattern20(Generic[T]): by: _MetricPattern20By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern20By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern20By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i20) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i20 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i20) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i20 else None class _MetricPattern21By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def p2shaddressindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "p2shaddressindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def p2shaddressindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'p2shaddressindex') class MetricPattern21(Generic[T]): by: _MetricPattern21By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern21By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern21By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i21) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i21 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i21) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i21 else None class _MetricPattern22By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def p2traddressindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "p2traddressindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def p2traddressindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'p2traddressindex') class MetricPattern22(Generic[T]): by: _MetricPattern22By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern22By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern22By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i22) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i22 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i22) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i22 else None class _MetricPattern23By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def p2wpkhaddressindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "p2wpkhaddressindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def p2wpkhaddressindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'p2wpkhaddressindex') class MetricPattern23(Generic[T]): by: _MetricPattern23By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern23By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern23By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i23) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i23 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i23) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i23 else None class _MetricPattern24By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def p2wshaddressindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "p2wshaddressindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def p2wshaddressindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'p2wshaddressindex') class MetricPattern24(Generic[T]): by: _MetricPattern24By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern24By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern24By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i24) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i24 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i24) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i24 else None class _MetricPattern25By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def quarterindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "quarterindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def quarterindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'quarterindex') class MetricPattern25(Generic[T]): by: _MetricPattern25By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern25By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern25By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i25) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i25 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i25) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i25 else None class _MetricPattern26By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def semesterindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "semesterindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def semesterindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'semesterindex') class MetricPattern26(Generic[T]): by: _MetricPattern26By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern26By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern26By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i26) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i26 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i26) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i26 else None class _MetricPattern27By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def txindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "txindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def txindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'txindex') class MetricPattern27(Generic[T]): by: _MetricPattern27By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern27By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern27By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i27) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i27 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i27) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i27 else None class _MetricPattern28By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def unknownoutputindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "unknownoutputindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def unknownoutputindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'unknownoutputindex') class MetricPattern28(Generic[T]): by: _MetricPattern28By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern28By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern28By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i28) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i28 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i28) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i28 else None class _MetricPattern29By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def weekindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "weekindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def weekindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'weekindex') class MetricPattern29(Generic[T]): by: _MetricPattern29By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern29By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern29By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i29) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i29 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i29) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i29 else None class _MetricPattern30By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def yearindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "yearindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def yearindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'yearindex') class MetricPattern30(Generic[T]): by: _MetricPattern30By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern30By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern30By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i30) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i30 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i30) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i30 else None class _MetricPattern31By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def loadedaddressindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "loadedaddressindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def loadedaddressindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'loadedaddressindex') class MetricPattern31(Generic[T]): by: _MetricPattern31By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern31By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern31By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i31) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i31 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i31) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i31 else None class _MetricPattern32By(Generic[T]): - def __init__(self, c: BrkClientBase, n: str): - self._c, self._n = c, n - - def emptyaddressindex(self) -> MetricEndpointBuilder[T]: - return _ep(self._c, self._n, "emptyaddressindex") - + def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n + def emptyaddressindex(self) -> MetricEndpointBuilder[T]: return _ep(self._c, self._n, 'emptyaddressindex') class MetricPattern32(Generic[T]): by: _MetricPattern32By[T] - - def __init__(self, c: BrkClientBase, n: str): - self._n, self.by = n, _MetricPattern32By(c, n) - + def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _MetricPattern32By(c, n) @property - def name(self) -> str: - return self._n - - def indexes(self) -> List[str]: - return list(_i32) - - def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: - return _ep(self.by._c, self._n, index) if index in _i32 else None - + def name(self) -> str: return self._n + def indexes(self) -> List[str]: return list(_i32) + def get(self, index: Index) -> Optional[MetricEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i32 else None # Reusable structural pattern classes - class RealizedPattern3: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.adjusted_sopr: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr") - ) - self.adjusted_sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr_30d_ema") - ) - self.adjusted_sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr_7d_ema") - ) - self.adjusted_value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "adjusted_value_created") - ) - self.adjusted_value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "adjusted_value_destroyed") - ) - self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "mvrv")) - self.neg_realized_loss: BitcoinPattern2[Dollars] = BitcoinPattern2( - client, _m(acc, "neg_realized_loss") - ) - self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "net_realized_pnl") - ) - self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = ( - MetricPattern4(client, _m(acc, "net_realized_pnl_cumulative_30d_delta")) - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap") - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap") - ) - self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "net_realized_pnl_rel_to_realized_cap")) - ) - self.realized_cap: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_cap") - ) - self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "realized_cap_30d_delta") - ) - self.realized_cap_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "realized_cap_rel_to_own_market_cap")) - ) - self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_loss") - ) - self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_loss_rel_to_realized_cap")) - ) - self.realized_price: ActivePricePattern = ActivePricePattern( - client, _m(acc, "realized_price") - ) - self.realized_price_extra: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, _m(acc, "realized_price_ratio") - ) - self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_profit") - ) - self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_profit_rel_to_realized_cap")) - ) - self.realized_profit_to_loss_ratio: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "realized_profit_to_loss_ratio") - ) - self.realized_value: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_value") - ) - self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio") - ) - self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_30d_ema") - ) - self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_7d_ema") - ) - self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, "sopr")) - self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_30d_ema") - ) - self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_7d_ema") - ) - self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "total_realized_pnl") - ) - self.value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_created") - ) - self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_destroyed") - ) - + self.adjusted_sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr')) + self.adjusted_sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr_30d_ema')) + self.adjusted_sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr_7d_ema')) + self.adjusted_value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'adjusted_value_created')) + self.adjusted_value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'adjusted_value_destroyed')) + self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'mvrv')) + self.neg_realized_loss: BitcoinPattern2[Dollars] = BitcoinPattern2(client, _m(acc, 'neg_realized_loss')) + self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')) + self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')) + self.realized_cap: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_cap')) + self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'realized_cap_30d_delta')) + self.realized_cap_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'realized_cap_rel_to_own_market_cap')) + self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_loss')) + self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')) + self.realized_price: ActivePricePattern = ActivePricePattern(client, _m(acc, 'realized_price')) + self.realized_price_extra: ActivePriceRatioPattern = ActivePriceRatioPattern(client, _m(acc, 'realized_price_ratio')) + self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_profit')) + self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')) + self.realized_profit_to_loss_ratio: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'realized_profit_to_loss_ratio')) + self.realized_value: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_value')) + self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio')) + self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')) + self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')) + self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr')) + self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_30d_ema')) + self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_7d_ema')) + self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'total_realized_pnl')) + self.value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_created')) + self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_destroyed')) class RealizedPattern4: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.adjusted_sopr: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr") - ) - self.adjusted_sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr_30d_ema") - ) - self.adjusted_sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr_7d_ema") - ) - self.adjusted_value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "adjusted_value_created") - ) - self.adjusted_value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "adjusted_value_destroyed") - ) - self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "mvrv")) - self.neg_realized_loss: BitcoinPattern2[Dollars] = BitcoinPattern2( - client, _m(acc, "neg_realized_loss") - ) - self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "net_realized_pnl") - ) - self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = ( - MetricPattern4(client, _m(acc, "net_realized_pnl_cumulative_30d_delta")) - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap") - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap") - ) - self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "net_realized_pnl_rel_to_realized_cap")) - ) - self.realized_cap: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_cap") - ) - self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "realized_cap_30d_delta") - ) - self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_loss") - ) - self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_loss_rel_to_realized_cap")) - ) - self.realized_price: ActivePricePattern = ActivePricePattern( - client, _m(acc, "realized_price") - ) - self.realized_price_extra: RealizedPriceExtraPattern = ( - RealizedPriceExtraPattern(client, _m(acc, "realized_price_ratio")) - ) - self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_profit") - ) - self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_profit_rel_to_realized_cap")) - ) - self.realized_value: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_value") - ) - self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio") - ) - self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_30d_ema") - ) - self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_7d_ema") - ) - self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, "sopr")) - self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_30d_ema") - ) - self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_7d_ema") - ) - self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "total_realized_pnl") - ) - self.value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_created") - ) - self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_destroyed") - ) - + self.adjusted_sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr')) + self.adjusted_sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr_30d_ema')) + self.adjusted_sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr_7d_ema')) + self.adjusted_value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'adjusted_value_created')) + self.adjusted_value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'adjusted_value_destroyed')) + self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'mvrv')) + self.neg_realized_loss: BitcoinPattern2[Dollars] = BitcoinPattern2(client, _m(acc, 'neg_realized_loss')) + self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')) + self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')) + self.realized_cap: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_cap')) + self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'realized_cap_30d_delta')) + self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_loss')) + self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')) + self.realized_price: ActivePricePattern = ActivePricePattern(client, _m(acc, 'realized_price')) + self.realized_price_extra: RealizedPriceExtraPattern = RealizedPriceExtraPattern(client, _m(acc, 'realized_price_ratio')) + self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_profit')) + self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')) + self.realized_value: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_value')) + self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio')) + self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')) + self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')) + self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr')) + self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_30d_ema')) + self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_7d_ema')) + self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'total_realized_pnl')) + self.value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_created')) + self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_destroyed')) class Ratio1ySdPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._0sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "0sd_usd")) - self.m0_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "m0_5sd") - ) - self.m0_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "m0_5sd_usd")) - self.m1_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "m1_5sd") - ) - self.m1_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "m1_5sd_usd")) - self.m1sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "m1sd")) - self.m1sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "m1sd_usd")) - self.m2_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "m2_5sd") - ) - self.m2_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "m2_5sd_usd")) - self.m2sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "m2sd")) - self.m2sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "m2sd_usd")) - self.m3sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "m3sd")) - self.m3sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "m3sd_usd")) - self.p0_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "p0_5sd") - ) - self.p0_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "p0_5sd_usd")) - self.p1_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "p1_5sd") - ) - self.p1_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "p1_5sd_usd")) - self.p1sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "p1sd")) - self.p1sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "p1sd_usd")) - self.p2_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "p2_5sd") - ) - self.p2_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "p2_5sd_usd")) - self.p2sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "p2sd")) - self.p2sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "p2sd_usd")) - self.p3sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "p3sd")) - self.p3sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "p3sd_usd")) - self.sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "sd")) - self.sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "sma")) - self.zscore: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "zscore") - ) - + self._0sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, '0sd_usd')) + self.m0_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm0_5sd')) + self.m0_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'm0_5sd_usd')) + self.m1_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm1_5sd')) + self.m1_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'm1_5sd_usd')) + self.m1sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm1sd')) + self.m1sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'm1sd_usd')) + self.m2_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm2_5sd')) + self.m2_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'm2_5sd_usd')) + self.m2sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm2sd')) + self.m2sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'm2sd_usd')) + self.m3sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm3sd')) + self.m3sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'm3sd_usd')) + self.p0_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p0_5sd')) + self.p0_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'p0_5sd_usd')) + self.p1_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p1_5sd')) + self.p1_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'p1_5sd_usd')) + self.p1sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p1sd')) + self.p1sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'p1sd_usd')) + self.p2_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p2_5sd')) + self.p2_5sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'p2_5sd_usd')) + self.p2sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p2sd')) + self.p2sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'p2sd_usd')) + self.p3sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p3sd')) + self.p3sd_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'p3sd_usd')) + self.sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sd')) + self.sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sma')) + self.zscore: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'zscore')) class RealizedPattern2: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "mvrv")) - self.neg_realized_loss: BitcoinPattern2[Dollars] = BitcoinPattern2( - client, _m(acc, "neg_realized_loss") - ) - self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "net_realized_pnl") - ) - self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = ( - MetricPattern4(client, _m(acc, "net_realized_pnl_cumulative_30d_delta")) - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap") - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap") - ) - self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "net_realized_pnl_rel_to_realized_cap")) - ) - self.realized_cap: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_cap") - ) - self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "realized_cap_30d_delta") - ) - self.realized_cap_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "realized_cap_rel_to_own_market_cap")) - ) - self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_loss") - ) - self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_loss_rel_to_realized_cap")) - ) - self.realized_price: ActivePricePattern = ActivePricePattern( - client, _m(acc, "realized_price") - ) - self.realized_price_extra: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, _m(acc, "realized_price_ratio") - ) - self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_profit") - ) - self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_profit_rel_to_realized_cap")) - ) - self.realized_profit_to_loss_ratio: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "realized_profit_to_loss_ratio") - ) - self.realized_value: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_value") - ) - self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio") - ) - self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_30d_ema") - ) - self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_7d_ema") - ) - self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, "sopr")) - self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_30d_ema") - ) - self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_7d_ema") - ) - self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "total_realized_pnl") - ) - self.value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_created") - ) - self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_destroyed") - ) - + self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'mvrv')) + self.neg_realized_loss: BitcoinPattern2[Dollars] = BitcoinPattern2(client, _m(acc, 'neg_realized_loss')) + self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')) + self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')) + self.realized_cap: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_cap')) + self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'realized_cap_30d_delta')) + self.realized_cap_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'realized_cap_rel_to_own_market_cap')) + self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_loss')) + self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')) + self.realized_price: ActivePricePattern = ActivePricePattern(client, _m(acc, 'realized_price')) + self.realized_price_extra: ActivePriceRatioPattern = ActivePriceRatioPattern(client, _m(acc, 'realized_price_ratio')) + self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_profit')) + self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')) + self.realized_profit_to_loss_ratio: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'realized_profit_to_loss_ratio')) + self.realized_value: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_value')) + self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio')) + self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')) + self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')) + self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr')) + self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_30d_ema')) + self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_7d_ema')) + self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'total_realized_pnl')) + self.value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_created')) + self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_destroyed')) class RealizedPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "mvrv")) - self.neg_realized_loss: BitcoinPattern2[Dollars] = BitcoinPattern2( - client, _m(acc, "neg_realized_loss") - ) - self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "net_realized_pnl") - ) - self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = ( - MetricPattern4(client, _m(acc, "net_realized_pnl_cumulative_30d_delta")) - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap") - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap") - ) - self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "net_realized_pnl_rel_to_realized_cap")) - ) - self.realized_cap: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_cap") - ) - self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "realized_cap_30d_delta") - ) - self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_loss") - ) - self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_loss_rel_to_realized_cap")) - ) - self.realized_price: ActivePricePattern = ActivePricePattern( - client, _m(acc, "realized_price") - ) - self.realized_price_extra: RealizedPriceExtraPattern = ( - RealizedPriceExtraPattern(client, _m(acc, "realized_price_ratio")) - ) - self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_profit") - ) - self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_profit_rel_to_realized_cap")) - ) - self.realized_value: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_value") - ) - self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio") - ) - self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_30d_ema") - ) - self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_7d_ema") - ) - self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, "sopr")) - self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_30d_ema") - ) - self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_7d_ema") - ) - self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "total_realized_pnl") - ) - self.value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_created") - ) - self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_destroyed") - ) - + self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'mvrv')) + self.neg_realized_loss: BitcoinPattern2[Dollars] = BitcoinPattern2(client, _m(acc, 'neg_realized_loss')) + self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')) + self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')) + self.realized_cap: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_cap')) + self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'realized_cap_30d_delta')) + self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_loss')) + self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')) + self.realized_price: ActivePricePattern = ActivePricePattern(client, _m(acc, 'realized_price')) + self.realized_price_extra: RealizedPriceExtraPattern = RealizedPriceExtraPattern(client, _m(acc, 'realized_price_ratio')) + self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_profit')) + self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')) + self.realized_value: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_value')) + self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio')) + self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')) + self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')) + self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr')) + self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_30d_ema')) + self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_7d_ema')) + self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'total_realized_pnl')) + self.value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_created')) + self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_destroyed')) class Price111dSmaPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.price: _0sdUsdPattern = _0sdUsdPattern(client, acc) - self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "ratio")) - self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_1m_sma") - ) - self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_1w_sma") - ) - self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( - client, _m(acc, "ratio_1y") - ) - self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( - client, _m(acc, "ratio_2y") - ) - self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( - client, _m(acc, "ratio_4y") - ) - self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct1") - ) - self.ratio_pct1_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "ratio_pct1_usd") - ) - self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct2") - ) - self.ratio_pct2_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "ratio_pct2_usd") - ) - self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct5") - ) - self.ratio_pct5_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "ratio_pct5_usd") - ) - self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct95") - ) - self.ratio_pct95_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "ratio_pct95_usd") - ) - self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct98") - ) - self.ratio_pct98_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "ratio_pct98_usd") - ) - self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct99") - ) - self.ratio_pct99_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "ratio_pct99_usd") - ) - self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, "ratio")) - + self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio')) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_1m_sma')) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_1w_sma')) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, 'ratio_1y')) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, 'ratio_2y')) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, 'ratio_4y')) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct1')) + self.ratio_pct1_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'ratio_pct1_usd')) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct2')) + self.ratio_pct2_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'ratio_pct2_usd')) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct5')) + self.ratio_pct5_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'ratio_pct5_usd')) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct95')) + self.ratio_pct95_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'ratio_pct95_usd')) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct98')) + self.ratio_pct98_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'ratio_pct98_usd')) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct99')) + self.ratio_pct99_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'ratio_pct99_usd')) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, 'ratio')) class PercentilesPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.pct05: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct05")) - self.pct10: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct10")) - self.pct15: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct15")) - self.pct20: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct20")) - self.pct25: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct25")) - self.pct30: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct30")) - self.pct35: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct35")) - self.pct40: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct40")) - self.pct45: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct45")) - self.pct50: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct50")) - self.pct55: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct55")) - self.pct60: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct60")) - self.pct65: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct65")) - self.pct70: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct70")) - self.pct75: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct75")) - self.pct80: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct80")) - self.pct85: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct85")) - self.pct90: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct90")) - self.pct95: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, "pct95")) - + self.pct05: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct05')) + self.pct10: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct10')) + self.pct15: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct15')) + self.pct20: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct20')) + self.pct25: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct25')) + self.pct30: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct30')) + self.pct35: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct35')) + self.pct40: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct40')) + self.pct45: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct45')) + self.pct50: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct50')) + self.pct55: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct55')) + self.pct60: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct60')) + self.pct65: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct65')) + self.pct70: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct70')) + self.pct75: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct75')) + self.pct80: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct80')) + self.pct85: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct85')) + self.pct90: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct90')) + self.pct95: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct95')) class ActivePriceRatioPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, acc) - self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "1m_sma") - ) - self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "1w_sma") - ) - self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, "1y")) - self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, "2y")) - self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, "4y")) - self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct1") - ) - self.ratio_pct1_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "pct1_usd") - ) - self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct2") - ) - self.ratio_pct2_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "pct2_usd") - ) - self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct5") - ) - self.ratio_pct5_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "pct5_usd") - ) - self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct95") - ) - self.ratio_pct95_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "pct95_usd") - ) - self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct98") - ) - self.ratio_pct98_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "pct98_usd") - ) - self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct99") - ) - self.ratio_pct99_usd: _0sdUsdPattern = _0sdUsdPattern( - client, _m(acc, "pct99_usd") - ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, '1m_sma')) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, '1w_sma')) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, '1y')) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, '2y')) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, '4y')) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct1')) + self.ratio_pct1_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct1_usd')) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct2')) + self.ratio_pct2_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct2_usd')) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct5')) + self.ratio_pct5_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct5_usd')) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct95')) + self.ratio_pct95_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct95_usd')) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct98')) + self.ratio_pct98_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct98_usd')) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct99')) + self.ratio_pct99_usd: _0sdUsdPattern = _0sdUsdPattern(client, _m(acc, 'pct99_usd')) self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, acc) - class RelativePattern5: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.neg_unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "neg_unrealized_loss_rel_to_market_cap")) - ) - self.neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "neg_unrealized_loss_rel_to_own_market_cap")) - ) - self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl") - ) - self.net_unrealized_pnl_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "net_unrealized_pnl_rel_to_market_cap")) - ) - self.net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "net_unrealized_pnl_rel_to_own_market_cap")) - ) - self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl") - ) - self.nupl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, "nupl")) - self.supply_in_loss_rel_to_circulating_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_loss_rel_to_circulating_supply")) - ) - self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_loss_rel_to_own_supply")) - ) - self.supply_in_profit_rel_to_circulating_supply: MetricPattern1[StoredF64] = ( - MetricPattern1( - client, _m(acc, "supply_in_profit_rel_to_circulating_supply") - ) - ) - self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_profit_rel_to_own_supply")) - ) - self.supply_rel_to_circulating_supply: MetricPattern4[StoredF64] = ( - MetricPattern4(client, _m(acc, "supply_rel_to_circulating_supply")) - ) - self.unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_loss_rel_to_market_cap")) - ) - self.unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_loss_rel_to_own_market_cap")) - ) - self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "unrealized_loss_rel_to_own_total_unrealized_pnl") - ) - self.unrealized_profit_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_profit_rel_to_market_cap")) - ) - self.unrealized_profit_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_profit_rel_to_own_market_cap")) - ) - self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "unrealized_profit_rel_to_own_total_unrealized_pnl") - ) - + self.neg_unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_market_cap')) + self.neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_market_cap')) + self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_total_unrealized_pnl')) + self.net_unrealized_pnl_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap')) + self.net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_market_cap')) + self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_total_unrealized_pnl')) + self.nupl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'nupl')) + self.supply_in_loss_rel_to_circulating_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_circulating_supply')) + self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_own_supply')) + self.supply_in_profit_rel_to_circulating_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_circulating_supply')) + self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_own_supply')) + self.supply_rel_to_circulating_supply: MetricPattern4[StoredF64] = MetricPattern4(client, _m(acc, 'supply_rel_to_circulating_supply')) + self.unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_market_cap')) + self.unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_market_cap')) + self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_total_unrealized_pnl')) + self.unrealized_profit_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_market_cap')) + self.unrealized_profit_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_market_cap')) + self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_total_unrealized_pnl')) class AaopoolPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._1m_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1( - client, _m(acc, "1m_blocks_mined") - ) - self._1m_dominance: MetricPattern1[StoredF32] = MetricPattern1( - client, _m(acc, "1m_dominance") - ) - self._1w_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1( - client, _m(acc, "1w_blocks_mined") - ) - self._1w_dominance: MetricPattern1[StoredF32] = MetricPattern1( - client, _m(acc, "1w_dominance") - ) - self._1y_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1( - client, _m(acc, "1y_blocks_mined") - ) - self._1y_dominance: MetricPattern1[StoredF32] = MetricPattern1( - client, _m(acc, "1y_dominance") - ) - self._24h_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1( - client, _m(acc, "24h_blocks_mined") - ) - self._24h_dominance: MetricPattern1[StoredF32] = MetricPattern1( - client, _m(acc, "24h_dominance") - ) - self.blocks_mined: BlockCountPattern[StoredU32] = BlockCountPattern( - client, _m(acc, "blocks_mined") - ) - self.blocks_since_block: MetricPattern1[StoredU32] = MetricPattern1( - client, _m(acc, "blocks_since_block") - ) - self.coinbase: CoinbasePattern2 = CoinbasePattern2(client, _m(acc, "coinbase")) - self.days_since_block: MetricPattern4[StoredU16] = MetricPattern4( - client, _m(acc, "days_since_block") - ) - self.dominance: MetricPattern1[StoredF32] = MetricPattern1( - client, _m(acc, "dominance") - ) - self.fee: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, _m(acc, "fee") - ) - self.subsidy: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, _m(acc, "subsidy") - ) - + self._1m_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1(client, _m(acc, '1m_blocks_mined')) + self._1m_dominance: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, '1m_dominance')) + self._1w_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1(client, _m(acc, '1w_blocks_mined')) + self._1w_dominance: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, '1w_dominance')) + self._1y_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1(client, _m(acc, '1y_blocks_mined')) + self._1y_dominance: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, '1y_dominance')) + self._24h_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1(client, _m(acc, '24h_blocks_mined')) + self._24h_dominance: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, '24h_dominance')) + self.blocks_mined: BlockCountPattern[StoredU32] = BlockCountPattern(client, _m(acc, 'blocks_mined')) + self.blocks_since_block: MetricPattern1[StoredU32] = MetricPattern1(client, _m(acc, 'blocks_since_block')) + self.coinbase: CoinbasePattern2 = CoinbasePattern2(client, _m(acc, 'coinbase')) + self.days_since_block: MetricPattern4[StoredU16] = MetricPattern4(client, _m(acc, 'days_since_block')) + self.dominance: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'dominance')) + self.fee: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, _m(acc, 'fee')) + self.subsidy: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, _m(acc, 'subsidy')) class PeriodLumpSumStackPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._10y: _2015Pattern = _2015Pattern(client, _p("10y", acc)) - self._1m: _2015Pattern = _2015Pattern(client, _p("1m", acc)) - self._1w: _2015Pattern = _2015Pattern(client, _p("1w", acc)) - self._1y: _2015Pattern = _2015Pattern(client, _p("1y", acc)) - self._2y: _2015Pattern = _2015Pattern(client, _p("2y", acc)) - self._3m: _2015Pattern = _2015Pattern(client, _p("3m", acc)) - self._3y: _2015Pattern = _2015Pattern(client, _p("3y", acc)) - self._4y: _2015Pattern = _2015Pattern(client, _p("4y", acc)) - self._5y: _2015Pattern = _2015Pattern(client, _p("5y", acc)) - self._6m: _2015Pattern = _2015Pattern(client, _p("6m", acc)) - self._6y: _2015Pattern = _2015Pattern(client, _p("6y", acc)) - self._8y: _2015Pattern = _2015Pattern(client, _p("8y", acc)) - + self._10y: _2015Pattern = _2015Pattern(client, _p('10y', acc)) + self._1m: _2015Pattern = _2015Pattern(client, _p('1m', acc)) + self._1w: _2015Pattern = _2015Pattern(client, _p('1w', acc)) + self._1y: _2015Pattern = _2015Pattern(client, _p('1y', acc)) + self._2y: _2015Pattern = _2015Pattern(client, _p('2y', acc)) + self._3m: _2015Pattern = _2015Pattern(client, _p('3m', acc)) + self._3y: _2015Pattern = _2015Pattern(client, _p('3y', acc)) + self._4y: _2015Pattern = _2015Pattern(client, _p('4y', acc)) + self._5y: _2015Pattern = _2015Pattern(client, _p('5y', acc)) + self._6m: _2015Pattern = _2015Pattern(client, _p('6m', acc)) + self._6y: _2015Pattern = _2015Pattern(client, _p('6y', acc)) + self._8y: _2015Pattern = _2015Pattern(client, _p('8y', acc)) class PeriodDaysInLossPattern(Generic[T]): """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._10y: MetricPattern4[T] = MetricPattern4(client, _p("10y", acc)) - self._1m: MetricPattern4[T] = MetricPattern4(client, _p("1m", acc)) - self._1w: MetricPattern4[T] = MetricPattern4(client, _p("1w", acc)) - self._1y: MetricPattern4[T] = MetricPattern4(client, _p("1y", acc)) - self._2y: MetricPattern4[T] = MetricPattern4(client, _p("2y", acc)) - self._3m: MetricPattern4[T] = MetricPattern4(client, _p("3m", acc)) - self._3y: MetricPattern4[T] = MetricPattern4(client, _p("3y", acc)) - self._4y: MetricPattern4[T] = MetricPattern4(client, _p("4y", acc)) - self._5y: MetricPattern4[T] = MetricPattern4(client, _p("5y", acc)) - self._6m: MetricPattern4[T] = MetricPattern4(client, _p("6m", acc)) - self._6y: MetricPattern4[T] = MetricPattern4(client, _p("6y", acc)) - self._8y: MetricPattern4[T] = MetricPattern4(client, _p("8y", acc)) - + self._10y: MetricPattern4[T] = MetricPattern4(client, _p('10y', acc)) + self._1m: MetricPattern4[T] = MetricPattern4(client, _p('1m', acc)) + self._1w: MetricPattern4[T] = MetricPattern4(client, _p('1w', acc)) + self._1y: MetricPattern4[T] = MetricPattern4(client, _p('1y', acc)) + self._2y: MetricPattern4[T] = MetricPattern4(client, _p('2y', acc)) + self._3m: MetricPattern4[T] = MetricPattern4(client, _p('3m', acc)) + self._3y: MetricPattern4[T] = MetricPattern4(client, _p('3y', acc)) + self._4y: MetricPattern4[T] = MetricPattern4(client, _p('4y', acc)) + self._5y: MetricPattern4[T] = MetricPattern4(client, _p('5y', acc)) + self._6m: MetricPattern4[T] = MetricPattern4(client, _p('6m', acc)) + self._6y: MetricPattern4[T] = MetricPattern4(client, _p('6y', acc)) + self._8y: MetricPattern4[T] = MetricPattern4(client, _p('8y', acc)) class ClassDaysInLossPattern(Generic[T]): """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._2015: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2015_max_drawdown") - ) - self._2016: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2016_max_drawdown") - ) - self._2017: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2017_max_drawdown") - ) - self._2018: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2018_max_drawdown") - ) - self._2019: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2019_max_drawdown") - ) - self._2020: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2020_max_drawdown") - ) - self._2021: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2021_max_drawdown") - ) - self._2022: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2022_max_drawdown") - ) - self._2023: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2023_max_drawdown") - ) - self._2024: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2024_max_drawdown") - ) - self._2025: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2025_max_drawdown") - ) - self._2026: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2026_max_drawdown") - ) - + self._2015: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2015_days_in_profit')) + self._2016: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2016_days_in_profit')) + self._2017: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2017_days_in_profit')) + self._2018: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2018_days_in_profit')) + self._2019: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2019_days_in_profit')) + self._2020: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2020_days_in_profit')) + self._2021: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2021_days_in_profit')) + self._2022: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2022_days_in_profit')) + self._2023: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2023_days_in_profit')) + self._2024: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2024_days_in_profit')) + self._2025: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2025_days_in_profit')) + self._2026: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2026_days_in_profit')) class BitcoinPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.average: MetricPattern2[Bitcoin] = MetricPattern2( - client, _m(acc, "average") - ) + self.average: MetricPattern2[Bitcoin] = MetricPattern2(client, _m(acc, 'average')) self.base: MetricPattern11[Bitcoin] = MetricPattern11(client, acc) - self.cumulative: MetricPattern2[Bitcoin] = MetricPattern2( - client, _m(acc, "cumulative") - ) - self.max: MetricPattern2[Bitcoin] = MetricPattern2(client, _m(acc, "max")) - self.median: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, "median")) - self.min: MetricPattern2[Bitcoin] = MetricPattern2(client, _m(acc, "min")) - self.pct10: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, "pct10")) - self.pct25: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, "pct25")) - self.pct75: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, "pct75")) - self.pct90: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, "pct90")) - self.sum: MetricPattern2[Bitcoin] = MetricPattern2(client, _m(acc, "sum")) - + self.cumulative: MetricPattern2[Bitcoin] = MetricPattern2(client, _m(acc, 'cumulative')) + self.max: MetricPattern2[Bitcoin] = MetricPattern2(client, _m(acc, 'max')) + self.median: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, 'median')) + self.min: MetricPattern2[Bitcoin] = MetricPattern2(client, _m(acc, 'min')) + self.pct10: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, 'pct10')) + self.pct25: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, 'pct25')) + self.pct75: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, 'pct75')) + self.pct90: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, 'pct90')) + self.sum: MetricPattern2[Bitcoin] = MetricPattern2(client, _m(acc, 'sum')) class DollarsPattern(Generic[T]): """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.average: MetricPattern2[T] = MetricPattern2(client, _m(acc, "average")) + self.average: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'average')) self.base: MetricPattern11[T] = MetricPattern11(client, acc) - self.cumulative: MetricPattern1[T] = MetricPattern1( - client, _m(acc, "cumulative") - ) - self.max: MetricPattern2[T] = MetricPattern2(client, _m(acc, "max")) - self.median: MetricPattern6[T] = MetricPattern6(client, _m(acc, "median")) - self.min: MetricPattern2[T] = MetricPattern2(client, _m(acc, "min")) - self.pct10: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct10")) - self.pct25: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct25")) - self.pct75: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct75")) - self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct90")) - self.sum: MetricPattern2[T] = MetricPattern2(client, _m(acc, "sum")) - + self.cumulative: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'cumulative')) + self.max: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'max')) + self.median: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'median')) + self.min: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'min')) + self.pct10: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct10')) + self.pct25: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct25')) + self.pct75: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct75')) + self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct90')) + self.sum: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'sum')) class RelativePattern2: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "neg_unrealized_loss_rel_to_own_market_cap")) - ) - self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl") - ) - self.net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "net_unrealized_pnl_rel_to_own_market_cap")) - ) - self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl") - ) - self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_loss_rel_to_own_supply")) - ) - self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_profit_rel_to_own_supply")) - ) - self.unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_loss_rel_to_own_market_cap")) - ) - self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "unrealized_loss_rel_to_own_total_unrealized_pnl") - ) - self.unrealized_profit_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_profit_rel_to_own_market_cap")) - ) - self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "unrealized_profit_rel_to_own_total_unrealized_pnl") - ) - + self.neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_market_cap')) + self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_total_unrealized_pnl')) + self.net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_market_cap')) + self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_total_unrealized_pnl')) + self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_own_supply')) + self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_own_supply')) + self.unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_market_cap')) + self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_total_unrealized_pnl')) + self.unrealized_profit_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_market_cap')) + self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_total_unrealized_pnl')) class RelativePattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.neg_unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "neg_unrealized_loss_rel_to_market_cap")) - ) - self.net_unrealized_pnl_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "net_unrealized_pnl_rel_to_market_cap")) - ) - self.nupl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, "nupl")) - self.supply_in_loss_rel_to_circulating_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_loss_rel_to_circulating_supply")) - ) - self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_loss_rel_to_own_supply")) - ) - self.supply_in_profit_rel_to_circulating_supply: MetricPattern1[StoredF64] = ( - MetricPattern1( - client, _m(acc, "supply_in_profit_rel_to_circulating_supply") - ) - ) - self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_profit_rel_to_own_supply")) - ) - self.supply_rel_to_circulating_supply: MetricPattern4[StoredF64] = ( - MetricPattern4(client, _m(acc, "supply_rel_to_circulating_supply")) - ) - self.unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_loss_rel_to_market_cap")) - ) - self.unrealized_profit_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_profit_rel_to_market_cap")) - ) - + self.neg_unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_market_cap')) + self.net_unrealized_pnl_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap')) + self.nupl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'nupl')) + self.supply_in_loss_rel_to_circulating_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_circulating_supply')) + self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_own_supply')) + self.supply_in_profit_rel_to_circulating_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_circulating_supply')) + self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_own_supply')) + self.supply_rel_to_circulating_supply: MetricPattern4[StoredF64] = MetricPattern4(client, _m(acc, 'supply_rel_to_circulating_supply')) + self.unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_market_cap')) + self.unrealized_profit_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_market_cap')) class CountPattern2(Generic[T]): """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.average: MetricPattern1[T] = MetricPattern1(client, _m(acc, "average")) - self.cumulative: MetricPattern1[T] = MetricPattern1( - client, _m(acc, "cumulative") - ) - self.max: MetricPattern1[T] = MetricPattern1(client, _m(acc, "max")) - self.median: MetricPattern11[T] = MetricPattern11(client, _m(acc, "median")) - self.min: MetricPattern1[T] = MetricPattern1(client, _m(acc, "min")) - self.pct10: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct10")) - self.pct25: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct25")) - self.pct75: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct75")) - self.pct90: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct90")) - self.sum: MetricPattern1[T] = MetricPattern1(client, _m(acc, "sum")) - + self.average: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'average')) + self.cumulative: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'cumulative')) + self.max: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'max')) + self.median: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'median')) + self.min: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'min')) + self.pct10: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct10')) + self.pct25: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct25')) + self.pct75: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct75')) + self.pct90: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct90')) + self.sum: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'sum')) class AddrCountPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.all: MetricPattern1[StoredU64] = MetricPattern1(client, acc) - self.p2a: MetricPattern1[StoredU64] = MetricPattern1(client, _p("p2a", acc)) - self.p2pk33: MetricPattern1[StoredU64] = MetricPattern1( - client, _p("p2pk33", acc) - ) - self.p2pk65: MetricPattern1[StoredU64] = MetricPattern1( - client, _p("p2pk65", acc) - ) - self.p2pkh: MetricPattern1[StoredU64] = MetricPattern1(client, _p("p2pkh", acc)) - self.p2sh: MetricPattern1[StoredU64] = MetricPattern1(client, _p("p2sh", acc)) - self.p2tr: MetricPattern1[StoredU64] = MetricPattern1(client, _p("p2tr", acc)) - self.p2wpkh: MetricPattern1[StoredU64] = MetricPattern1( - client, _p("p2wpkh", acc) - ) - self.p2wsh: MetricPattern1[StoredU64] = MetricPattern1(client, _p("p2wsh", acc)) - + self.p2a: MetricPattern1[StoredU64] = MetricPattern1(client, _p('p2a', acc)) + self.p2pk33: MetricPattern1[StoredU64] = MetricPattern1(client, _p('p2pk33', acc)) + self.p2pk65: MetricPattern1[StoredU64] = MetricPattern1(client, _p('p2pk65', acc)) + self.p2pkh: MetricPattern1[StoredU64] = MetricPattern1(client, _p('p2pkh', acc)) + self.p2sh: MetricPattern1[StoredU64] = MetricPattern1(client, _p('p2sh', acc)) + self.p2tr: MetricPattern1[StoredU64] = MetricPattern1(client, _p('p2tr', acc)) + self.p2wpkh: MetricPattern1[StoredU64] = MetricPattern1(client, _p('p2wpkh', acc)) + self.p2wsh: MetricPattern1[StoredU64] = MetricPattern1(client, _p('p2wsh', acc)) class FeeRatePattern(Generic[T]): """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.average: MetricPattern1[T] = MetricPattern1(client, _m(acc, "average")) - self.max: MetricPattern1[T] = MetricPattern1(client, _m(acc, "max")) - self.median: MetricPattern11[T] = MetricPattern11(client, _m(acc, "median")) - self.min: MetricPattern1[T] = MetricPattern1(client, _m(acc, "min")) - self.pct10: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct10")) - self.pct25: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct25")) - self.pct75: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct75")) - self.pct90: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct90")) + self.average: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'average')) + self.max: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'max')) + self.median: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'median')) + self.min: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'min')) + self.pct10: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct10')) + self.pct25: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct25')) + self.pct75: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct75')) + self.pct90: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct90')) self.txindex: MetricPattern27[T] = MetricPattern27(client, acc) - class FullnessPattern(Generic[T]): """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.average: MetricPattern2[T] = MetricPattern2(client, _m(acc, "average")) + self.average: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'average')) self.base: MetricPattern11[T] = MetricPattern11(client, acc) - self.max: MetricPattern2[T] = MetricPattern2(client, _m(acc, "max")) - self.median: MetricPattern6[T] = MetricPattern6(client, _m(acc, "median")) - self.min: MetricPattern2[T] = MetricPattern2(client, _m(acc, "min")) - self.pct10: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct10")) - self.pct25: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct25")) - self.pct75: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct75")) - self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct90")) - + self.max: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'max')) + self.median: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'median')) + self.min: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'min')) + self.pct10: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct10')) + self.pct25: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct25')) + self.pct75: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct75')) + self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct90')) class _0satsPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.activity: ActivityPattern2 = ActivityPattern2(client, acc) - self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( - client, _m(acc, "addr_count") - ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1(client, _m(acc, 'addr_count')) self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) - self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, "utxo_count")) + self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count')) self.realized: RealizedPattern = RealizedPattern(client, acc) self.relative: RelativePattern = RelativePattern(client, acc) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) + self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) +class _100btcPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.activity: ActivityPattern2 = ActivityPattern2(client, acc) + self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) + self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count')) + self.realized: RealizedPattern = RealizedPattern(client, acc) + self.relative: RelativePattern = RelativePattern(client, acc) + self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) class _0satsPattern2: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.activity: ActivityPattern2 = ActivityPattern2(client, acc) self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) - self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, "utxo_count")) + self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count')) self.realized: RealizedPattern = RealizedPattern(client, acc) - self.relative: RelativePattern4 = RelativePattern4(client, _m(acc, "supply_in")) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) + self.relative: RelativePattern4 = RelativePattern4(client, _m(acc, 'supply_in')) + self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) +class _10yPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.activity: ActivityPattern2 = ActivityPattern2(client, acc) + self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) + self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count')) + self.realized: RealizedPattern4 = RealizedPattern4(client, acc) + self.relative: RelativePattern = RelativePattern(client, acc) + self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) + +class UnrealizedPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.neg_unrealized_loss: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss')) + self.net_unrealized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl')) + self.supply_in_loss: ActiveSupplyPattern = ActiveSupplyPattern(client, _m(acc, 'supply_in_loss')) + self.supply_in_profit: ActiveSupplyPattern = ActiveSupplyPattern(client, _m(acc, 'supply_in_profit')) + self.total_unrealized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'total_unrealized_pnl')) + self.unrealized_loss: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'unrealized_loss')) + self.unrealized_profit: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'unrealized_profit')) class PeriodCagrPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._10y: MetricPattern4[StoredF32] = MetricPattern4(client, _p("10y", acc)) - self._2y: MetricPattern4[StoredF32] = MetricPattern4(client, _p("2y", acc)) - self._3y: MetricPattern4[StoredF32] = MetricPattern4(client, _p("3y", acc)) - self._4y: MetricPattern4[StoredF32] = MetricPattern4(client, _p("4y", acc)) - self._5y: MetricPattern4[StoredF32] = MetricPattern4(client, _p("5y", acc)) - self._6y: MetricPattern4[StoredF32] = MetricPattern4(client, _p("6y", acc)) - self._8y: MetricPattern4[StoredF32] = MetricPattern4(client, _p("8y", acc)) - + self._10y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('10y', acc)) + self._2y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('2y', acc)) + self._3y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('3y', acc)) + self._4y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('4y', acc)) + self._5y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('5y', acc)) + self._6y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('6y', acc)) + self._8y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('8y', acc)) class _10yTo12yPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.activity: ActivityPattern2 = ActivityPattern2(client, acc) self.cost_basis: CostBasisPattern2 = CostBasisPattern2(client, acc) - self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, "utxo_count")) + self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count')) self.realized: RealizedPattern2 = RealizedPattern2(client, acc) self.relative: RelativePattern2 = RelativePattern2(client, acc) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) + self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) - -class _100btcPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.activity: ActivityPattern2 = ActivityPattern2(client, acc) - self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) - self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, "utxo_count")) - self.realized: RealizedPattern = RealizedPattern(client, acc) - self.relative: RelativePattern = RelativePattern(client, acc) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) - - -class _10yPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.activity: ActivityPattern2 = ActivityPattern2(client, acc) - self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) - self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, "utxo_count")) - self.realized: RealizedPattern4 = RealizedPattern4(client, acc) - self.relative: RelativePattern = RelativePattern(client, acc) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) - - -class UnrealizedPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.neg_unrealized_loss: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "neg_unrealized_loss") - ) - self.net_unrealized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "net_unrealized_pnl") - ) - self.supply_in_loss: ActiveSupplyPattern = ActiveSupplyPattern( - client, _m(acc, "supply_in_loss") - ) - self.supply_in_profit: ActiveSupplyPattern = ActiveSupplyPattern( - client, _m(acc, "supply_in_profit") - ) - self.total_unrealized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "total_unrealized_pnl") - ) - self.unrealized_loss: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "unrealized_loss") - ) - self.unrealized_profit: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "unrealized_profit") - ) - - class AllPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.balance_decreased: FullnessPattern[StoredU32] = FullnessPattern( - client, _m(acc, "balance_decreased") - ) - self.balance_increased: FullnessPattern[StoredU32] = FullnessPattern( - client, _m(acc, "balance_increased") - ) - self.both: FullnessPattern[StoredU32] = FullnessPattern(client, _m(acc, "both")) - self.reactivated: FullnessPattern[StoredU32] = FullnessPattern( - client, _m(acc, "reactivated") - ) - self.receiving: FullnessPattern[StoredU32] = FullnessPattern( - client, _m(acc, "receiving") - ) - self.sending: FullnessPattern[StoredU32] = FullnessPattern( - client, _m(acc, "sending") - ) - + self.balance_decreased: FullnessPattern[StoredU32] = FullnessPattern(client, _m(acc, 'balance_decreased')) + self.balance_increased: FullnessPattern[StoredU32] = FullnessPattern(client, _m(acc, 'balance_increased')) + self.both: FullnessPattern[StoredU32] = FullnessPattern(client, _m(acc, 'both')) + self.reactivated: FullnessPattern[StoredU32] = FullnessPattern(client, _m(acc, 'reactivated')) + self.receiving: FullnessPattern[StoredU32] = FullnessPattern(client, _m(acc, 'receiving')) + self.sending: FullnessPattern[StoredU32] = FullnessPattern(client, _m(acc, 'sending')) class ActivityPattern2: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.coinblocks_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern( - client, _m(acc, "coinblocks_destroyed") - ) - self.coindays_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern( - client, _m(acc, "coindays_destroyed") - ) - self.satblocks_destroyed: MetricPattern11[Sats] = MetricPattern11( - client, _m(acc, "satblocks_destroyed") - ) - self.satdays_destroyed: MetricPattern11[Sats] = MetricPattern11( - client, _m(acc, "satdays_destroyed") - ) - self.sent: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, _m(acc, "sent") - ) - + self.coinblocks_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern(client, _m(acc, 'coinblocks_destroyed')) + self.coindays_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern(client, _m(acc, 'coindays_destroyed')) + self.satblocks_destroyed: MetricPattern11[Sats] = MetricPattern11(client, _m(acc, 'satblocks_destroyed')) + self.satdays_destroyed: MetricPattern11[Sats] = MetricPattern11(client, _m(acc, 'satdays_destroyed')) + self.sent: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, _m(acc, 'sent')) class SplitPattern2(Generic[T]): """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.close: MetricPattern1[T] = MetricPattern1(client, _m(acc, "close")) - self.high: MetricPattern1[T] = MetricPattern1(client, _m(acc, "high")) - self.low: MetricPattern1[T] = MetricPattern1(client, _m(acc, "low")) - self.open: MetricPattern1[T] = MetricPattern1(client, _m(acc, "open")) - - -class CoinbasePattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.bitcoin: BitcoinPattern = BitcoinPattern(client, _m(acc, "btc")) - self.dollars: DollarsPattern[Dollars] = DollarsPattern(client, _m(acc, "usd")) - self.sats: DollarsPattern[Sats] = DollarsPattern(client, acc) - - -class CostBasisPattern2: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.max: ActivePricePattern = ActivePricePattern( - client, _m(acc, "max_cost_basis") - ) - self.min: ActivePricePattern = ActivePricePattern( - client, _m(acc, "min_cost_basis") - ) - self.percentiles: PercentilesPattern = PercentilesPattern( - client, _m(acc, "cost_basis") - ) - - -class CoinbasePattern2: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.bitcoin: BlockCountPattern[Bitcoin] = BlockCountPattern( - client, _m(acc, "btc") - ) - self.dollars: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "usd") - ) - self.sats: BlockCountPattern[Sats] = BlockCountPattern(client, acc) - - -class SegwitAdoptionPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.base: MetricPattern11[StoredF32] = MetricPattern11(client, acc) - self.cumulative: MetricPattern2[StoredF32] = MetricPattern2( - client, _m(acc, "cumulative") - ) - self.sum: MetricPattern2[StoredF32] = MetricPattern2(client, _m(acc, "sum")) - + self.close: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'close')) + self.high: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'high')) + self.low: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'low')) + self.open: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'open')) class UnclaimedRewardsPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.bitcoin: BitcoinPattern2[Bitcoin] = BitcoinPattern2(client, _m(acc, "btc")) - self.dollars: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "usd") - ) + self.bitcoin: BitcoinPattern2[Bitcoin] = BitcoinPattern2(client, _m(acc, 'btc')) + self.dollars: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'usd')) self.sats: BlockCountPattern[Sats] = BlockCountPattern(client, acc) - -class ActiveSupplyPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.bitcoin: MetricPattern1[Bitcoin] = MetricPattern1(client, _m(acc, "btc")) - self.dollars: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, "usd")) - self.sats: MetricPattern1[Sats] = MetricPattern1(client, acc) - - class _2015Pattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.bitcoin: MetricPattern4[Bitcoin] = MetricPattern4(client, _m(acc, "btc")) - self.dollars: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "usd")) + self.bitcoin: MetricPattern4[Bitcoin] = MetricPattern4(client, _m(acc, 'btc')) + self.dollars: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'usd')) self.sats: MetricPattern4[Sats] = MetricPattern4(client, acc) - -class ActivePricePattern: +class ActiveSupplyPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.dollars: MetricPattern1[Dollars] = MetricPattern1(client, acc) - self.sats: MetricPattern1[SatsFract] = MetricPattern1(client, _m(acc, "sats")) + self.bitcoin: MetricPattern1[Bitcoin] = MetricPattern1(client, _m(acc, 'btc')) + self.dollars: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'usd')) + self.sats: MetricPattern1[Sats] = MetricPattern1(client, acc) - -class CostBasisPattern: +class CoinbasePattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.max: ActivePricePattern = ActivePricePattern( - client, _m(acc, "max_cost_basis") - ) - self.min: ActivePricePattern = ActivePricePattern( - client, _m(acc, "min_cost_basis") - ) + self.bitcoin: BitcoinPattern = BitcoinPattern(client, _m(acc, 'btc')) + self.dollars: DollarsPattern[Dollars] = DollarsPattern(client, _m(acc, 'usd')) + self.sats: DollarsPattern[Sats] = DollarsPattern(client, acc) - -class _0sdUsdPattern: +class SegwitAdoptionPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.dollars: MetricPattern4[Dollars] = MetricPattern4(client, acc) - self.sats: MetricPattern4[SatsFract] = MetricPattern4(client, _m(acc, "sats")) + self.base: MetricPattern11[StoredF32] = MetricPattern11(client, acc) + self.cumulative: MetricPattern2[StoredF32] = MetricPattern2(client, _m(acc, 'cumulative')) + self.sum: MetricPattern2[StoredF32] = MetricPattern2(client, _m(acc, 'sum')) - -class _1dReturns1mSdPattern: +class CostBasisPattern2: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "sd")) - self.sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "sma")) + self.max: ActivePricePattern = ActivePricePattern(client, _m(acc, 'max_cost_basis')) + self.min: ActivePricePattern = ActivePricePattern(client, _m(acc, 'min_cost_basis')) + self.percentiles: PercentilesPattern = PercentilesPattern(client, _m(acc, 'cost_basis')) +class CoinbasePattern2: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.bitcoin: BlockCountPattern[Bitcoin] = BlockCountPattern(client, _m(acc, 'btc')) + self.dollars: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'usd')) + self.sats: BlockCountPattern[Sats] = BlockCountPattern(client, acc) class RelativePattern4: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "loss_rel_to_own_supply")) - ) - self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "profit_rel_to_own_supply")) - ) + self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'loss_rel_to_own_supply')) + self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'profit_rel_to_own_supply')) +class ActivePricePattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.dollars: MetricPattern1[Dollars] = MetricPattern1(client, acc) + self.sats: MetricPattern1[SatsFract] = MetricPattern1(client, _m(acc, 'sats')) + +class _1dReturns1mSdPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sd')) + self.sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sma')) class SupplyPattern2: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.halved: ActiveSupplyPattern = ActiveSupplyPattern( - client, _m(acc, "halved") - ) + self.halved: ActiveSupplyPattern = ActiveSupplyPattern(client, _m(acc, 'halved')) self.total: ActiveSupplyPattern = ActiveSupplyPattern(client, acc) +class _0sdUsdPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.dollars: MetricPattern4[Dollars] = MetricPattern4(client, acc) + self.sats: MetricPattern4[SatsFract] = MetricPattern4(client, _m(acc, 'sats')) + +class CostBasisPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.max: ActivePricePattern = ActivePricePattern(client, _m(acc, 'max_cost_basis')) + self.min: ActivePricePattern = ActivePricePattern(client, _m(acc, 'min_cost_basis')) class BlockCountPattern(Generic[T]): """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.cumulative: MetricPattern1[T] = MetricPattern1( - client, _m(acc, "cumulative") - ) + self.cumulative: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'cumulative')) self.sum: MetricPattern1[T] = MetricPattern1(client, acc) - -class SatsPattern(Generic[T]): - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.ohlc: MetricPattern1[T] = MetricPattern1(client, _m(acc, "ohlc")) - self.split: SplitPattern2[T] = SplitPattern2(client, acc) - - class BitcoinPattern2(Generic[T]): """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.cumulative: MetricPattern2[T] = MetricPattern2( - client, _m(acc, "cumulative") - ) + self.cumulative: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'cumulative')) self.sum: MetricPattern1[T] = MetricPattern1(client, acc) +class SatsPattern(Generic[T]): + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.ohlc: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'ohlc_sats')) + self.split: SplitPattern2[T] = SplitPattern2(client, _m(acc, 'sats')) class OutputsPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.utxo_count: MetricPattern1[StoredU64] = MetricPattern1(client, acc) - class RealizedPriceExtraPattern: """Pattern struct for repeated tree structure.""" - + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, acc) - # Metrics tree classes - class MetricsTree_Addresses: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.first_p2aaddressindex: MetricPattern11[P2AAddressIndex] = MetricPattern11( - client, "first_p2aaddressindex" - ) - self.first_p2pk33addressindex: MetricPattern11[P2PK33AddressIndex] = ( - MetricPattern11(client, "first_p2pk33addressindex") - ) - self.first_p2pk65addressindex: MetricPattern11[P2PK65AddressIndex] = ( - MetricPattern11(client, "first_p2pk65addressindex") - ) - self.first_p2pkhaddressindex: MetricPattern11[P2PKHAddressIndex] = ( - MetricPattern11(client, "first_p2pkhaddressindex") - ) - self.first_p2shaddressindex: MetricPattern11[P2SHAddressIndex] = ( - MetricPattern11(client, "first_p2shaddressindex") - ) - self.first_p2traddressindex: MetricPattern11[P2TRAddressIndex] = ( - MetricPattern11(client, "first_p2traddressindex") - ) - self.first_p2wpkhaddressindex: MetricPattern11[P2WPKHAddressIndex] = ( - MetricPattern11(client, "first_p2wpkhaddressindex") - ) - self.first_p2wshaddressindex: MetricPattern11[P2WSHAddressIndex] = ( - MetricPattern11(client, "first_p2wshaddressindex") - ) - self.p2abytes: MetricPattern16[P2ABytes] = MetricPattern16(client, "p2abytes") - self.p2pk33bytes: MetricPattern18[P2PK33Bytes] = MetricPattern18( - client, "p2pk33bytes" - ) - self.p2pk65bytes: MetricPattern19[P2PK65Bytes] = MetricPattern19( - client, "p2pk65bytes" - ) - self.p2pkhbytes: MetricPattern20[P2PKHBytes] = MetricPattern20( - client, "p2pkhbytes" - ) - self.p2shbytes: MetricPattern21[P2SHBytes] = MetricPattern21( - client, "p2shbytes" - ) - self.p2trbytes: MetricPattern22[P2TRBytes] = MetricPattern22( - client, "p2trbytes" - ) - self.p2wpkhbytes: MetricPattern23[P2WPKHBytes] = MetricPattern23( - client, "p2wpkhbytes" - ) - self.p2wshbytes: MetricPattern24[P2WSHBytes] = MetricPattern24( - client, "p2wshbytes" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.first_p2aaddressindex: MetricPattern11[P2AAddressIndex] = MetricPattern11(client, 'first_p2aaddressindex') + self.first_p2pk33addressindex: MetricPattern11[P2PK33AddressIndex] = MetricPattern11(client, 'first_p2pk33addressindex') + self.first_p2pk65addressindex: MetricPattern11[P2PK65AddressIndex] = MetricPattern11(client, 'first_p2pk65addressindex') + self.first_p2pkhaddressindex: MetricPattern11[P2PKHAddressIndex] = MetricPattern11(client, 'first_p2pkhaddressindex') + self.first_p2shaddressindex: MetricPattern11[P2SHAddressIndex] = MetricPattern11(client, 'first_p2shaddressindex') + self.first_p2traddressindex: MetricPattern11[P2TRAddressIndex] = MetricPattern11(client, 'first_p2traddressindex') + self.first_p2wpkhaddressindex: MetricPattern11[P2WPKHAddressIndex] = MetricPattern11(client, 'first_p2wpkhaddressindex') + self.first_p2wshaddressindex: MetricPattern11[P2WSHAddressIndex] = MetricPattern11(client, 'first_p2wshaddressindex') + self.p2abytes: MetricPattern16[P2ABytes] = MetricPattern16(client, 'p2abytes') + self.p2pk33bytes: MetricPattern18[P2PK33Bytes] = MetricPattern18(client, 'p2pk33bytes') + self.p2pk65bytes: MetricPattern19[P2PK65Bytes] = MetricPattern19(client, 'p2pk65bytes') + self.p2pkhbytes: MetricPattern20[P2PKHBytes] = MetricPattern20(client, 'p2pkhbytes') + self.p2shbytes: MetricPattern21[P2SHBytes] = MetricPattern21(client, 'p2shbytes') + self.p2trbytes: MetricPattern22[P2TRBytes] = MetricPattern22(client, 'p2trbytes') + self.p2wpkhbytes: MetricPattern23[P2WPKHBytes] = MetricPattern23(client, 'p2wpkhbytes') + self.p2wshbytes: MetricPattern24[P2WSHBytes] = MetricPattern24(client, 'p2wshbytes') class MetricsTree_Blocks_Count: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._1m_block_count: MetricPattern1[StoredU32] = MetricPattern1( - client, "1m_block_count" - ) - self._1m_start: MetricPattern11[Height] = MetricPattern11(client, "1m_start") - self._1w_block_count: MetricPattern1[StoredU32] = MetricPattern1( - client, "1w_block_count" - ) - self._1w_start: MetricPattern11[Height] = MetricPattern11(client, "1w_start") - self._1y_block_count: MetricPattern1[StoredU32] = MetricPattern1( - client, "1y_block_count" - ) - self._1y_start: MetricPattern11[Height] = MetricPattern11(client, "1y_start") - self._24h_block_count: MetricPattern1[StoredU32] = MetricPattern1( - client, "24h_block_count" - ) - self._24h_start: MetricPattern11[Height] = MetricPattern11(client, "24h_start") - self.block_count: BlockCountPattern[StoredU32] = BlockCountPattern( - client, "block_count" - ) - self.block_count_target: MetricPattern4[StoredU64] = MetricPattern4( - client, "block_count_target" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._1m_block_count: MetricPattern1[StoredU32] = MetricPattern1(client, '1m_block_count') + self._1m_start: MetricPattern11[Height] = MetricPattern11(client, '1m_start') + self._1w_block_count: MetricPattern1[StoredU32] = MetricPattern1(client, '1w_block_count') + self._1w_start: MetricPattern11[Height] = MetricPattern11(client, '1w_start') + self._1y_block_count: MetricPattern1[StoredU32] = MetricPattern1(client, '1y_block_count') + self._1y_start: MetricPattern11[Height] = MetricPattern11(client, '1y_start') + self._24h_block_count: MetricPattern1[StoredU32] = MetricPattern1(client, '24h_block_count') + self._24h_start: MetricPattern11[Height] = MetricPattern11(client, '24h_start') + self.block_count: BlockCountPattern[StoredU32] = BlockCountPattern(client, 'block_count') + self.block_count_target: MetricPattern4[StoredU64] = MetricPattern4(client, 'block_count_target') class MetricsTree_Blocks_Difficulty: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.adjustment: MetricPattern1[StoredF32] = MetricPattern1( - client, "difficulty_adjustment" - ) - self.as_hash: MetricPattern1[StoredF32] = MetricPattern1( - client, "difficulty_as_hash" - ) - self.blocks_before_next_adjustment: MetricPattern1[StoredU32] = MetricPattern1( - client, "blocks_before_next_difficulty_adjustment" - ) - self.days_before_next_adjustment: MetricPattern1[StoredF32] = MetricPattern1( - client, "days_before_next_difficulty_adjustment" - ) - self.epoch: MetricPattern4[DifficultyEpoch] = MetricPattern4( - client, "difficultyepoch" - ) - self.raw: MetricPattern1[StoredF64] = MetricPattern1(client, "difficulty") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.adjustment: MetricPattern1[StoredF32] = MetricPattern1(client, 'difficulty_adjustment') + self.as_hash: MetricPattern1[StoredF32] = MetricPattern1(client, 'difficulty_as_hash') + self.blocks_before_next_adjustment: MetricPattern1[StoredU32] = MetricPattern1(client, 'blocks_before_next_difficulty_adjustment') + self.days_before_next_adjustment: MetricPattern1[StoredF32] = MetricPattern1(client, 'days_before_next_difficulty_adjustment') + self.epoch: MetricPattern4[DifficultyEpoch] = MetricPattern4(client, 'difficultyepoch') + self.raw: MetricPattern1[StoredF64] = MetricPattern1(client, 'difficulty') class MetricsTree_Blocks_Halving: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.blocks_before_next_halving: MetricPattern1[StoredU32] = MetricPattern1( - client, "blocks_before_next_halving" - ) - self.days_before_next_halving: MetricPattern1[StoredF32] = MetricPattern1( - client, "days_before_next_halving" - ) - self.epoch: MetricPattern4[HalvingEpoch] = MetricPattern4( - client, "halvingepoch" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.blocks_before_next_halving: MetricPattern1[StoredU32] = MetricPattern1(client, 'blocks_before_next_halving') + self.days_before_next_halving: MetricPattern1[StoredF32] = MetricPattern1(client, 'days_before_next_halving') + self.epoch: MetricPattern4[HalvingEpoch] = MetricPattern4(client, 'halvingepoch') class MetricsTree_Blocks_Mining: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.hash_price_phs: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_price_phs" - ) - self.hash_price_phs_min: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_price_phs_min" - ) - self.hash_price_rebound: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_price_rebound" - ) - self.hash_price_ths: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_price_ths" - ) - self.hash_price_ths_min: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_price_ths_min" - ) - self.hash_rate: MetricPattern1[StoredF64] = MetricPattern1(client, "hash_rate") - self.hash_rate_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, "hash_rate_1m_sma" - ) - self.hash_rate_1w_sma: MetricPattern4[StoredF64] = MetricPattern4( - client, "hash_rate_1w_sma" - ) - self.hash_rate_1y_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, "hash_rate_1y_sma" - ) - self.hash_rate_2m_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, "hash_rate_2m_sma" - ) - self.hash_value_phs: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_value_phs" - ) - self.hash_value_phs_min: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_value_phs_min" - ) - self.hash_value_rebound: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_value_rebound" - ) - self.hash_value_ths: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_value_ths" - ) - self.hash_value_ths_min: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_value_ths_min" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.hash_price_phs: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_price_phs') + self.hash_price_phs_min: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_price_phs_min') + self.hash_price_rebound: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_price_rebound') + self.hash_price_ths: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_price_ths') + self.hash_price_ths_min: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_price_ths_min') + self.hash_rate: MetricPattern1[StoredF64] = MetricPattern1(client, 'hash_rate') + self.hash_rate_1m_sma: MetricPattern4[StoredF32] = MetricPattern4(client, 'hash_rate_1m_sma') + self.hash_rate_1w_sma: MetricPattern4[StoredF64] = MetricPattern4(client, 'hash_rate_1w_sma') + self.hash_rate_1y_sma: MetricPattern4[StoredF32] = MetricPattern4(client, 'hash_rate_1y_sma') + self.hash_rate_2m_sma: MetricPattern4[StoredF32] = MetricPattern4(client, 'hash_rate_2m_sma') + self.hash_value_phs: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_value_phs') + self.hash_value_phs_min: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_value_phs_min') + self.hash_value_rebound: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_value_rebound') + self.hash_value_ths: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_value_ths') + self.hash_value_ths_min: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_value_ths_min') class MetricsTree_Blocks_Rewards_24hCoinbaseSum: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.bitcoin: MetricPattern11[Bitcoin] = MetricPattern11( - client, "24h_coinbase_sum_btc" - ) - self.dollars: MetricPattern11[Dollars] = MetricPattern11( - client, "24h_coinbase_sum_usd" - ) - self.sats: MetricPattern11[Sats] = MetricPattern11(client, "24h_coinbase_sum") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.bitcoin: MetricPattern11[Bitcoin] = MetricPattern11(client, '24h_coinbase_sum_btc') + self.dollars: MetricPattern11[Dollars] = MetricPattern11(client, '24h_coinbase_sum_usd') + self.sats: MetricPattern11[Sats] = MetricPattern11(client, '24h_coinbase_sum') class MetricsTree_Blocks_Rewards: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._24h_coinbase_sum: MetricsTree_Blocks_Rewards_24hCoinbaseSum = ( - MetricsTree_Blocks_Rewards_24hCoinbaseSum(client) - ) - self.coinbase: CoinbasePattern = CoinbasePattern(client, "coinbase") - self.fee_dominance: MetricPattern6[StoredF32] = MetricPattern6( - client, "fee_dominance" - ) - self.subsidy: CoinbasePattern = CoinbasePattern(client, "subsidy") - self.subsidy_dominance: MetricPattern6[StoredF32] = MetricPattern6( - client, "subsidy_dominance" - ) - self.subsidy_usd_1y_sma: MetricPattern4[Dollars] = MetricPattern4( - client, "subsidy_usd_1y_sma" - ) - self.unclaimed_rewards: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, "unclaimed_rewards" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._24h_coinbase_sum: MetricsTree_Blocks_Rewards_24hCoinbaseSum = MetricsTree_Blocks_Rewards_24hCoinbaseSum(client) + self.coinbase: CoinbasePattern = CoinbasePattern(client, 'coinbase') + self.fee_dominance: MetricPattern6[StoredF32] = MetricPattern6(client, 'fee_dominance') + self.subsidy: CoinbasePattern = CoinbasePattern(client, 'subsidy') + self.subsidy_dominance: MetricPattern6[StoredF32] = MetricPattern6(client, 'subsidy_dominance') + self.subsidy_usd_1y_sma: MetricPattern4[Dollars] = MetricPattern4(client, 'subsidy_usd_1y_sma') + self.unclaimed_rewards: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, 'unclaimed_rewards') class MetricsTree_Blocks_Size: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.average: MetricPattern2[StoredU64] = MetricPattern2( - client, "block_size_average" - ) - self.cumulative: MetricPattern1[StoredU64] = MetricPattern1( - client, "block_size_cumulative" - ) - self.max: MetricPattern2[StoredU64] = MetricPattern2(client, "block_size_max") - self.median: MetricPattern6[StoredU64] = MetricPattern6( - client, "block_size_median" - ) - self.min: MetricPattern2[StoredU64] = MetricPattern2(client, "block_size_min") - self.pct10: MetricPattern6[StoredU64] = MetricPattern6( - client, "block_size_pct10" - ) - self.pct25: MetricPattern6[StoredU64] = MetricPattern6( - client, "block_size_pct25" - ) - self.pct75: MetricPattern6[StoredU64] = MetricPattern6( - client, "block_size_pct75" - ) - self.pct90: MetricPattern6[StoredU64] = MetricPattern6( - client, "block_size_pct90" - ) - self.sum: MetricPattern2[StoredU64] = MetricPattern2(client, "block_size_sum") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.average: MetricPattern2[StoredU64] = MetricPattern2(client, 'block_size_average') + self.cumulative: MetricPattern1[StoredU64] = MetricPattern1(client, 'block_size_cumulative') + self.max: MetricPattern2[StoredU64] = MetricPattern2(client, 'block_size_max') + self.median: MetricPattern6[StoredU64] = MetricPattern6(client, 'block_size_median') + self.min: MetricPattern2[StoredU64] = MetricPattern2(client, 'block_size_min') + self.pct10: MetricPattern6[StoredU64] = MetricPattern6(client, 'block_size_pct10') + self.pct25: MetricPattern6[StoredU64] = MetricPattern6(client, 'block_size_pct25') + self.pct75: MetricPattern6[StoredU64] = MetricPattern6(client, 'block_size_pct75') + self.pct90: MetricPattern6[StoredU64] = MetricPattern6(client, 'block_size_pct90') + self.sum: MetricPattern2[StoredU64] = MetricPattern2(client, 'block_size_sum') class MetricsTree_Blocks_Time: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.date: MetricPattern11[Date] = MetricPattern11(client, "date") - self.timestamp: MetricPattern1[Timestamp] = MetricPattern1(client, "timestamp") - self.timestamp_monotonic: MetricPattern11[Timestamp] = MetricPattern11( - client, "timestamp_monotonic" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.date: MetricPattern11[Date] = MetricPattern11(client, 'date') + self.timestamp: MetricPattern1[Timestamp] = MetricPattern1(client, 'timestamp') + self.timestamp_monotonic: MetricPattern11[Timestamp] = MetricPattern11(client, 'timestamp_monotonic') class MetricsTree_Blocks: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.blockhash: MetricPattern11[BlockHash] = MetricPattern11( - client, "blockhash" - ) + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.blockhash: MetricPattern11[BlockHash] = MetricPattern11(client, 'blockhash') self.count: MetricsTree_Blocks_Count = MetricsTree_Blocks_Count(client) - self.difficulty: MetricsTree_Blocks_Difficulty = MetricsTree_Blocks_Difficulty( - client - ) - self.fullness: FullnessPattern[StoredF32] = FullnessPattern( - client, "block_fullness" - ) + self.difficulty: MetricsTree_Blocks_Difficulty = MetricsTree_Blocks_Difficulty(client) + self.fullness: FullnessPattern[StoredF32] = FullnessPattern(client, 'block_fullness') self.halving: MetricsTree_Blocks_Halving = MetricsTree_Blocks_Halving(client) - self.interval: FullnessPattern[Timestamp] = FullnessPattern( - client, "block_interval" - ) + self.interval: FullnessPattern[Timestamp] = FullnessPattern(client, 'block_interval') self.mining: MetricsTree_Blocks_Mining = MetricsTree_Blocks_Mining(client) self.rewards: MetricsTree_Blocks_Rewards = MetricsTree_Blocks_Rewards(client) self.size: MetricsTree_Blocks_Size = MetricsTree_Blocks_Size(client) self.time: MetricsTree_Blocks_Time = MetricsTree_Blocks_Time(client) - self.total_size: MetricPattern11[StoredU64] = MetricPattern11( - client, "total_size" - ) - self.vbytes: DollarsPattern[StoredU64] = DollarsPattern(client, "block_vbytes") - self.weight: DollarsPattern[Weight] = DollarsPattern(client, "block_weight") - + self.total_size: MetricPattern11[StoredU64] = MetricPattern11(client, 'total_size') + self.vbytes: DollarsPattern[StoredU64] = DollarsPattern(client, 'block_vbytes') + self.weight: DollarsPattern[Weight] = DollarsPattern(client, 'block_weight') class MetricsTree_Cointime_Activity: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.activity_to_vaultedness_ratio: MetricPattern1[StoredF64] = MetricPattern1( - client, "activity_to_vaultedness_ratio" - ) - self.coinblocks_created: BlockCountPattern[StoredF64] = BlockCountPattern( - client, "coinblocks_created" - ) - self.coinblocks_stored: BlockCountPattern[StoredF64] = BlockCountPattern( - client, "coinblocks_stored" - ) - self.liveliness: MetricPattern1[StoredF64] = MetricPattern1( - client, "liveliness" - ) - self.vaultedness: MetricPattern1[StoredF64] = MetricPattern1( - client, "vaultedness" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.activity_to_vaultedness_ratio: MetricPattern1[StoredF64] = MetricPattern1(client, 'activity_to_vaultedness_ratio') + self.coinblocks_created: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'coinblocks_created') + self.coinblocks_stored: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'coinblocks_stored') + self.liveliness: MetricPattern1[StoredF64] = MetricPattern1(client, 'liveliness') + self.vaultedness: MetricPattern1[StoredF64] = MetricPattern1(client, 'vaultedness') class MetricsTree_Cointime_Adjusted: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.cointime_adj_inflation_rate: MetricPattern4[StoredF32] = MetricPattern4( - client, "cointime_adj_inflation_rate" - ) - self.cointime_adj_tx_btc_velocity: MetricPattern4[StoredF64] = MetricPattern4( - client, "cointime_adj_tx_btc_velocity" - ) - self.cointime_adj_tx_usd_velocity: MetricPattern4[StoredF64] = MetricPattern4( - client, "cointime_adj_tx_usd_velocity" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.cointime_adj_inflation_rate: MetricPattern4[StoredF32] = MetricPattern4(client, 'cointime_adj_inflation_rate') + self.cointime_adj_tx_btc_velocity: MetricPattern4[StoredF64] = MetricPattern4(client, 'cointime_adj_tx_btc_velocity') + self.cointime_adj_tx_usd_velocity: MetricPattern4[StoredF64] = MetricPattern4(client, 'cointime_adj_tx_usd_velocity') class MetricsTree_Cointime_Cap: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.active_cap: MetricPattern1[Dollars] = MetricPattern1(client, "active_cap") - self.cointime_cap: MetricPattern1[Dollars] = MetricPattern1( - client, "cointime_cap" - ) - self.investor_cap: MetricPattern1[Dollars] = MetricPattern1( - client, "investor_cap" - ) - self.thermo_cap: MetricPattern1[Dollars] = MetricPattern1(client, "thermo_cap") - self.vaulted_cap: MetricPattern1[Dollars] = MetricPattern1( - client, "vaulted_cap" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.active_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'active_cap') + self.cointime_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'cointime_cap') + self.investor_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'investor_cap') + self.thermo_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'thermo_cap') + self.vaulted_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'vaulted_cap') class MetricsTree_Cointime_Pricing: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.active_price: ActivePricePattern = ActivePricePattern( - client, "active_price" - ) - self.active_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, "active_price_ratio" - ) - self.cointime_price: ActivePricePattern = ActivePricePattern( - client, "cointime_price" - ) - self.cointime_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, "cointime_price_ratio" - ) - self.true_market_mean: ActivePricePattern = ActivePricePattern( - client, "true_market_mean" - ) - self.true_market_mean_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, "true_market_mean_ratio" - ) - self.vaulted_price: ActivePricePattern = ActivePricePattern( - client, "vaulted_price" - ) - self.vaulted_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, "vaulted_price_ratio" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.active_price: ActivePricePattern = ActivePricePattern(client, 'active_price') + self.active_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern(client, 'active_price_ratio') + self.cointime_price: ActivePricePattern = ActivePricePattern(client, 'cointime_price') + self.cointime_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern(client, 'cointime_price_ratio') + self.true_market_mean: ActivePricePattern = ActivePricePattern(client, 'true_market_mean') + self.true_market_mean_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern(client, 'true_market_mean_ratio') + self.vaulted_price: ActivePricePattern = ActivePricePattern(client, 'vaulted_price') + self.vaulted_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern(client, 'vaulted_price_ratio') class MetricsTree_Cointime_ReserveRisk: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.hodl_bank: MetricPattern6[StoredF64] = MetricPattern6(client, "hodl_bank") - self.reserve_risk: MetricPattern4[StoredF64] = MetricPattern4( - client, "reserve_risk" - ) - self.vocdd_365d_sma: MetricPattern6[StoredF64] = MetricPattern6( - client, "vocdd_365d_sma" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.hodl_bank: MetricPattern6[StoredF64] = MetricPattern6(client, 'hodl_bank') + self.reserve_risk: MetricPattern4[StoredF64] = MetricPattern4(client, 'reserve_risk') + self.vocdd_365d_sma: MetricPattern6[StoredF64] = MetricPattern6(client, 'vocdd_365d_sma') class MetricsTree_Cointime_Supply: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.active_supply: ActiveSupplyPattern = ActiveSupplyPattern( - client, "active_supply" - ) - self.vaulted_supply: ActiveSupplyPattern = ActiveSupplyPattern( - client, "vaulted_supply" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.active_supply: ActiveSupplyPattern = ActiveSupplyPattern(client, 'active_supply') + self.vaulted_supply: ActiveSupplyPattern = ActiveSupplyPattern(client, 'vaulted_supply') class MetricsTree_Cointime_Value: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.cointime_value_created: BlockCountPattern[StoredF64] = BlockCountPattern( - client, "cointime_value_created" - ) - self.cointime_value_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern( - client, "cointime_value_destroyed" - ) - self.cointime_value_stored: BlockCountPattern[StoredF64] = BlockCountPattern( - client, "cointime_value_stored" - ) - self.vocdd: BlockCountPattern[StoredF64] = BlockCountPattern(client, "vocdd") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.cointime_value_created: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'cointime_value_created') + self.cointime_value_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'cointime_value_destroyed') + self.cointime_value_stored: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'cointime_value_stored') + self.vocdd: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'vocdd') class MetricsTree_Cointime: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.activity: MetricsTree_Cointime_Activity = MetricsTree_Cointime_Activity( - client - ) - self.adjusted: MetricsTree_Cointime_Adjusted = MetricsTree_Cointime_Adjusted( - client - ) + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.activity: MetricsTree_Cointime_Activity = MetricsTree_Cointime_Activity(client) + self.adjusted: MetricsTree_Cointime_Adjusted = MetricsTree_Cointime_Adjusted(client) self.cap: MetricsTree_Cointime_Cap = MetricsTree_Cointime_Cap(client) - self.pricing: MetricsTree_Cointime_Pricing = MetricsTree_Cointime_Pricing( - client - ) - self.reserve_risk: MetricsTree_Cointime_ReserveRisk = ( - MetricsTree_Cointime_ReserveRisk(client) - ) + self.pricing: MetricsTree_Cointime_Pricing = MetricsTree_Cointime_Pricing(client) + self.reserve_risk: MetricsTree_Cointime_ReserveRisk = MetricsTree_Cointime_ReserveRisk(client) self.supply: MetricsTree_Cointime_Supply = MetricsTree_Cointime_Supply(client) self.value: MetricsTree_Cointime_Value = MetricsTree_Cointime_Value(client) - class MetricsTree_Constants: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.constant_0: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_0" - ) - self.constant_1: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_1" - ) - self.constant_100: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_100" - ) - self.constant_2: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_2" - ) - self.constant_20: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_20" - ) - self.constant_3: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_3" - ) - self.constant_30: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_30" - ) - self.constant_38_2: MetricPattern1[StoredF32] = MetricPattern1( - client, "constant_38_2" - ) - self.constant_4: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_4" - ) - self.constant_50: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_50" - ) - self.constant_600: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_600" - ) - self.constant_61_8: MetricPattern1[StoredF32] = MetricPattern1( - client, "constant_61_8" - ) - self.constant_70: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_70" - ) - self.constant_80: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_80" - ) - self.constant_minus_1: MetricPattern1[StoredI8] = MetricPattern1( - client, "constant_minus_1" - ) - self.constant_minus_2: MetricPattern1[StoredI8] = MetricPattern1( - client, "constant_minus_2" - ) - self.constant_minus_3: MetricPattern1[StoredI8] = MetricPattern1( - client, "constant_minus_3" - ) - self.constant_minus_4: MetricPattern1[StoredI8] = MetricPattern1( - client, "constant_minus_4" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.constant_0: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_0') + self.constant_1: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_1') + self.constant_100: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_100') + self.constant_2: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_2') + self.constant_20: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_20') + self.constant_3: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_3') + self.constant_30: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_30') + self.constant_38_2: MetricPattern1[StoredF32] = MetricPattern1(client, 'constant_38_2') + self.constant_4: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_4') + self.constant_50: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_50') + self.constant_600: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_600') + self.constant_61_8: MetricPattern1[StoredF32] = MetricPattern1(client, 'constant_61_8') + self.constant_70: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_70') + self.constant_80: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_80') + self.constant_minus_1: MetricPattern1[StoredI8] = MetricPattern1(client, 'constant_minus_1') + self.constant_minus_2: MetricPattern1[StoredI8] = MetricPattern1(client, 'constant_minus_2') + self.constant_minus_3: MetricPattern1[StoredI8] = MetricPattern1(client, 'constant_minus_3') + self.constant_minus_4: MetricPattern1[StoredI8] = MetricPattern1(client, 'constant_minus_4') class MetricsTree_Distribution_AddressActivity: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.all: AllPattern = AllPattern(client, "address_activity") - self.p2a: AllPattern = AllPattern(client, "p2a_address_activity") - self.p2pk33: AllPattern = AllPattern(client, "p2pk33_address_activity") - self.p2pk65: AllPattern = AllPattern(client, "p2pk65_address_activity") - self.p2pkh: AllPattern = AllPattern(client, "p2pkh_address_activity") - self.p2sh: AllPattern = AllPattern(client, "p2sh_address_activity") - self.p2tr: AllPattern = AllPattern(client, "p2tr_address_activity") - self.p2wpkh: AllPattern = AllPattern(client, "p2wpkh_address_activity") - self.p2wsh: AllPattern = AllPattern(client, "p2wsh_address_activity") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.all: AllPattern = AllPattern(client, 'address_activity') + self.p2a: AllPattern = AllPattern(client, 'p2a_address_activity') + self.p2pk33: AllPattern = AllPattern(client, 'p2pk33_address_activity') + self.p2pk65: AllPattern = AllPattern(client, 'p2pk65_address_activity') + self.p2pkh: AllPattern = AllPattern(client, 'p2pkh_address_activity') + self.p2sh: AllPattern = AllPattern(client, 'p2sh_address_activity') + self.p2tr: AllPattern = AllPattern(client, 'p2tr_address_activity') + self.p2wpkh: AllPattern = AllPattern(client, 'p2wpkh_address_activity') + self.p2wsh: AllPattern = AllPattern(client, 'p2wsh_address_activity') class MetricsTree_Distribution_AddressCohorts_AmountRange: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._0sats: _0satsPattern = _0satsPattern(client, "addrs_with_0sats") - self._100btc_to_1k_btc: _0satsPattern = _0satsPattern( - client, "addrs_above_100btc_under_1k_btc" - ) - self._100k_btc_or_more: _0satsPattern = _0satsPattern( - client, "addrs_above_100k_btc" - ) - self._100k_sats_to_1m_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_100k_sats_under_1m_sats" - ) - self._100sats_to_1k_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_100sats_under_1k_sats" - ) - self._10btc_to_100btc: _0satsPattern = _0satsPattern( - client, "addrs_above_10btc_under_100btc" - ) - self._10k_btc_to_100k_btc: _0satsPattern = _0satsPattern( - client, "addrs_above_10k_btc_under_100k_btc" - ) - self._10k_sats_to_100k_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_10k_sats_under_100k_sats" - ) - self._10m_sats_to_1btc: _0satsPattern = _0satsPattern( - client, "addrs_above_10m_sats_under_1btc" - ) - self._10sats_to_100sats: _0satsPattern = _0satsPattern( - client, "addrs_above_10sats_under_100sats" - ) - self._1btc_to_10btc: _0satsPattern = _0satsPattern( - client, "addrs_above_1btc_under_10btc" - ) - self._1k_btc_to_10k_btc: _0satsPattern = _0satsPattern( - client, "addrs_above_1k_btc_under_10k_btc" - ) - self._1k_sats_to_10k_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_1k_sats_under_10k_sats" - ) - self._1m_sats_to_10m_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_1m_sats_under_10m_sats" - ) - self._1sat_to_10sats: _0satsPattern = _0satsPattern( - client, "addrs_above_1sat_under_10sats" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._0sats: _0satsPattern = _0satsPattern(client, 'addrs_with_0sats') + self._100btc_to_1k_btc: _0satsPattern = _0satsPattern(client, 'addrs_above_100btc_under_1k_btc') + self._100k_btc_or_more: _0satsPattern = _0satsPattern(client, 'addrs_above_100k_btc') + self._100k_sats_to_1m_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_100k_sats_under_1m_sats') + self._100sats_to_1k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_100sats_under_1k_sats') + self._10btc_to_100btc: _0satsPattern = _0satsPattern(client, 'addrs_above_10btc_under_100btc') + self._10k_btc_to_100k_btc: _0satsPattern = _0satsPattern(client, 'addrs_above_10k_btc_under_100k_btc') + self._10k_sats_to_100k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_10k_sats_under_100k_sats') + self._10m_sats_to_1btc: _0satsPattern = _0satsPattern(client, 'addrs_above_10m_sats_under_1btc') + self._10sats_to_100sats: _0satsPattern = _0satsPattern(client, 'addrs_above_10sats_under_100sats') + self._1btc_to_10btc: _0satsPattern = _0satsPattern(client, 'addrs_above_1btc_under_10btc') + self._1k_btc_to_10k_btc: _0satsPattern = _0satsPattern(client, 'addrs_above_1k_btc_under_10k_btc') + self._1k_sats_to_10k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_1k_sats_under_10k_sats') + self._1m_sats_to_10m_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_1m_sats_under_10m_sats') + self._1sat_to_10sats: _0satsPattern = _0satsPattern(client, 'addrs_above_1sat_under_10sats') class MetricsTree_Distribution_AddressCohorts_GeAmount: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._100btc: _0satsPattern = _0satsPattern(client, "addrs_over_100btc") - self._100k_sats: _0satsPattern = _0satsPattern(client, "addrs_over_100k_sats") - self._100sats: _0satsPattern = _0satsPattern(client, "addrs_over_100sats") - self._10btc: _0satsPattern = _0satsPattern(client, "addrs_over_10btc") - self._10k_btc: _0satsPattern = _0satsPattern(client, "addrs_over_10k_btc") - self._10k_sats: _0satsPattern = _0satsPattern(client, "addrs_over_10k_sats") - self._10m_sats: _0satsPattern = _0satsPattern(client, "addrs_over_10m_sats") - self._10sats: _0satsPattern = _0satsPattern(client, "addrs_over_10sats") - self._1btc: _0satsPattern = _0satsPattern(client, "addrs_over_1btc") - self._1k_btc: _0satsPattern = _0satsPattern(client, "addrs_over_1k_btc") - self._1k_sats: _0satsPattern = _0satsPattern(client, "addrs_over_1k_sats") - self._1m_sats: _0satsPattern = _0satsPattern(client, "addrs_over_1m_sats") - self._1sat: _0satsPattern = _0satsPattern(client, "addrs_over_1sat") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._100btc: _0satsPattern = _0satsPattern(client, 'addrs_over_100btc') + self._100k_sats: _0satsPattern = _0satsPattern(client, 'addrs_over_100k_sats') + self._100sats: _0satsPattern = _0satsPattern(client, 'addrs_over_100sats') + self._10btc: _0satsPattern = _0satsPattern(client, 'addrs_over_10btc') + self._10k_btc: _0satsPattern = _0satsPattern(client, 'addrs_over_10k_btc') + self._10k_sats: _0satsPattern = _0satsPattern(client, 'addrs_over_10k_sats') + self._10m_sats: _0satsPattern = _0satsPattern(client, 'addrs_over_10m_sats') + self._10sats: _0satsPattern = _0satsPattern(client, 'addrs_over_10sats') + self._1btc: _0satsPattern = _0satsPattern(client, 'addrs_over_1btc') + self._1k_btc: _0satsPattern = _0satsPattern(client, 'addrs_over_1k_btc') + self._1k_sats: _0satsPattern = _0satsPattern(client, 'addrs_over_1k_sats') + self._1m_sats: _0satsPattern = _0satsPattern(client, 'addrs_over_1m_sats') + self._1sat: _0satsPattern = _0satsPattern(client, 'addrs_over_1sat') class MetricsTree_Distribution_AddressCohorts_LtAmount: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._100btc: _0satsPattern = _0satsPattern(client, "addrs_under_100btc") - self._100k_btc: _0satsPattern = _0satsPattern(client, "addrs_under_100k_btc") - self._100k_sats: _0satsPattern = _0satsPattern(client, "addrs_under_100k_sats") - self._100sats: _0satsPattern = _0satsPattern(client, "addrs_under_100sats") - self._10btc: _0satsPattern = _0satsPattern(client, "addrs_under_10btc") - self._10k_btc: _0satsPattern = _0satsPattern(client, "addrs_under_10k_btc") - self._10k_sats: _0satsPattern = _0satsPattern(client, "addrs_under_10k_sats") - self._10m_sats: _0satsPattern = _0satsPattern(client, "addrs_under_10m_sats") - self._10sats: _0satsPattern = _0satsPattern(client, "addrs_under_10sats") - self._1btc: _0satsPattern = _0satsPattern(client, "addrs_under_1btc") - self._1k_btc: _0satsPattern = _0satsPattern(client, "addrs_under_1k_btc") - self._1k_sats: _0satsPattern = _0satsPattern(client, "addrs_under_1k_sats") - self._1m_sats: _0satsPattern = _0satsPattern(client, "addrs_under_1m_sats") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._100btc: _0satsPattern = _0satsPattern(client, 'addrs_under_100btc') + self._100k_btc: _0satsPattern = _0satsPattern(client, 'addrs_under_100k_btc') + self._100k_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_100k_sats') + self._100sats: _0satsPattern = _0satsPattern(client, 'addrs_under_100sats') + self._10btc: _0satsPattern = _0satsPattern(client, 'addrs_under_10btc') + self._10k_btc: _0satsPattern = _0satsPattern(client, 'addrs_under_10k_btc') + self._10k_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_10k_sats') + self._10m_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_10m_sats') + self._10sats: _0satsPattern = _0satsPattern(client, 'addrs_under_10sats') + self._1btc: _0satsPattern = _0satsPattern(client, 'addrs_under_1btc') + self._1k_btc: _0satsPattern = _0satsPattern(client, 'addrs_under_1k_btc') + self._1k_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_1k_sats') + self._1m_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_1m_sats') class MetricsTree_Distribution_AddressCohorts: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.amount_range: MetricsTree_Distribution_AddressCohorts_AmountRange = ( - MetricsTree_Distribution_AddressCohorts_AmountRange(client) - ) - self.ge_amount: MetricsTree_Distribution_AddressCohorts_GeAmount = ( - MetricsTree_Distribution_AddressCohorts_GeAmount(client) - ) - self.lt_amount: MetricsTree_Distribution_AddressCohorts_LtAmount = ( - MetricsTree_Distribution_AddressCohorts_LtAmount(client) - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.amount_range: MetricsTree_Distribution_AddressCohorts_AmountRange = MetricsTree_Distribution_AddressCohorts_AmountRange(client) + self.ge_amount: MetricsTree_Distribution_AddressCohorts_GeAmount = MetricsTree_Distribution_AddressCohorts_GeAmount(client) + self.lt_amount: MetricsTree_Distribution_AddressCohorts_LtAmount = MetricsTree_Distribution_AddressCohorts_LtAmount(client) class MetricsTree_Distribution_AddressesData: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.empty: MetricPattern32[EmptyAddressData] = MetricPattern32( - client, "emptyaddressdata" - ) - self.loaded: MetricPattern31[LoadedAddressData] = MetricPattern31( - client, "loadedaddressdata" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.empty: MetricPattern32[EmptyAddressData] = MetricPattern32(client, 'emptyaddressdata') + self.loaded: MetricPattern31[LoadedAddressData] = MetricPattern31(client, 'loadedaddressdata') class MetricsTree_Distribution_AnyAddressIndexes: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.p2a: MetricPattern16[AnyAddressIndex] = MetricPattern16( - client, "anyaddressindex" - ) - self.p2pk33: MetricPattern18[AnyAddressIndex] = MetricPattern18( - client, "anyaddressindex" - ) - self.p2pk65: MetricPattern19[AnyAddressIndex] = MetricPattern19( - client, "anyaddressindex" - ) - self.p2pkh: MetricPattern20[AnyAddressIndex] = MetricPattern20( - client, "anyaddressindex" - ) - self.p2sh: MetricPattern21[AnyAddressIndex] = MetricPattern21( - client, "anyaddressindex" - ) - self.p2tr: MetricPattern22[AnyAddressIndex] = MetricPattern22( - client, "anyaddressindex" - ) - self.p2wpkh: MetricPattern23[AnyAddressIndex] = MetricPattern23( - client, "anyaddressindex" - ) - self.p2wsh: MetricPattern24[AnyAddressIndex] = MetricPattern24( - client, "anyaddressindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.p2a: MetricPattern16[AnyAddressIndex] = MetricPattern16(client, 'anyaddressindex') + self.p2pk33: MetricPattern18[AnyAddressIndex] = MetricPattern18(client, 'anyaddressindex') + self.p2pk65: MetricPattern19[AnyAddressIndex] = MetricPattern19(client, 'anyaddressindex') + self.p2pkh: MetricPattern20[AnyAddressIndex] = MetricPattern20(client, 'anyaddressindex') + self.p2sh: MetricPattern21[AnyAddressIndex] = MetricPattern21(client, 'anyaddressindex') + self.p2tr: MetricPattern22[AnyAddressIndex] = MetricPattern22(client, 'anyaddressindex') + self.p2wpkh: MetricPattern23[AnyAddressIndex] = MetricPattern23(client, 'anyaddressindex') + self.p2wsh: MetricPattern24[AnyAddressIndex] = MetricPattern24(client, 'anyaddressindex') class MetricsTree_Distribution_GrowthRate: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.all: FullnessPattern[StoredF32] = FullnessPattern(client, "growth_rate") - self.p2a: FullnessPattern[StoredF32] = FullnessPattern( - client, "p2a_growth_rate" - ) - self.p2pk33: FullnessPattern[StoredF32] = FullnessPattern( - client, "p2pk33_growth_rate" - ) - self.p2pk65: FullnessPattern[StoredF32] = FullnessPattern( - client, "p2pk65_growth_rate" - ) - self.p2pkh: FullnessPattern[StoredF32] = FullnessPattern( - client, "p2pkh_growth_rate" - ) - self.p2sh: FullnessPattern[StoredF32] = FullnessPattern( - client, "p2sh_growth_rate" - ) - self.p2tr: FullnessPattern[StoredF32] = FullnessPattern( - client, "p2tr_growth_rate" - ) - self.p2wpkh: FullnessPattern[StoredF32] = FullnessPattern( - client, "p2wpkh_growth_rate" - ) - self.p2wsh: FullnessPattern[StoredF32] = FullnessPattern( - client, "p2wsh_growth_rate" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.all: FullnessPattern[StoredF32] = FullnessPattern(client, 'growth_rate') + self.p2a: FullnessPattern[StoredF32] = FullnessPattern(client, 'p2a_growth_rate') + self.p2pk33: FullnessPattern[StoredF32] = FullnessPattern(client, 'p2pk33_growth_rate') + self.p2pk65: FullnessPattern[StoredF32] = FullnessPattern(client, 'p2pk65_growth_rate') + self.p2pkh: FullnessPattern[StoredF32] = FullnessPattern(client, 'p2pkh_growth_rate') + self.p2sh: FullnessPattern[StoredF32] = FullnessPattern(client, 'p2sh_growth_rate') + self.p2tr: FullnessPattern[StoredF32] = FullnessPattern(client, 'p2tr_growth_rate') + self.p2wpkh: FullnessPattern[StoredF32] = FullnessPattern(client, 'p2wpkh_growth_rate') + self.p2wsh: FullnessPattern[StoredF32] = FullnessPattern(client, 'p2wsh_growth_rate') class MetricsTree_Distribution_NewAddrCount: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.all: DollarsPattern[StoredU64] = DollarsPattern(client, "new_addr_count") - self.p2a: DollarsPattern[StoredU64] = DollarsPattern( - client, "p2a_new_addr_count" - ) - self.p2pk33: DollarsPattern[StoredU64] = DollarsPattern( - client, "p2pk33_new_addr_count" - ) - self.p2pk65: DollarsPattern[StoredU64] = DollarsPattern( - client, "p2pk65_new_addr_count" - ) - self.p2pkh: DollarsPattern[StoredU64] = DollarsPattern( - client, "p2pkh_new_addr_count" - ) - self.p2sh: DollarsPattern[StoredU64] = DollarsPattern( - client, "p2sh_new_addr_count" - ) - self.p2tr: DollarsPattern[StoredU64] = DollarsPattern( - client, "p2tr_new_addr_count" - ) - self.p2wpkh: DollarsPattern[StoredU64] = DollarsPattern( - client, "p2wpkh_new_addr_count" - ) - self.p2wsh: DollarsPattern[StoredU64] = DollarsPattern( - client, "p2wsh_new_addr_count" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.all: DollarsPattern[StoredU64] = DollarsPattern(client, 'new_addr_count') + self.p2a: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2a_new_addr_count') + self.p2pk33: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2pk33_new_addr_count') + self.p2pk65: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2pk65_new_addr_count') + self.p2pkh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2pkh_new_addr_count') + self.p2sh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2sh_new_addr_count') + self.p2tr: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2tr_new_addr_count') + self.p2wpkh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2wpkh_new_addr_count') + self.p2wsh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2wsh_new_addr_count') class MetricsTree_Distribution_UtxoCohorts_AgeRange: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y_to_12y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_10y_to_12y_old" - ) - self._12y_to_15y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_12y_to_15y_old" - ) - self._1d_to_1w: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_1d_to_1w_old" - ) - self._1h_to_1d: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_1h_to_1d_old" - ) - self._1m_to_2m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_1m_to_2m_old" - ) - self._1w_to_1m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_1w_to_1m_old" - ) - self._1y_to_2y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_1y_to_2y_old" - ) - self._2m_to_3m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_2m_to_3m_old" - ) - self._2y_to_3y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_2y_to_3y_old" - ) - self._3m_to_4m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_3m_to_4m_old" - ) - self._3y_to_4y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_3y_to_4y_old" - ) - self._4m_to_5m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_4m_to_5m_old" - ) - self._4y_to_5y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_4y_to_5y_old" - ) - self._5m_to_6m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_5m_to_6m_old" - ) - self._5y_to_6y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_5y_to_6y_old" - ) - self._6m_to_1y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_6m_to_1y_old" - ) - self._6y_to_7y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_6y_to_7y_old" - ) - self._7y_to_8y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_7y_to_8y_old" - ) - self._8y_to_10y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_8y_to_10y_old" - ) - self.from_15y: _10yTo12yPattern = _10yTo12yPattern(client, "utxos_over_15y_old") - self.up_to_1h: _10yTo12yPattern = _10yTo12yPattern(client, "utxos_under_1h_old") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._10y_to_12y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_10y_to_12y_old') + self._12y_to_15y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_12y_to_15y_old') + self._1d_to_1w: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_1d_to_1w_old') + self._1h_to_1d: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_1h_to_1d_old') + self._1m_to_2m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_1m_to_2m_old') + self._1w_to_1m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_1w_to_1m_old') + self._1y_to_2y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_1y_to_2y_old') + self._2m_to_3m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_2m_to_3m_old') + self._2y_to_3y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_2y_to_3y_old') + self._3m_to_4m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_3m_to_4m_old') + self._3y_to_4y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_3y_to_4y_old') + self._4m_to_5m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_4m_to_5m_old') + self._4y_to_5y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_4y_to_5y_old') + self._5m_to_6m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_5m_to_6m_old') + self._5y_to_6y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_5y_to_6y_old') + self._6m_to_1y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_6m_to_1y_old') + self._6y_to_7y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_6y_to_7y_old') + self._7y_to_8y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_7y_to_8y_old') + self._8y_to_10y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_8y_to_10y_old') + self.from_15y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_over_15y_old') + self.up_to_1h: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_under_1h_old') class MetricsTree_Distribution_UtxoCohorts_All_CostBasis: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.max: ActivePricePattern = ActivePricePattern(client, "max_cost_basis") - self.min: ActivePricePattern = ActivePricePattern(client, "min_cost_basis") - self.percentiles: PercentilesPattern = PercentilesPattern(client, "cost_basis") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.max: ActivePricePattern = ActivePricePattern(client, 'max_cost_basis') + self.min: ActivePricePattern = ActivePricePattern(client, 'min_cost_basis') + self.percentiles: PercentilesPattern = PercentilesPattern(client, 'cost_basis') class MetricsTree_Distribution_UtxoCohorts_All_Relative: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl" - ) - self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1(client, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl") - self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, "supply_in_loss_rel_to_own_supply") - ) - self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, "supply_in_profit_rel_to_own_supply") - ) - self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1(client, "unrealized_loss_rel_to_own_total_unrealized_pnl") - self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1(client, "unrealized_profit_rel_to_own_total_unrealized_pnl") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, 'neg_unrealized_loss_rel_to_own_total_unrealized_pnl') + self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, 'net_unrealized_pnl_rel_to_own_total_unrealized_pnl') + self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, 'supply_in_loss_rel_to_own_supply') + self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, 'supply_in_profit_rel_to_own_supply') + self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, 'unrealized_loss_rel_to_own_total_unrealized_pnl') + self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, 'unrealized_profit_rel_to_own_total_unrealized_pnl') class MetricsTree_Distribution_UtxoCohorts_All: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.activity: ActivityPattern2 = ActivityPattern2(client, "") - self.cost_basis: MetricsTree_Distribution_UtxoCohorts_All_CostBasis = ( - MetricsTree_Distribution_UtxoCohorts_All_CostBasis(client) - ) - self.outputs: OutputsPattern = OutputsPattern(client, "utxo_count") - self.realized: RealizedPattern3 = RealizedPattern3(client, "") - self.relative: MetricsTree_Distribution_UtxoCohorts_All_Relative = ( - MetricsTree_Distribution_UtxoCohorts_All_Relative(client) - ) - self.supply: SupplyPattern2 = SupplyPattern2(client, "supply") - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.activity: ActivityPattern2 = ActivityPattern2(client, '') + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_All_CostBasis = MetricsTree_Distribution_UtxoCohorts_All_CostBasis(client) + self.outputs: OutputsPattern = OutputsPattern(client, 'utxo_count') + self.realized: RealizedPattern3 = RealizedPattern3(client, '') + self.relative: MetricsTree_Distribution_UtxoCohorts_All_Relative = MetricsTree_Distribution_UtxoCohorts_All_Relative(client) + self.supply: SupplyPattern2 = SupplyPattern2(client, 'supply') + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, '') class MetricsTree_Distribution_UtxoCohorts_AmountRange: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._0sats: _0satsPattern2 = _0satsPattern2(client, "utxos_with_0sats") - self._100btc_to_1k_btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_100btc_under_1k_btc" - ) - self._100k_btc_or_more: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_100k_btc" - ) - self._100k_sats_to_1m_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_100k_sats_under_1m_sats" - ) - self._100sats_to_1k_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_100sats_under_1k_sats" - ) - self._10btc_to_100btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10btc_under_100btc" - ) - self._10k_btc_to_100k_btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10k_btc_under_100k_btc" - ) - self._10k_sats_to_100k_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10k_sats_under_100k_sats" - ) - self._10m_sats_to_1btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10m_sats_under_1btc" - ) - self._10sats_to_100sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10sats_under_100sats" - ) - self._1btc_to_10btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1btc_under_10btc" - ) - self._1k_btc_to_10k_btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1k_btc_under_10k_btc" - ) - self._1k_sats_to_10k_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1k_sats_under_10k_sats" - ) - self._1m_sats_to_10m_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1m_sats_under_10m_sats" - ) - self._1sat_to_10sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1sat_under_10sats" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._0sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_with_0sats') + self._100btc_to_1k_btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100btc_under_1k_btc') + self._100k_btc_or_more: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100k_btc') + self._100k_sats_to_1m_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100k_sats_under_1m_sats') + self._100sats_to_1k_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100sats_under_1k_sats') + self._10btc_to_100btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10btc_under_100btc') + self._10k_btc_to_100k_btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10k_btc_under_100k_btc') + self._10k_sats_to_100k_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10k_sats_under_100k_sats') + self._10m_sats_to_1btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10m_sats_under_1btc') + self._10sats_to_100sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10sats_under_100sats') + self._1btc_to_10btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1btc_under_10btc') + self._1k_btc_to_10k_btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1k_btc_under_10k_btc') + self._1k_sats_to_10k_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1k_sats_under_10k_sats') + self._1m_sats_to_10m_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1m_sats_under_10m_sats') + self._1sat_to_10sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1sat_under_10sats') class MetricsTree_Distribution_UtxoCohorts_Epoch: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._0: _0satsPattern2 = _0satsPattern2(client, "epoch_0") - self._1: _0satsPattern2 = _0satsPattern2(client, "epoch_1") - self._2: _0satsPattern2 = _0satsPattern2(client, "epoch_2") - self._3: _0satsPattern2 = _0satsPattern2(client, "epoch_3") - self._4: _0satsPattern2 = _0satsPattern2(client, "epoch_4") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._0: _0satsPattern2 = _0satsPattern2(client, 'epoch_0') + self._1: _0satsPattern2 = _0satsPattern2(client, 'epoch_1') + self._2: _0satsPattern2 = _0satsPattern2(client, 'epoch_2') + self._3: _0satsPattern2 = _0satsPattern2(client, 'epoch_3') + self._4: _0satsPattern2 = _0satsPattern2(client, 'epoch_4') class MetricsTree_Distribution_UtxoCohorts_GeAmount: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._100btc: _100btcPattern = _100btcPattern(client, "utxos_over_100btc") - self._100k_sats: _100btcPattern = _100btcPattern(client, "utxos_over_100k_sats") - self._100sats: _100btcPattern = _100btcPattern(client, "utxos_over_100sats") - self._10btc: _100btcPattern = _100btcPattern(client, "utxos_over_10btc") - self._10k_btc: _100btcPattern = _100btcPattern(client, "utxos_over_10k_btc") - self._10k_sats: _100btcPattern = _100btcPattern(client, "utxos_over_10k_sats") - self._10m_sats: _100btcPattern = _100btcPattern(client, "utxos_over_10m_sats") - self._10sats: _100btcPattern = _100btcPattern(client, "utxos_over_10sats") - self._1btc: _100btcPattern = _100btcPattern(client, "utxos_over_1btc") - self._1k_btc: _100btcPattern = _100btcPattern(client, "utxos_over_1k_btc") - self._1k_sats: _100btcPattern = _100btcPattern(client, "utxos_over_1k_sats") - self._1m_sats: _100btcPattern = _100btcPattern(client, "utxos_over_1m_sats") - self._1sat: _100btcPattern = _100btcPattern(client, "utxos_over_1sat") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._100btc: _100btcPattern = _100btcPattern(client, 'utxos_over_100btc') + self._100k_sats: _100btcPattern = _100btcPattern(client, 'utxos_over_100k_sats') + self._100sats: _100btcPattern = _100btcPattern(client, 'utxos_over_100sats') + self._10btc: _100btcPattern = _100btcPattern(client, 'utxos_over_10btc') + self._10k_btc: _100btcPattern = _100btcPattern(client, 'utxos_over_10k_btc') + self._10k_sats: _100btcPattern = _100btcPattern(client, 'utxos_over_10k_sats') + self._10m_sats: _100btcPattern = _100btcPattern(client, 'utxos_over_10m_sats') + self._10sats: _100btcPattern = _100btcPattern(client, 'utxos_over_10sats') + self._1btc: _100btcPattern = _100btcPattern(client, 'utxos_over_1btc') + self._1k_btc: _100btcPattern = _100btcPattern(client, 'utxos_over_1k_btc') + self._1k_sats: _100btcPattern = _100btcPattern(client, 'utxos_over_1k_sats') + self._1m_sats: _100btcPattern = _100btcPattern(client, 'utxos_over_1m_sats') + self._1sat: _100btcPattern = _100btcPattern(client, 'utxos_over_1sat') class MetricsTree_Distribution_UtxoCohorts_LtAmount: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._100btc: _100btcPattern = _100btcPattern(client, "utxos_under_100btc") - self._100k_btc: _100btcPattern = _100btcPattern(client, "utxos_under_100k_btc") - self._100k_sats: _100btcPattern = _100btcPattern( - client, "utxos_under_100k_sats" - ) - self._100sats: _100btcPattern = _100btcPattern(client, "utxos_under_100sats") - self._10btc: _100btcPattern = _100btcPattern(client, "utxos_under_10btc") - self._10k_btc: _100btcPattern = _100btcPattern(client, "utxos_under_10k_btc") - self._10k_sats: _100btcPattern = _100btcPattern(client, "utxos_under_10k_sats") - self._10m_sats: _100btcPattern = _100btcPattern(client, "utxos_under_10m_sats") - self._10sats: _100btcPattern = _100btcPattern(client, "utxos_under_10sats") - self._1btc: _100btcPattern = _100btcPattern(client, "utxos_under_1btc") - self._1k_btc: _100btcPattern = _100btcPattern(client, "utxos_under_1k_btc") - self._1k_sats: _100btcPattern = _100btcPattern(client, "utxos_under_1k_sats") - self._1m_sats: _100btcPattern = _100btcPattern(client, "utxos_under_1m_sats") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._100btc: _100btcPattern = _100btcPattern(client, 'utxos_under_100btc') + self._100k_btc: _100btcPattern = _100btcPattern(client, 'utxos_under_100k_btc') + self._100k_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_100k_sats') + self._100sats: _100btcPattern = _100btcPattern(client, 'utxos_under_100sats') + self._10btc: _100btcPattern = _100btcPattern(client, 'utxos_under_10btc') + self._10k_btc: _100btcPattern = _100btcPattern(client, 'utxos_under_10k_btc') + self._10k_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_10k_sats') + self._10m_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_10m_sats') + self._10sats: _100btcPattern = _100btcPattern(client, 'utxos_under_10sats') + self._1btc: _100btcPattern = _100btcPattern(client, 'utxos_under_1btc') + self._1k_btc: _100btcPattern = _100btcPattern(client, 'utxos_under_1k_btc') + self._1k_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_1k_sats') + self._1m_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_1m_sats') class MetricsTree_Distribution_UtxoCohorts_MaxAge: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y: _10yPattern = _10yPattern(client, "utxos_under_10y_old") - self._12y: _10yPattern = _10yPattern(client, "utxos_under_12y_old") - self._15y: _10yPattern = _10yPattern(client, "utxos_under_15y_old") - self._1m: _10yPattern = _10yPattern(client, "utxos_under_1m_old") - self._1w: _10yPattern = _10yPattern(client, "utxos_under_1w_old") - self._1y: _10yPattern = _10yPattern(client, "utxos_under_1y_old") - self._2m: _10yPattern = _10yPattern(client, "utxos_under_2m_old") - self._2y: _10yPattern = _10yPattern(client, "utxos_under_2y_old") - self._3m: _10yPattern = _10yPattern(client, "utxos_under_3m_old") - self._3y: _10yPattern = _10yPattern(client, "utxos_under_3y_old") - self._4m: _10yPattern = _10yPattern(client, "utxos_under_4m_old") - self._4y: _10yPattern = _10yPattern(client, "utxos_under_4y_old") - self._5m: _10yPattern = _10yPattern(client, "utxos_under_5m_old") - self._5y: _10yPattern = _10yPattern(client, "utxos_under_5y_old") - self._6m: _10yPattern = _10yPattern(client, "utxos_under_6m_old") - self._6y: _10yPattern = _10yPattern(client, "utxos_under_6y_old") - self._7y: _10yPattern = _10yPattern(client, "utxos_under_7y_old") - self._8y: _10yPattern = _10yPattern(client, "utxos_under_8y_old") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._10y: _10yPattern = _10yPattern(client, 'utxos_under_10y_old') + self._12y: _10yPattern = _10yPattern(client, 'utxos_under_12y_old') + self._15y: _10yPattern = _10yPattern(client, 'utxos_under_15y_old') + self._1m: _10yPattern = _10yPattern(client, 'utxos_under_1m_old') + self._1w: _10yPattern = _10yPattern(client, 'utxos_under_1w_old') + self._1y: _10yPattern = _10yPattern(client, 'utxos_under_1y_old') + self._2m: _10yPattern = _10yPattern(client, 'utxos_under_2m_old') + self._2y: _10yPattern = _10yPattern(client, 'utxos_under_2y_old') + self._3m: _10yPattern = _10yPattern(client, 'utxos_under_3m_old') + self._3y: _10yPattern = _10yPattern(client, 'utxos_under_3y_old') + self._4m: _10yPattern = _10yPattern(client, 'utxos_under_4m_old') + self._4y: _10yPattern = _10yPattern(client, 'utxos_under_4y_old') + self._5m: _10yPattern = _10yPattern(client, 'utxos_under_5m_old') + self._5y: _10yPattern = _10yPattern(client, 'utxos_under_5y_old') + self._6m: _10yPattern = _10yPattern(client, 'utxos_under_6m_old') + self._6y: _10yPattern = _10yPattern(client, 'utxos_under_6y_old') + self._7y: _10yPattern = _10yPattern(client, 'utxos_under_7y_old') + self._8y: _10yPattern = _10yPattern(client, 'utxos_under_8y_old') class MetricsTree_Distribution_UtxoCohorts_MinAge: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y: _100btcPattern = _100btcPattern(client, "utxos_over_10y_old") - self._12y: _100btcPattern = _100btcPattern(client, "utxos_over_12y_old") - self._1d: _100btcPattern = _100btcPattern(client, "utxos_over_1d_old") - self._1m: _100btcPattern = _100btcPattern(client, "utxos_over_1m_old") - self._1w: _100btcPattern = _100btcPattern(client, "utxos_over_1w_old") - self._1y: _100btcPattern = _100btcPattern(client, "utxos_over_1y_old") - self._2m: _100btcPattern = _100btcPattern(client, "utxos_over_2m_old") - self._2y: _100btcPattern = _100btcPattern(client, "utxos_over_2y_old") - self._3m: _100btcPattern = _100btcPattern(client, "utxos_over_3m_old") - self._3y: _100btcPattern = _100btcPattern(client, "utxos_over_3y_old") - self._4m: _100btcPattern = _100btcPattern(client, "utxos_over_4m_old") - self._4y: _100btcPattern = _100btcPattern(client, "utxos_over_4y_old") - self._5m: _100btcPattern = _100btcPattern(client, "utxos_over_5m_old") - self._5y: _100btcPattern = _100btcPattern(client, "utxos_over_5y_old") - self._6m: _100btcPattern = _100btcPattern(client, "utxos_over_6m_old") - self._6y: _100btcPattern = _100btcPattern(client, "utxos_over_6y_old") - self._7y: _100btcPattern = _100btcPattern(client, "utxos_over_7y_old") - self._8y: _100btcPattern = _100btcPattern(client, "utxos_over_8y_old") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._10y: _100btcPattern = _100btcPattern(client, 'utxos_over_10y_old') + self._12y: _100btcPattern = _100btcPattern(client, 'utxos_over_12y_old') + self._1d: _100btcPattern = _100btcPattern(client, 'utxos_over_1d_old') + self._1m: _100btcPattern = _100btcPattern(client, 'utxos_over_1m_old') + self._1w: _100btcPattern = _100btcPattern(client, 'utxos_over_1w_old') + self._1y: _100btcPattern = _100btcPattern(client, 'utxos_over_1y_old') + self._2m: _100btcPattern = _100btcPattern(client, 'utxos_over_2m_old') + self._2y: _100btcPattern = _100btcPattern(client, 'utxos_over_2y_old') + self._3m: _100btcPattern = _100btcPattern(client, 'utxos_over_3m_old') + self._3y: _100btcPattern = _100btcPattern(client, 'utxos_over_3y_old') + self._4m: _100btcPattern = _100btcPattern(client, 'utxos_over_4m_old') + self._4y: _100btcPattern = _100btcPattern(client, 'utxos_over_4y_old') + self._5m: _100btcPattern = _100btcPattern(client, 'utxos_over_5m_old') + self._5y: _100btcPattern = _100btcPattern(client, 'utxos_over_5y_old') + self._6m: _100btcPattern = _100btcPattern(client, 'utxos_over_6m_old') + self._6y: _100btcPattern = _100btcPattern(client, 'utxos_over_6y_old') + self._7y: _100btcPattern = _100btcPattern(client, 'utxos_over_7y_old') + self._8y: _100btcPattern = _100btcPattern(client, 'utxos_over_8y_old') class MetricsTree_Distribution_UtxoCohorts_Term_Long: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.activity: ActivityPattern2 = ActivityPattern2(client, "lth") - self.cost_basis: CostBasisPattern2 = CostBasisPattern2(client, "lth") - self.outputs: OutputsPattern = OutputsPattern(client, "lth_utxo_count") - self.realized: RealizedPattern2 = RealizedPattern2(client, "lth") - self.relative: RelativePattern5 = RelativePattern5(client, "lth") - self.supply: SupplyPattern2 = SupplyPattern2(client, "lth_supply") - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "lth") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.activity: ActivityPattern2 = ActivityPattern2(client, 'lth') + self.cost_basis: CostBasisPattern2 = CostBasisPattern2(client, 'lth') + self.outputs: OutputsPattern = OutputsPattern(client, 'lth_utxo_count') + self.realized: RealizedPattern2 = RealizedPattern2(client, 'lth') + self.relative: RelativePattern5 = RelativePattern5(client, 'lth') + self.supply: SupplyPattern2 = SupplyPattern2(client, 'lth_supply') + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, 'lth') class MetricsTree_Distribution_UtxoCohorts_Term_Short: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.activity: ActivityPattern2 = ActivityPattern2(client, "sth") - self.cost_basis: CostBasisPattern2 = CostBasisPattern2(client, "sth") - self.outputs: OutputsPattern = OutputsPattern(client, "sth_utxo_count") - self.realized: RealizedPattern3 = RealizedPattern3(client, "sth") - self.relative: RelativePattern5 = RelativePattern5(client, "sth") - self.supply: SupplyPattern2 = SupplyPattern2(client, "sth_supply") - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "sth") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.activity: ActivityPattern2 = ActivityPattern2(client, 'sth') + self.cost_basis: CostBasisPattern2 = CostBasisPattern2(client, 'sth') + self.outputs: OutputsPattern = OutputsPattern(client, 'sth_utxo_count') + self.realized: RealizedPattern3 = RealizedPattern3(client, 'sth') + self.relative: RelativePattern5 = RelativePattern5(client, 'sth') + self.supply: SupplyPattern2 = SupplyPattern2(client, 'sth_supply') + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, 'sth') class MetricsTree_Distribution_UtxoCohorts_Term: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.long: MetricsTree_Distribution_UtxoCohorts_Term_Long = ( - MetricsTree_Distribution_UtxoCohorts_Term_Long(client) - ) - self.short: MetricsTree_Distribution_UtxoCohorts_Term_Short = ( - MetricsTree_Distribution_UtxoCohorts_Term_Short(client) - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.long: MetricsTree_Distribution_UtxoCohorts_Term_Long = MetricsTree_Distribution_UtxoCohorts_Term_Long(client) + self.short: MetricsTree_Distribution_UtxoCohorts_Term_Short = MetricsTree_Distribution_UtxoCohorts_Term_Short(client) class MetricsTree_Distribution_UtxoCohorts_Type: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.empty: _0satsPattern2 = _0satsPattern2(client, "empty_outputs") - self.p2a: _0satsPattern2 = _0satsPattern2(client, "p2a") - self.p2ms: _0satsPattern2 = _0satsPattern2(client, "p2ms") - self.p2pk33: _0satsPattern2 = _0satsPattern2(client, "p2pk33") - self.p2pk65: _0satsPattern2 = _0satsPattern2(client, "p2pk65") - self.p2pkh: _0satsPattern2 = _0satsPattern2(client, "p2pkh") - self.p2sh: _0satsPattern2 = _0satsPattern2(client, "p2sh") - self.p2tr: _0satsPattern2 = _0satsPattern2(client, "p2tr") - self.p2wpkh: _0satsPattern2 = _0satsPattern2(client, "p2wpkh") - self.p2wsh: _0satsPattern2 = _0satsPattern2(client, "p2wsh") - self.unknown: _0satsPattern2 = _0satsPattern2(client, "unknown_outputs") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.empty: _0satsPattern2 = _0satsPattern2(client, 'empty_outputs') + self.p2a: _0satsPattern2 = _0satsPattern2(client, 'p2a') + self.p2ms: _0satsPattern2 = _0satsPattern2(client, 'p2ms') + self.p2pk33: _0satsPattern2 = _0satsPattern2(client, 'p2pk33') + self.p2pk65: _0satsPattern2 = _0satsPattern2(client, 'p2pk65') + self.p2pkh: _0satsPattern2 = _0satsPattern2(client, 'p2pkh') + self.p2sh: _0satsPattern2 = _0satsPattern2(client, 'p2sh') + self.p2tr: _0satsPattern2 = _0satsPattern2(client, 'p2tr') + self.p2wpkh: _0satsPattern2 = _0satsPattern2(client, 'p2wpkh') + self.p2wsh: _0satsPattern2 = _0satsPattern2(client, 'p2wsh') + self.unknown: _0satsPattern2 = _0satsPattern2(client, 'unknown_outputs') class MetricsTree_Distribution_UtxoCohorts_Year: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._2009: _0satsPattern2 = _0satsPattern2(client, "year_2009") - self._2010: _0satsPattern2 = _0satsPattern2(client, "year_2010") - self._2011: _0satsPattern2 = _0satsPattern2(client, "year_2011") - self._2012: _0satsPattern2 = _0satsPattern2(client, "year_2012") - self._2013: _0satsPattern2 = _0satsPattern2(client, "year_2013") - self._2014: _0satsPattern2 = _0satsPattern2(client, "year_2014") - self._2015: _0satsPattern2 = _0satsPattern2(client, "year_2015") - self._2016: _0satsPattern2 = _0satsPattern2(client, "year_2016") - self._2017: _0satsPattern2 = _0satsPattern2(client, "year_2017") - self._2018: _0satsPattern2 = _0satsPattern2(client, "year_2018") - self._2019: _0satsPattern2 = _0satsPattern2(client, "year_2019") - self._2020: _0satsPattern2 = _0satsPattern2(client, "year_2020") - self._2021: _0satsPattern2 = _0satsPattern2(client, "year_2021") - self._2022: _0satsPattern2 = _0satsPattern2(client, "year_2022") - self._2023: _0satsPattern2 = _0satsPattern2(client, "year_2023") - self._2024: _0satsPattern2 = _0satsPattern2(client, "year_2024") - self._2025: _0satsPattern2 = _0satsPattern2(client, "year_2025") - self._2026: _0satsPattern2 = _0satsPattern2(client, "year_2026") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._2009: _0satsPattern2 = _0satsPattern2(client, 'year_2009') + self._2010: _0satsPattern2 = _0satsPattern2(client, 'year_2010') + self._2011: _0satsPattern2 = _0satsPattern2(client, 'year_2011') + self._2012: _0satsPattern2 = _0satsPattern2(client, 'year_2012') + self._2013: _0satsPattern2 = _0satsPattern2(client, 'year_2013') + self._2014: _0satsPattern2 = _0satsPattern2(client, 'year_2014') + self._2015: _0satsPattern2 = _0satsPattern2(client, 'year_2015') + self._2016: _0satsPattern2 = _0satsPattern2(client, 'year_2016') + self._2017: _0satsPattern2 = _0satsPattern2(client, 'year_2017') + self._2018: _0satsPattern2 = _0satsPattern2(client, 'year_2018') + self._2019: _0satsPattern2 = _0satsPattern2(client, 'year_2019') + self._2020: _0satsPattern2 = _0satsPattern2(client, 'year_2020') + self._2021: _0satsPattern2 = _0satsPattern2(client, 'year_2021') + self._2022: _0satsPattern2 = _0satsPattern2(client, 'year_2022') + self._2023: _0satsPattern2 = _0satsPattern2(client, 'year_2023') + self._2024: _0satsPattern2 = _0satsPattern2(client, 'year_2024') + self._2025: _0satsPattern2 = _0satsPattern2(client, 'year_2025') + self._2026: _0satsPattern2 = _0satsPattern2(client, 'year_2026') class MetricsTree_Distribution_UtxoCohorts: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.age_range: MetricsTree_Distribution_UtxoCohorts_AgeRange = ( - MetricsTree_Distribution_UtxoCohorts_AgeRange(client) - ) - self.all: MetricsTree_Distribution_UtxoCohorts_All = ( - MetricsTree_Distribution_UtxoCohorts_All(client) - ) - self.amount_range: MetricsTree_Distribution_UtxoCohorts_AmountRange = ( - MetricsTree_Distribution_UtxoCohorts_AmountRange(client) - ) - self.epoch: MetricsTree_Distribution_UtxoCohorts_Epoch = ( - MetricsTree_Distribution_UtxoCohorts_Epoch(client) - ) - self.ge_amount: MetricsTree_Distribution_UtxoCohorts_GeAmount = ( - MetricsTree_Distribution_UtxoCohorts_GeAmount(client) - ) - self.lt_amount: MetricsTree_Distribution_UtxoCohorts_LtAmount = ( - MetricsTree_Distribution_UtxoCohorts_LtAmount(client) - ) - self.max_age: MetricsTree_Distribution_UtxoCohorts_MaxAge = ( - MetricsTree_Distribution_UtxoCohorts_MaxAge(client) - ) - self.min_age: MetricsTree_Distribution_UtxoCohorts_MinAge = ( - MetricsTree_Distribution_UtxoCohorts_MinAge(client) - ) - self.term: MetricsTree_Distribution_UtxoCohorts_Term = ( - MetricsTree_Distribution_UtxoCohorts_Term(client) - ) - self.type_: MetricsTree_Distribution_UtxoCohorts_Type = ( - MetricsTree_Distribution_UtxoCohorts_Type(client) - ) - self.year: MetricsTree_Distribution_UtxoCohorts_Year = ( - MetricsTree_Distribution_UtxoCohorts_Year(client) - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.age_range: MetricsTree_Distribution_UtxoCohorts_AgeRange = MetricsTree_Distribution_UtxoCohorts_AgeRange(client) + self.all: MetricsTree_Distribution_UtxoCohorts_All = MetricsTree_Distribution_UtxoCohorts_All(client) + self.amount_range: MetricsTree_Distribution_UtxoCohorts_AmountRange = MetricsTree_Distribution_UtxoCohorts_AmountRange(client) + self.epoch: MetricsTree_Distribution_UtxoCohorts_Epoch = MetricsTree_Distribution_UtxoCohorts_Epoch(client) + self.ge_amount: MetricsTree_Distribution_UtxoCohorts_GeAmount = MetricsTree_Distribution_UtxoCohorts_GeAmount(client) + self.lt_amount: MetricsTree_Distribution_UtxoCohorts_LtAmount = MetricsTree_Distribution_UtxoCohorts_LtAmount(client) + self.max_age: MetricsTree_Distribution_UtxoCohorts_MaxAge = MetricsTree_Distribution_UtxoCohorts_MaxAge(client) + self.min_age: MetricsTree_Distribution_UtxoCohorts_MinAge = MetricsTree_Distribution_UtxoCohorts_MinAge(client) + self.term: MetricsTree_Distribution_UtxoCohorts_Term = MetricsTree_Distribution_UtxoCohorts_Term(client) + self.type_: MetricsTree_Distribution_UtxoCohorts_Type = MetricsTree_Distribution_UtxoCohorts_Type(client) + self.year: MetricsTree_Distribution_UtxoCohorts_Year = MetricsTree_Distribution_UtxoCohorts_Year(client) class MetricsTree_Distribution: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.addr_count: AddrCountPattern = AddrCountPattern(client, "addr_count") - self.address_activity: MetricsTree_Distribution_AddressActivity = ( - MetricsTree_Distribution_AddressActivity(client) - ) - self.address_cohorts: MetricsTree_Distribution_AddressCohorts = ( - MetricsTree_Distribution_AddressCohorts(client) - ) - self.addresses_data: MetricsTree_Distribution_AddressesData = ( - MetricsTree_Distribution_AddressesData(client) - ) - self.any_address_indexes: MetricsTree_Distribution_AnyAddressIndexes = ( - MetricsTree_Distribution_AnyAddressIndexes(client) - ) - self.chain_state: MetricPattern11[SupplyState] = MetricPattern11( - client, "chain" - ) - self.empty_addr_count: AddrCountPattern = AddrCountPattern( - client, "empty_addr_count" - ) - self.emptyaddressindex: MetricPattern32[EmptyAddressIndex] = MetricPattern32( - client, "emptyaddressindex" - ) - self.growth_rate: MetricsTree_Distribution_GrowthRate = ( - MetricsTree_Distribution_GrowthRate(client) - ) - self.loadedaddressindex: MetricPattern31[LoadedAddressIndex] = MetricPattern31( - client, "loadedaddressindex" - ) - self.new_addr_count: MetricsTree_Distribution_NewAddrCount = ( - MetricsTree_Distribution_NewAddrCount(client) - ) - self.total_addr_count: AddrCountPattern = AddrCountPattern( - client, "total_addr_count" - ) - self.utxo_cohorts: MetricsTree_Distribution_UtxoCohorts = ( - MetricsTree_Distribution_UtxoCohorts(client) - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.addr_count: AddrCountPattern = AddrCountPattern(client, 'addr_count') + self.address_activity: MetricsTree_Distribution_AddressActivity = MetricsTree_Distribution_AddressActivity(client) + self.address_cohorts: MetricsTree_Distribution_AddressCohorts = MetricsTree_Distribution_AddressCohorts(client) + self.addresses_data: MetricsTree_Distribution_AddressesData = MetricsTree_Distribution_AddressesData(client) + self.any_address_indexes: MetricsTree_Distribution_AnyAddressIndexes = MetricsTree_Distribution_AnyAddressIndexes(client) + self.chain_state: MetricPattern11[SupplyState] = MetricPattern11(client, 'chain') + self.empty_addr_count: AddrCountPattern = AddrCountPattern(client, 'empty_addr_count') + self.emptyaddressindex: MetricPattern32[EmptyAddressIndex] = MetricPattern32(client, 'emptyaddressindex') + self.growth_rate: MetricsTree_Distribution_GrowthRate = MetricsTree_Distribution_GrowthRate(client) + self.loadedaddressindex: MetricPattern31[LoadedAddressIndex] = MetricPattern31(client, 'loadedaddressindex') + self.new_addr_count: MetricsTree_Distribution_NewAddrCount = MetricsTree_Distribution_NewAddrCount(client) + self.total_addr_count: AddrCountPattern = AddrCountPattern(client, 'total_addr_count') + self.utxo_cohorts: MetricsTree_Distribution_UtxoCohorts = MetricsTree_Distribution_UtxoCohorts(client) class MetricsTree_Indexes_Address_Empty: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern9[EmptyOutputIndex] = MetricPattern9( - client, "emptyoutputindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern9[EmptyOutputIndex] = MetricPattern9(client, 'emptyoutputindex') class MetricsTree_Indexes_Address_Opreturn: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern14[OpReturnIndex] = MetricPattern14( - client, "opreturnindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern14[OpReturnIndex] = MetricPattern14(client, 'opreturnindex') class MetricsTree_Indexes_Address_P2a: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern16[P2AAddressIndex] = MetricPattern16( - client, "p2aaddressindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern16[P2AAddressIndex] = MetricPattern16(client, 'p2aaddressindex') class MetricsTree_Indexes_Address_P2ms: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern17[P2MSOutputIndex] = MetricPattern17( - client, "p2msoutputindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern17[P2MSOutputIndex] = MetricPattern17(client, 'p2msoutputindex') class MetricsTree_Indexes_Address_P2pk33: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern18[P2PK33AddressIndex] = MetricPattern18( - client, "p2pk33addressindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern18[P2PK33AddressIndex] = MetricPattern18(client, 'p2pk33addressindex') class MetricsTree_Indexes_Address_P2pk65: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern19[P2PK65AddressIndex] = MetricPattern19( - client, "p2pk65addressindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern19[P2PK65AddressIndex] = MetricPattern19(client, 'p2pk65addressindex') class MetricsTree_Indexes_Address_P2pkh: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern20[P2PKHAddressIndex] = MetricPattern20( - client, "p2pkhaddressindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern20[P2PKHAddressIndex] = MetricPattern20(client, 'p2pkhaddressindex') class MetricsTree_Indexes_Address_P2sh: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern21[P2SHAddressIndex] = MetricPattern21( - client, "p2shaddressindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern21[P2SHAddressIndex] = MetricPattern21(client, 'p2shaddressindex') class MetricsTree_Indexes_Address_P2tr: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern22[P2TRAddressIndex] = MetricPattern22( - client, "p2traddressindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern22[P2TRAddressIndex] = MetricPattern22(client, 'p2traddressindex') class MetricsTree_Indexes_Address_P2wpkh: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern23[P2WPKHAddressIndex] = MetricPattern23( - client, "p2wpkhaddressindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern23[P2WPKHAddressIndex] = MetricPattern23(client, 'p2wpkhaddressindex') class MetricsTree_Indexes_Address_P2wsh: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern24[P2WSHAddressIndex] = MetricPattern24( - client, "p2wshaddressindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern24[P2WSHAddressIndex] = MetricPattern24(client, 'p2wshaddressindex') class MetricsTree_Indexes_Address_Unknown: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern28[UnknownOutputIndex] = MetricPattern28( - client, "unknownoutputindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern28[UnknownOutputIndex] = MetricPattern28(client, 'unknownoutputindex') class MetricsTree_Indexes_Address: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.empty: MetricsTree_Indexes_Address_Empty = ( - MetricsTree_Indexes_Address_Empty(client) - ) - self.opreturn: MetricsTree_Indexes_Address_Opreturn = ( - MetricsTree_Indexes_Address_Opreturn(client) - ) - self.p2a: MetricsTree_Indexes_Address_P2a = MetricsTree_Indexes_Address_P2a( - client - ) - self.p2ms: MetricsTree_Indexes_Address_P2ms = MetricsTree_Indexes_Address_P2ms( - client - ) - self.p2pk33: MetricsTree_Indexes_Address_P2pk33 = ( - MetricsTree_Indexes_Address_P2pk33(client) - ) - self.p2pk65: MetricsTree_Indexes_Address_P2pk65 = ( - MetricsTree_Indexes_Address_P2pk65(client) - ) - self.p2pkh: MetricsTree_Indexes_Address_P2pkh = ( - MetricsTree_Indexes_Address_P2pkh(client) - ) - self.p2sh: MetricsTree_Indexes_Address_P2sh = MetricsTree_Indexes_Address_P2sh( - client - ) - self.p2tr: MetricsTree_Indexes_Address_P2tr = MetricsTree_Indexes_Address_P2tr( - client - ) - self.p2wpkh: MetricsTree_Indexes_Address_P2wpkh = ( - MetricsTree_Indexes_Address_P2wpkh(client) - ) - self.p2wsh: MetricsTree_Indexes_Address_P2wsh = ( - MetricsTree_Indexes_Address_P2wsh(client) - ) - self.unknown: MetricsTree_Indexes_Address_Unknown = ( - MetricsTree_Indexes_Address_Unknown(client) - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.empty: MetricsTree_Indexes_Address_Empty = MetricsTree_Indexes_Address_Empty(client) + self.opreturn: MetricsTree_Indexes_Address_Opreturn = MetricsTree_Indexes_Address_Opreturn(client) + self.p2a: MetricsTree_Indexes_Address_P2a = MetricsTree_Indexes_Address_P2a(client) + self.p2ms: MetricsTree_Indexes_Address_P2ms = MetricsTree_Indexes_Address_P2ms(client) + self.p2pk33: MetricsTree_Indexes_Address_P2pk33 = MetricsTree_Indexes_Address_P2pk33(client) + self.p2pk65: MetricsTree_Indexes_Address_P2pk65 = MetricsTree_Indexes_Address_P2pk65(client) + self.p2pkh: MetricsTree_Indexes_Address_P2pkh = MetricsTree_Indexes_Address_P2pkh(client) + self.p2sh: MetricsTree_Indexes_Address_P2sh = MetricsTree_Indexes_Address_P2sh(client) + self.p2tr: MetricsTree_Indexes_Address_P2tr = MetricsTree_Indexes_Address_P2tr(client) + self.p2wpkh: MetricsTree_Indexes_Address_P2wpkh = MetricsTree_Indexes_Address_P2wpkh(client) + self.p2wsh: MetricsTree_Indexes_Address_P2wsh = MetricsTree_Indexes_Address_P2wsh(client) + self.unknown: MetricsTree_Indexes_Address_Unknown = MetricsTree_Indexes_Address_Unknown(client) class MetricsTree_Indexes_Dateindex: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.date: MetricPattern6[Date] = MetricPattern6(client, "date") - self.first_height: MetricPattern6[Height] = MetricPattern6( - client, "first_height" - ) - self.height_count: MetricPattern6[StoredU64] = MetricPattern6( - client, "height_count" - ) - self.identity: MetricPattern6[DateIndex] = MetricPattern6(client, "dateindex") - self.monthindex: MetricPattern6[MonthIndex] = MetricPattern6( - client, "monthindex" - ) - self.weekindex: MetricPattern6[WeekIndex] = MetricPattern6(client, "weekindex") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.date: MetricPattern6[Date] = MetricPattern6(client, 'date') + self.first_height: MetricPattern6[Height] = MetricPattern6(client, 'first_height') + self.height_count: MetricPattern6[StoredU64] = MetricPattern6(client, 'height_count') + self.identity: MetricPattern6[DateIndex] = MetricPattern6(client, 'dateindex') + self.monthindex: MetricPattern6[MonthIndex] = MetricPattern6(client, 'monthindex') + self.weekindex: MetricPattern6[WeekIndex] = MetricPattern6(client, 'weekindex') class MetricsTree_Indexes_Decadeindex: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.date: MetricPattern7[Date] = MetricPattern7(client, "date") - self.first_yearindex: MetricPattern7[YearIndex] = MetricPattern7( - client, "first_yearindex" - ) - self.identity: MetricPattern7[DecadeIndex] = MetricPattern7( - client, "decadeindex" - ) - self.yearindex_count: MetricPattern7[StoredU64] = MetricPattern7( - client, "yearindex_count" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.date: MetricPattern7[Date] = MetricPattern7(client, 'date') + self.first_yearindex: MetricPattern7[YearIndex] = MetricPattern7(client, 'first_yearindex') + self.identity: MetricPattern7[DecadeIndex] = MetricPattern7(client, 'decadeindex') + self.yearindex_count: MetricPattern7[StoredU64] = MetricPattern7(client, 'yearindex_count') class MetricsTree_Indexes_Difficultyepoch: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.first_height: MetricPattern8[Height] = MetricPattern8( - client, "first_height" - ) - self.height_count: MetricPattern8[StoredU64] = MetricPattern8( - client, "height_count" - ) - self.identity: MetricPattern8[DifficultyEpoch] = MetricPattern8( - client, "difficultyepoch" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.first_height: MetricPattern8[Height] = MetricPattern8(client, 'first_height') + self.height_count: MetricPattern8[StoredU64] = MetricPattern8(client, 'height_count') + self.identity: MetricPattern8[DifficultyEpoch] = MetricPattern8(client, 'difficultyepoch') class MetricsTree_Indexes_Halvingepoch: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.first_height: MetricPattern10[Height] = MetricPattern10( - client, "first_height" - ) - self.identity: MetricPattern10[HalvingEpoch] = MetricPattern10( - client, "halvingepoch" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.first_height: MetricPattern10[Height] = MetricPattern10(client, 'first_height') + self.identity: MetricPattern10[HalvingEpoch] = MetricPattern10(client, 'halvingepoch') class MetricsTree_Indexes_Height: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.dateindex: MetricPattern11[DateIndex] = MetricPattern11( - client, "dateindex" - ) - self.difficultyepoch: MetricPattern11[DifficultyEpoch] = MetricPattern11( - client, "difficultyepoch" - ) - self.halvingepoch: MetricPattern11[HalvingEpoch] = MetricPattern11( - client, "halvingepoch" - ) - self.identity: MetricPattern11[Height] = MetricPattern11(client, "height") - self.txindex_count: MetricPattern11[StoredU64] = MetricPattern11( - client, "txindex_count" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.dateindex: MetricPattern11[DateIndex] = MetricPattern11(client, 'dateindex') + self.difficultyepoch: MetricPattern11[DifficultyEpoch] = MetricPattern11(client, 'difficultyepoch') + self.halvingepoch: MetricPattern11[HalvingEpoch] = MetricPattern11(client, 'halvingepoch') + self.identity: MetricPattern11[Height] = MetricPattern11(client, 'height') + self.txindex_count: MetricPattern11[StoredU64] = MetricPattern11(client, 'txindex_count') class MetricsTree_Indexes_Monthindex: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.date: MetricPattern13[Date] = MetricPattern13(client, "date") - self.dateindex_count: MetricPattern13[StoredU64] = MetricPattern13( - client, "dateindex_count" - ) - self.first_dateindex: MetricPattern13[DateIndex] = MetricPattern13( - client, "first_dateindex" - ) - self.identity: MetricPattern13[MonthIndex] = MetricPattern13( - client, "monthindex" - ) - self.quarterindex: MetricPattern13[QuarterIndex] = MetricPattern13( - client, "quarterindex" - ) - self.semesterindex: MetricPattern13[SemesterIndex] = MetricPattern13( - client, "semesterindex" - ) - self.yearindex: MetricPattern13[YearIndex] = MetricPattern13( - client, "yearindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.date: MetricPattern13[Date] = MetricPattern13(client, 'date') + self.dateindex_count: MetricPattern13[StoredU64] = MetricPattern13(client, 'dateindex_count') + self.first_dateindex: MetricPattern13[DateIndex] = MetricPattern13(client, 'first_dateindex') + self.identity: MetricPattern13[MonthIndex] = MetricPattern13(client, 'monthindex') + self.quarterindex: MetricPattern13[QuarterIndex] = MetricPattern13(client, 'quarterindex') + self.semesterindex: MetricPattern13[SemesterIndex] = MetricPattern13(client, 'semesterindex') + self.yearindex: MetricPattern13[YearIndex] = MetricPattern13(client, 'yearindex') class MetricsTree_Indexes_Quarterindex: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.date: MetricPattern25[Date] = MetricPattern25(client, "date") - self.first_monthindex: MetricPattern25[MonthIndex] = MetricPattern25( - client, "first_monthindex" - ) - self.identity: MetricPattern25[QuarterIndex] = MetricPattern25( - client, "quarterindex" - ) - self.monthindex_count: MetricPattern25[StoredU64] = MetricPattern25( - client, "monthindex_count" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.date: MetricPattern25[Date] = MetricPattern25(client, 'date') + self.first_monthindex: MetricPattern25[MonthIndex] = MetricPattern25(client, 'first_monthindex') + self.identity: MetricPattern25[QuarterIndex] = MetricPattern25(client, 'quarterindex') + self.monthindex_count: MetricPattern25[StoredU64] = MetricPattern25(client, 'monthindex_count') class MetricsTree_Indexes_Semesterindex: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.date: MetricPattern26[Date] = MetricPattern26(client, "date") - self.first_monthindex: MetricPattern26[MonthIndex] = MetricPattern26( - client, "first_monthindex" - ) - self.identity: MetricPattern26[SemesterIndex] = MetricPattern26( - client, "semesterindex" - ) - self.monthindex_count: MetricPattern26[StoredU64] = MetricPattern26( - client, "monthindex_count" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.date: MetricPattern26[Date] = MetricPattern26(client, 'date') + self.first_monthindex: MetricPattern26[MonthIndex] = MetricPattern26(client, 'first_monthindex') + self.identity: MetricPattern26[SemesterIndex] = MetricPattern26(client, 'semesterindex') + self.monthindex_count: MetricPattern26[StoredU64] = MetricPattern26(client, 'monthindex_count') class MetricsTree_Indexes_Txindex: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern27[TxIndex] = MetricPattern27(client, "txindex") - self.input_count: MetricPattern27[StoredU64] = MetricPattern27( - client, "input_count" - ) - self.output_count: MetricPattern27[StoredU64] = MetricPattern27( - client, "output_count" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern27[TxIndex] = MetricPattern27(client, 'txindex') + self.input_count: MetricPattern27[StoredU64] = MetricPattern27(client, 'input_count') + self.output_count: MetricPattern27[StoredU64] = MetricPattern27(client, 'output_count') class MetricsTree_Indexes_Txinindex: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern12[TxInIndex] = MetricPattern12(client, "txinindex") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern12[TxInIndex] = MetricPattern12(client, 'txinindex') class MetricsTree_Indexes_Txoutindex: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern15[TxOutIndex] = MetricPattern15( - client, "txoutindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern15[TxOutIndex] = MetricPattern15(client, 'txoutindex') class MetricsTree_Indexes_Weekindex: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.date: MetricPattern29[Date] = MetricPattern29(client, "date") - self.dateindex_count: MetricPattern29[StoredU64] = MetricPattern29( - client, "dateindex_count" - ) - self.first_dateindex: MetricPattern29[DateIndex] = MetricPattern29( - client, "first_dateindex" - ) - self.identity: MetricPattern29[WeekIndex] = MetricPattern29(client, "weekindex") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.date: MetricPattern29[Date] = MetricPattern29(client, 'date') + self.dateindex_count: MetricPattern29[StoredU64] = MetricPattern29(client, 'dateindex_count') + self.first_dateindex: MetricPattern29[DateIndex] = MetricPattern29(client, 'first_dateindex') + self.identity: MetricPattern29[WeekIndex] = MetricPattern29(client, 'weekindex') class MetricsTree_Indexes_Yearindex: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.date: MetricPattern30[Date] = MetricPattern30(client, "date") - self.decadeindex: MetricPattern30[DecadeIndex] = MetricPattern30( - client, "decadeindex" - ) - self.first_monthindex: MetricPattern30[MonthIndex] = MetricPattern30( - client, "first_monthindex" - ) - self.identity: MetricPattern30[YearIndex] = MetricPattern30(client, "yearindex") - self.monthindex_count: MetricPattern30[StoredU64] = MetricPattern30( - client, "monthindex_count" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.date: MetricPattern30[Date] = MetricPattern30(client, 'date') + self.decadeindex: MetricPattern30[DecadeIndex] = MetricPattern30(client, 'decadeindex') + self.first_monthindex: MetricPattern30[MonthIndex] = MetricPattern30(client, 'first_monthindex') + self.identity: MetricPattern30[YearIndex] = MetricPattern30(client, 'yearindex') + self.monthindex_count: MetricPattern30[StoredU64] = MetricPattern30(client, 'monthindex_count') class MetricsTree_Indexes: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): + + def __init__(self, client: BrkClientBase, base_path: str = ''): self.address: MetricsTree_Indexes_Address = MetricsTree_Indexes_Address(client) - self.dateindex: MetricsTree_Indexes_Dateindex = MetricsTree_Indexes_Dateindex( - client - ) - self.decadeindex: MetricsTree_Indexes_Decadeindex = ( - MetricsTree_Indexes_Decadeindex(client) - ) - self.difficultyepoch: MetricsTree_Indexes_Difficultyepoch = ( - MetricsTree_Indexes_Difficultyepoch(client) - ) - self.halvingepoch: MetricsTree_Indexes_Halvingepoch = ( - MetricsTree_Indexes_Halvingepoch(client) - ) + self.dateindex: MetricsTree_Indexes_Dateindex = MetricsTree_Indexes_Dateindex(client) + self.decadeindex: MetricsTree_Indexes_Decadeindex = MetricsTree_Indexes_Decadeindex(client) + self.difficultyepoch: MetricsTree_Indexes_Difficultyepoch = MetricsTree_Indexes_Difficultyepoch(client) + self.halvingepoch: MetricsTree_Indexes_Halvingepoch = MetricsTree_Indexes_Halvingepoch(client) self.height: MetricsTree_Indexes_Height = MetricsTree_Indexes_Height(client) - self.monthindex: MetricsTree_Indexes_Monthindex = ( - MetricsTree_Indexes_Monthindex(client) - ) - self.quarterindex: MetricsTree_Indexes_Quarterindex = ( - MetricsTree_Indexes_Quarterindex(client) - ) - self.semesterindex: MetricsTree_Indexes_Semesterindex = ( - MetricsTree_Indexes_Semesterindex(client) - ) + self.monthindex: MetricsTree_Indexes_Monthindex = MetricsTree_Indexes_Monthindex(client) + self.quarterindex: MetricsTree_Indexes_Quarterindex = MetricsTree_Indexes_Quarterindex(client) + self.semesterindex: MetricsTree_Indexes_Semesterindex = MetricsTree_Indexes_Semesterindex(client) self.txindex: MetricsTree_Indexes_Txindex = MetricsTree_Indexes_Txindex(client) - self.txinindex: MetricsTree_Indexes_Txinindex = MetricsTree_Indexes_Txinindex( - client - ) - self.txoutindex: MetricsTree_Indexes_Txoutindex = ( - MetricsTree_Indexes_Txoutindex(client) - ) - self.weekindex: MetricsTree_Indexes_Weekindex = MetricsTree_Indexes_Weekindex( - client - ) - self.yearindex: MetricsTree_Indexes_Yearindex = MetricsTree_Indexes_Yearindex( - client - ) - + self.txinindex: MetricsTree_Indexes_Txinindex = MetricsTree_Indexes_Txinindex(client) + self.txoutindex: MetricsTree_Indexes_Txoutindex = MetricsTree_Indexes_Txoutindex(client) + self.weekindex: MetricsTree_Indexes_Weekindex = MetricsTree_Indexes_Weekindex(client) + self.yearindex: MetricsTree_Indexes_Yearindex = MetricsTree_Indexes_Yearindex(client) class MetricsTree_Inputs_Spent: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.txoutindex: MetricPattern12[TxOutIndex] = MetricPattern12( - client, "txoutindex" - ) - self.value: MetricPattern12[Sats] = MetricPattern12(client, "value") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.txoutindex: MetricPattern12[TxOutIndex] = MetricPattern12(client, 'txoutindex') + self.value: MetricPattern12[Sats] = MetricPattern12(client, 'value') class MetricsTree_Inputs: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.count: CountPattern2[StoredU64] = CountPattern2(client, "input_count") - self.first_txinindex: MetricPattern11[TxInIndex] = MetricPattern11( - client, "first_txinindex" - ) - self.outpoint: MetricPattern12[OutPoint] = MetricPattern12(client, "outpoint") - self.outputtype: MetricPattern12[OutputType] = MetricPattern12( - client, "outputtype" - ) + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.count: CountPattern2[StoredU64] = CountPattern2(client, 'input_count') + self.first_txinindex: MetricPattern11[TxInIndex] = MetricPattern11(client, 'first_txinindex') + self.outpoint: MetricPattern12[OutPoint] = MetricPattern12(client, 'outpoint') + self.outputtype: MetricPattern12[OutputType] = MetricPattern12(client, 'outputtype') self.spent: MetricsTree_Inputs_Spent = MetricsTree_Inputs_Spent(client) - self.txindex: MetricPattern12[TxIndex] = MetricPattern12(client, "txindex") - self.typeindex: MetricPattern12[TypeIndex] = MetricPattern12( - client, "typeindex" - ) - + self.txindex: MetricPattern12[TxIndex] = MetricPattern12(client, 'txindex') + self.typeindex: MetricPattern12[TypeIndex] = MetricPattern12(client, 'typeindex') class MetricsTree_Market_Ath: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.days_since_price_ath: MetricPattern4[StoredU16] = MetricPattern4( - client, "days_since_price_ath" - ) - self.max_days_between_price_aths: MetricPattern4[StoredU16] = MetricPattern4( - client, "max_days_between_price_aths" - ) - self.max_years_between_price_aths: MetricPattern4[StoredF32] = MetricPattern4( - client, "max_years_between_price_aths" - ) - self.price_ath: ActivePricePattern = ActivePricePattern(client, "price_ath") - self.price_drawdown: MetricPattern3[StoredF32] = MetricPattern3( - client, "price_drawdown" - ) - self.years_since_price_ath: MetricPattern4[StoredF32] = MetricPattern4( - client, "years_since_price_ath" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.days_since_price_ath: MetricPattern4[StoredU16] = MetricPattern4(client, 'days_since_price_ath') + self.max_days_between_price_aths: MetricPattern4[StoredU16] = MetricPattern4(client, 'max_days_between_price_aths') + self.max_years_between_price_aths: MetricPattern4[StoredF32] = MetricPattern4(client, 'max_years_between_price_aths') + self.price_ath: ActivePricePattern = ActivePricePattern(client, 'price_ath') + self.price_drawdown: MetricPattern3[StoredF32] = MetricPattern3(client, 'price_drawdown') + self.years_since_price_ath: MetricPattern4[StoredF32] = MetricPattern4(client, 'years_since_price_ath') class MetricsTree_Market_Dca_ClassAveragePrice: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._2015: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2015_average_price" - ) - self._2016: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2016_average_price" - ) - self._2017: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2017_average_price" - ) - self._2018: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2018_average_price" - ) - self._2019: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2019_average_price" - ) - self._2020: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2020_average_price" - ) - self._2021: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2021_average_price" - ) - self._2022: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2022_average_price" - ) - self._2023: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2023_average_price" - ) - self._2024: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2024_average_price" - ) - self._2025: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2025_average_price" - ) - self._2026: _0sdUsdPattern = _0sdUsdPattern( - client, "dca_class_2026_average_price" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._2015: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2015_average_price') + self._2016: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2016_average_price') + self._2017: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2017_average_price') + self._2018: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2018_average_price') + self._2019: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2019_average_price') + self._2020: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2020_average_price') + self._2021: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2021_average_price') + self._2022: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2022_average_price') + self._2023: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2023_average_price') + self._2024: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2024_average_price') + self._2025: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2025_average_price') + self._2026: _0sdUsdPattern = _0sdUsdPattern(client, 'dca_class_2026_average_price') class MetricsTree_Market_Dca_ClassDaysInLoss: """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._2015: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2015_days_in_loss') + self._2016: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2016_days_in_loss') + self._2017: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2017_days_in_loss') + self._2018: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2018_days_in_loss') + self._2019: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2019_days_in_loss') + self._2020: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2020_days_in_loss') + self._2021: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2021_days_in_loss') + self._2022: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2022_days_in_loss') + self._2023: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2023_days_in_loss') + self._2024: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2024_days_in_loss') + self._2025: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2025_days_in_loss') + self._2026: MetricPattern4[StoredU32] = MetricPattern4(client, 'dca_class_2026_days_in_loss') - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._2015: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2015_days_in_loss" - ) - self._2016: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2016_days_in_loss" - ) - self._2017: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2017_days_in_loss" - ) - self._2018: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2018_days_in_loss" - ) - self._2019: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2019_days_in_loss" - ) - self._2020: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2020_days_in_loss" - ) - self._2021: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2021_days_in_loss" - ) - self._2022: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2022_days_in_loss" - ) - self._2023: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2023_days_in_loss" - ) - self._2024: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2024_days_in_loss" - ) - self._2025: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2025_days_in_loss" - ) - self._2026: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2026_days_in_loss" - ) - - -class MetricsTree_Market_Dca_ClassDaysInProfit: +class MetricsTree_Market_Dca_ClassMaxDrawdown: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._2015: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2015_days_in_profit" - ) - self._2016: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2016_days_in_profit" - ) - self._2017: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2017_days_in_profit" - ) - self._2018: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2018_days_in_profit" - ) - self._2019: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2019_days_in_profit" - ) - self._2020: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2020_days_in_profit" - ) - self._2021: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2021_days_in_profit" - ) - self._2022: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2022_days_in_profit" - ) - self._2023: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2023_days_in_profit" - ) - self._2024: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2024_days_in_profit" - ) - self._2025: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2025_days_in_profit" - ) - self._2026: MetricPattern4[StoredU32] = MetricPattern4( - client, "dca_class_2026_days_in_profit" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._2015: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2015_max_drawdown') + self._2016: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2016_max_drawdown') + self._2017: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2017_max_drawdown') + self._2018: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2018_max_drawdown') + self._2019: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2019_max_drawdown') + self._2020: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2020_max_drawdown') + self._2021: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2021_max_drawdown') + self._2022: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2022_max_drawdown') + self._2023: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2023_max_drawdown') + self._2024: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2024_max_drawdown') + self._2025: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2025_max_drawdown') + self._2026: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2026_max_drawdown') class MetricsTree_Market_Dca_ClassMaxReturn: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._2015: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2015_max_return" - ) - self._2016: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2016_max_return" - ) - self._2017: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2017_max_return" - ) - self._2018: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2018_max_return" - ) - self._2019: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2019_max_return" - ) - self._2020: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2020_max_return" - ) - self._2021: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2021_max_return" - ) - self._2022: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2022_max_return" - ) - self._2023: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2023_max_return" - ) - self._2024: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2024_max_return" - ) - self._2025: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2025_max_return" - ) - self._2026: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2026_max_return" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._2015: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2015_max_return') + self._2016: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2016_max_return') + self._2017: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2017_max_return') + self._2018: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2018_max_return') + self._2019: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2019_max_return') + self._2020: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2020_max_return') + self._2021: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2021_max_return') + self._2022: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2022_max_return') + self._2023: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2023_max_return') + self._2024: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2024_max_return') + self._2025: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2025_max_return') + self._2026: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2026_max_return') class MetricsTree_Market_Dca_ClassReturns: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._2015: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2015_returns" - ) - self._2016: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2016_returns" - ) - self._2017: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2017_returns" - ) - self._2018: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2018_returns" - ) - self._2019: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2019_returns" - ) - self._2020: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2020_returns" - ) - self._2021: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2021_returns" - ) - self._2022: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2022_returns" - ) - self._2023: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2023_returns" - ) - self._2024: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2024_returns" - ) - self._2025: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2025_returns" - ) - self._2026: MetricPattern4[StoredF32] = MetricPattern4( - client, "dca_class_2026_returns" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._2015: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2015_returns') + self._2016: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2016_returns') + self._2017: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2017_returns') + self._2018: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2018_returns') + self._2019: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2019_returns') + self._2020: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2020_returns') + self._2021: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2021_returns') + self._2022: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2022_returns') + self._2023: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2023_returns') + self._2024: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2024_returns') + self._2025: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2025_returns') + self._2026: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2026_returns') class MetricsTree_Market_Dca_ClassStack: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._2015: _2015Pattern = _2015Pattern(client, "dca_class_2015_stack") - self._2016: _2015Pattern = _2015Pattern(client, "dca_class_2016_stack") - self._2017: _2015Pattern = _2015Pattern(client, "dca_class_2017_stack") - self._2018: _2015Pattern = _2015Pattern(client, "dca_class_2018_stack") - self._2019: _2015Pattern = _2015Pattern(client, "dca_class_2019_stack") - self._2020: _2015Pattern = _2015Pattern(client, "dca_class_2020_stack") - self._2021: _2015Pattern = _2015Pattern(client, "dca_class_2021_stack") - self._2022: _2015Pattern = _2015Pattern(client, "dca_class_2022_stack") - self._2023: _2015Pattern = _2015Pattern(client, "dca_class_2023_stack") - self._2024: _2015Pattern = _2015Pattern(client, "dca_class_2024_stack") - self._2025: _2015Pattern = _2015Pattern(client, "dca_class_2025_stack") - self._2026: _2015Pattern = _2015Pattern(client, "dca_class_2026_stack") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._2015: _2015Pattern = _2015Pattern(client, 'dca_class_2015_stack') + self._2016: _2015Pattern = _2015Pattern(client, 'dca_class_2016_stack') + self._2017: _2015Pattern = _2015Pattern(client, 'dca_class_2017_stack') + self._2018: _2015Pattern = _2015Pattern(client, 'dca_class_2018_stack') + self._2019: _2015Pattern = _2015Pattern(client, 'dca_class_2019_stack') + self._2020: _2015Pattern = _2015Pattern(client, 'dca_class_2020_stack') + self._2021: _2015Pattern = _2015Pattern(client, 'dca_class_2021_stack') + self._2022: _2015Pattern = _2015Pattern(client, 'dca_class_2022_stack') + self._2023: _2015Pattern = _2015Pattern(client, 'dca_class_2023_stack') + self._2024: _2015Pattern = _2015Pattern(client, 'dca_class_2024_stack') + self._2025: _2015Pattern = _2015Pattern(client, 'dca_class_2025_stack') + self._2026: _2015Pattern = _2015Pattern(client, 'dca_class_2026_stack') class MetricsTree_Market_Dca_PeriodAveragePrice: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y: _0sdUsdPattern = _0sdUsdPattern(client, "10y_dca_average_price") - self._1m: _0sdUsdPattern = _0sdUsdPattern(client, "1m_dca_average_price") - self._1w: _0sdUsdPattern = _0sdUsdPattern(client, "1w_dca_average_price") - self._1y: _0sdUsdPattern = _0sdUsdPattern(client, "1y_dca_average_price") - self._2y: _0sdUsdPattern = _0sdUsdPattern(client, "2y_dca_average_price") - self._3m: _0sdUsdPattern = _0sdUsdPattern(client, "3m_dca_average_price") - self._3y: _0sdUsdPattern = _0sdUsdPattern(client, "3y_dca_average_price") - self._4y: _0sdUsdPattern = _0sdUsdPattern(client, "4y_dca_average_price") - self._5y: _0sdUsdPattern = _0sdUsdPattern(client, "5y_dca_average_price") - self._6m: _0sdUsdPattern = _0sdUsdPattern(client, "6m_dca_average_price") - self._6y: _0sdUsdPattern = _0sdUsdPattern(client, "6y_dca_average_price") - self._8y: _0sdUsdPattern = _0sdUsdPattern(client, "8y_dca_average_price") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._10y: _0sdUsdPattern = _0sdUsdPattern(client, '10y_dca_average_price') + self._1m: _0sdUsdPattern = _0sdUsdPattern(client, '1m_dca_average_price') + self._1w: _0sdUsdPattern = _0sdUsdPattern(client, '1w_dca_average_price') + self._1y: _0sdUsdPattern = _0sdUsdPattern(client, '1y_dca_average_price') + self._2y: _0sdUsdPattern = _0sdUsdPattern(client, '2y_dca_average_price') + self._3m: _0sdUsdPattern = _0sdUsdPattern(client, '3m_dca_average_price') + self._3y: _0sdUsdPattern = _0sdUsdPattern(client, '3y_dca_average_price') + self._4y: _0sdUsdPattern = _0sdUsdPattern(client, '4y_dca_average_price') + self._5y: _0sdUsdPattern = _0sdUsdPattern(client, '5y_dca_average_price') + self._6m: _0sdUsdPattern = _0sdUsdPattern(client, '6m_dca_average_price') + self._6y: _0sdUsdPattern = _0sdUsdPattern(client, '6y_dca_average_price') + self._8y: _0sdUsdPattern = _0sdUsdPattern(client, '8y_dca_average_price') class MetricsTree_Market_Dca: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.class_average_price: MetricsTree_Market_Dca_ClassAveragePrice = ( - MetricsTree_Market_Dca_ClassAveragePrice(client) - ) - self.class_days_in_loss: MetricsTree_Market_Dca_ClassDaysInLoss = ( - MetricsTree_Market_Dca_ClassDaysInLoss(client) - ) - self.class_days_in_profit: MetricsTree_Market_Dca_ClassDaysInProfit = ( - MetricsTree_Market_Dca_ClassDaysInProfit(client) - ) - self.class_max_drawdown: ClassDaysInLossPattern[StoredF32] = ( - ClassDaysInLossPattern(client, "dca_class") - ) - self.class_max_return: MetricsTree_Market_Dca_ClassMaxReturn = ( - MetricsTree_Market_Dca_ClassMaxReturn(client) - ) - self.class_returns: MetricsTree_Market_Dca_ClassReturns = ( - MetricsTree_Market_Dca_ClassReturns(client) - ) - self.class_stack: MetricsTree_Market_Dca_ClassStack = ( - MetricsTree_Market_Dca_ClassStack(client) - ) - self.period_average_price: MetricsTree_Market_Dca_PeriodAveragePrice = ( - MetricsTree_Market_Dca_PeriodAveragePrice(client) - ) - self.period_cagr: PeriodCagrPattern = PeriodCagrPattern(client, "dca_cagr") - self.period_days_in_loss: PeriodDaysInLossPattern[StoredU32] = ( - PeriodDaysInLossPattern(client, "dca_days_in_loss") - ) - self.period_days_in_profit: PeriodDaysInLossPattern[StoredU32] = ( - PeriodDaysInLossPattern(client, "dca_days_in_profit") - ) - self.period_lump_sum_days_in_loss: PeriodDaysInLossPattern[StoredU32] = ( - PeriodDaysInLossPattern(client, "lump_sum_days_in_loss") - ) - self.period_lump_sum_days_in_profit: PeriodDaysInLossPattern[StoredU32] = ( - PeriodDaysInLossPattern(client, "lump_sum_days_in_profit") - ) - self.period_lump_sum_max_drawdown: PeriodDaysInLossPattern[StoredF32] = ( - PeriodDaysInLossPattern(client, "lump_sum_max_drawdown") - ) - self.period_lump_sum_max_return: PeriodDaysInLossPattern[StoredF32] = ( - PeriodDaysInLossPattern(client, "lump_sum_max_return") - ) - self.period_lump_sum_returns: PeriodDaysInLossPattern[StoredF32] = ( - PeriodDaysInLossPattern(client, "lump_sum_returns") - ) - self.period_lump_sum_stack: PeriodLumpSumStackPattern = ( - PeriodLumpSumStackPattern(client, "lump_sum_stack") - ) - self.period_max_drawdown: PeriodDaysInLossPattern[StoredF32] = ( - PeriodDaysInLossPattern(client, "dca_max_drawdown") - ) - self.period_max_return: PeriodDaysInLossPattern[StoredF32] = ( - PeriodDaysInLossPattern(client, "dca_max_return") - ) - self.period_returns: PeriodDaysInLossPattern[StoredF32] = ( - PeriodDaysInLossPattern(client, "dca_returns") - ) - self.period_stack: PeriodLumpSumStackPattern = PeriodLumpSumStackPattern( - client, "dca_stack" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.class_average_price: MetricsTree_Market_Dca_ClassAveragePrice = MetricsTree_Market_Dca_ClassAveragePrice(client) + self.class_days_in_loss: MetricsTree_Market_Dca_ClassDaysInLoss = MetricsTree_Market_Dca_ClassDaysInLoss(client) + self.class_days_in_profit: ClassDaysInLossPattern[StoredU32] = ClassDaysInLossPattern(client, 'dca_class') + self.class_max_drawdown: MetricsTree_Market_Dca_ClassMaxDrawdown = MetricsTree_Market_Dca_ClassMaxDrawdown(client) + self.class_max_return: MetricsTree_Market_Dca_ClassMaxReturn = MetricsTree_Market_Dca_ClassMaxReturn(client) + self.class_returns: MetricsTree_Market_Dca_ClassReturns = MetricsTree_Market_Dca_ClassReturns(client) + self.class_stack: MetricsTree_Market_Dca_ClassStack = MetricsTree_Market_Dca_ClassStack(client) + self.period_average_price: MetricsTree_Market_Dca_PeriodAveragePrice = MetricsTree_Market_Dca_PeriodAveragePrice(client) + self.period_cagr: PeriodCagrPattern = PeriodCagrPattern(client, 'dca_cagr') + self.period_days_in_loss: PeriodDaysInLossPattern[StoredU32] = PeriodDaysInLossPattern(client, 'dca_days_in_loss') + self.period_days_in_profit: PeriodDaysInLossPattern[StoredU32] = PeriodDaysInLossPattern(client, 'dca_days_in_profit') + self.period_lump_sum_days_in_loss: PeriodDaysInLossPattern[StoredU32] = PeriodDaysInLossPattern(client, 'lump_sum_days_in_loss') + self.period_lump_sum_days_in_profit: PeriodDaysInLossPattern[StoredU32] = PeriodDaysInLossPattern(client, 'lump_sum_days_in_profit') + self.period_lump_sum_max_drawdown: PeriodDaysInLossPattern[StoredF32] = PeriodDaysInLossPattern(client, 'lump_sum_max_drawdown') + self.period_lump_sum_max_return: PeriodDaysInLossPattern[StoredF32] = PeriodDaysInLossPattern(client, 'lump_sum_max_return') + self.period_lump_sum_returns: PeriodDaysInLossPattern[StoredF32] = PeriodDaysInLossPattern(client, 'lump_sum_returns') + self.period_lump_sum_stack: PeriodLumpSumStackPattern = PeriodLumpSumStackPattern(client, 'lump_sum_stack') + self.period_max_drawdown: PeriodDaysInLossPattern[StoredF32] = PeriodDaysInLossPattern(client, 'dca_max_drawdown') + self.period_max_return: PeriodDaysInLossPattern[StoredF32] = PeriodDaysInLossPattern(client, 'dca_max_return') + self.period_returns: PeriodDaysInLossPattern[StoredF32] = PeriodDaysInLossPattern(client, 'dca_returns') + self.period_stack: PeriodLumpSumStackPattern = PeriodLumpSumStackPattern(client, 'dca_stack') class MetricsTree_Market_Indicators: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.gini: MetricPattern6[StoredF32] = MetricPattern6(client, "gini") - self.macd_histogram: MetricPattern6[StoredF32] = MetricPattern6( - client, "macd_histogram" - ) - self.macd_line: MetricPattern6[StoredF32] = MetricPattern6(client, "macd_line") - self.macd_signal: MetricPattern6[StoredF32] = MetricPattern6( - client, "macd_signal" - ) - self.nvt: MetricPattern4[StoredF32] = MetricPattern4(client, "nvt") - self.pi_cycle: MetricPattern6[StoredF32] = MetricPattern6(client, "pi_cycle") - self.puell_multiple: MetricPattern4[StoredF32] = MetricPattern4( - client, "puell_multiple" - ) - self.rsi_14d: MetricPattern6[StoredF32] = MetricPattern6(client, "rsi_14d") - self.rsi_14d_max: MetricPattern6[StoredF32] = MetricPattern6( - client, "rsi_14d_max" - ) - self.rsi_14d_min: MetricPattern6[StoredF32] = MetricPattern6( - client, "rsi_14d_min" - ) - self.rsi_average_gain_14d: MetricPattern6[StoredF32] = MetricPattern6( - client, "rsi_average_gain_14d" - ) - self.rsi_average_loss_14d: MetricPattern6[StoredF32] = MetricPattern6( - client, "rsi_average_loss_14d" - ) - self.rsi_gains: MetricPattern6[StoredF32] = MetricPattern6(client, "rsi_gains") - self.rsi_losses: MetricPattern6[StoredF32] = MetricPattern6( - client, "rsi_losses" - ) - self.stoch_d: MetricPattern6[StoredF32] = MetricPattern6(client, "stoch_d") - self.stoch_k: MetricPattern6[StoredF32] = MetricPattern6(client, "stoch_k") - self.stoch_rsi: MetricPattern6[StoredF32] = MetricPattern6(client, "stoch_rsi") - self.stoch_rsi_d: MetricPattern6[StoredF32] = MetricPattern6( - client, "stoch_rsi_d" - ) - self.stoch_rsi_k: MetricPattern6[StoredF32] = MetricPattern6( - client, "stoch_rsi_k" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.gini: MetricPattern6[StoredF32] = MetricPattern6(client, 'gini') + self.macd_histogram: MetricPattern6[StoredF32] = MetricPattern6(client, 'macd_histogram') + self.macd_line: MetricPattern6[StoredF32] = MetricPattern6(client, 'macd_line') + self.macd_signal: MetricPattern6[StoredF32] = MetricPattern6(client, 'macd_signal') + self.nvt: MetricPattern4[StoredF32] = MetricPattern4(client, 'nvt') + self.pi_cycle: MetricPattern6[StoredF32] = MetricPattern6(client, 'pi_cycle') + self.puell_multiple: MetricPattern4[StoredF32] = MetricPattern4(client, 'puell_multiple') + self.rsi_14d: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_14d') + self.rsi_14d_max: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_14d_max') + self.rsi_14d_min: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_14d_min') + self.rsi_average_gain_14d: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_average_gain_14d') + self.rsi_average_loss_14d: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_average_loss_14d') + self.rsi_gains: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_gains') + self.rsi_losses: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_losses') + self.stoch_d: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_d') + self.stoch_k: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_k') + self.stoch_rsi: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_rsi') + self.stoch_rsi_d: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_rsi_d') + self.stoch_rsi_k: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_rsi_k') class MetricsTree_Market_Lookback: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y: _0sdUsdPattern = _0sdUsdPattern(client, "price_10y_ago") - self._1d: _0sdUsdPattern = _0sdUsdPattern(client, "price_1d_ago") - self._1m: _0sdUsdPattern = _0sdUsdPattern(client, "price_1m_ago") - self._1w: _0sdUsdPattern = _0sdUsdPattern(client, "price_1w_ago") - self._1y: _0sdUsdPattern = _0sdUsdPattern(client, "price_1y_ago") - self._2y: _0sdUsdPattern = _0sdUsdPattern(client, "price_2y_ago") - self._3m: _0sdUsdPattern = _0sdUsdPattern(client, "price_3m_ago") - self._3y: _0sdUsdPattern = _0sdUsdPattern(client, "price_3y_ago") - self._4y: _0sdUsdPattern = _0sdUsdPattern(client, "price_4y_ago") - self._5y: _0sdUsdPattern = _0sdUsdPattern(client, "price_5y_ago") - self._6m: _0sdUsdPattern = _0sdUsdPattern(client, "price_6m_ago") - self._6y: _0sdUsdPattern = _0sdUsdPattern(client, "price_6y_ago") - self._8y: _0sdUsdPattern = _0sdUsdPattern(client, "price_8y_ago") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._10y: _0sdUsdPattern = _0sdUsdPattern(client, 'price_10y_ago') + self._1d: _0sdUsdPattern = _0sdUsdPattern(client, 'price_1d_ago') + self._1m: _0sdUsdPattern = _0sdUsdPattern(client, 'price_1m_ago') + self._1w: _0sdUsdPattern = _0sdUsdPattern(client, 'price_1w_ago') + self._1y: _0sdUsdPattern = _0sdUsdPattern(client, 'price_1y_ago') + self._2y: _0sdUsdPattern = _0sdUsdPattern(client, 'price_2y_ago') + self._3m: _0sdUsdPattern = _0sdUsdPattern(client, 'price_3m_ago') + self._3y: _0sdUsdPattern = _0sdUsdPattern(client, 'price_3y_ago') + self._4y: _0sdUsdPattern = _0sdUsdPattern(client, 'price_4y_ago') + self._5y: _0sdUsdPattern = _0sdUsdPattern(client, 'price_5y_ago') + self._6m: _0sdUsdPattern = _0sdUsdPattern(client, 'price_6m_ago') + self._6y: _0sdUsdPattern = _0sdUsdPattern(client, 'price_6y_ago') + self._8y: _0sdUsdPattern = _0sdUsdPattern(client, 'price_8y_ago') class MetricsTree_Market_MovingAverage: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.price_111d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_111d_sma" - ) - self.price_12d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_12d_ema" - ) - self.price_13d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_13d_ema" - ) - self.price_13d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_13d_sma" - ) - self.price_144d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_144d_ema" - ) - self.price_144d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_144d_sma" - ) - self.price_1m_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1m_ema" - ) - self.price_1m_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1m_sma" - ) - self.price_1w_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1w_ema" - ) - self.price_1w_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1w_sma" - ) - self.price_1y_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1y_ema" - ) - self.price_1y_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1y_sma" - ) - self.price_200d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_200d_ema" - ) - self.price_200d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_200d_sma" - ) - self.price_200d_sma_x0_8: _0sdUsdPattern = _0sdUsdPattern( - client, "price_200d_sma_x0_8" - ) - self.price_200d_sma_x2_4: _0sdUsdPattern = _0sdUsdPattern( - client, "price_200d_sma_x2_4" - ) - self.price_200w_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_200w_ema" - ) - self.price_200w_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_200w_sma" - ) - self.price_21d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_21d_ema" - ) - self.price_21d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_21d_sma" - ) - self.price_26d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_26d_ema" - ) - self.price_2y_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_2y_ema" - ) - self.price_2y_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_2y_sma" - ) - self.price_34d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_34d_ema" - ) - self.price_34d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_34d_sma" - ) - self.price_350d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_350d_sma" - ) - self.price_350d_sma_x2: _0sdUsdPattern = _0sdUsdPattern( - client, "price_350d_sma_x2" - ) - self.price_4y_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_4y_ema" - ) - self.price_4y_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_4y_sma" - ) - self.price_55d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_55d_ema" - ) - self.price_55d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_55d_sma" - ) - self.price_89d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_89d_ema" - ) - self.price_89d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_89d_sma" - ) - self.price_8d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_8d_ema" - ) - self.price_8d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_8d_sma" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.price_111d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_111d_sma') + self.price_12d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_12d_ema') + self.price_13d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_13d_ema') + self.price_13d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_13d_sma') + self.price_144d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_144d_ema') + self.price_144d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_144d_sma') + self.price_1m_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1m_ema') + self.price_1m_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1m_sma') + self.price_1w_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1w_ema') + self.price_1w_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1w_sma') + self.price_1y_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1y_ema') + self.price_1y_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1y_sma') + self.price_200d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_200d_ema') + self.price_200d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_200d_sma') + self.price_200d_sma_x0_8: _0sdUsdPattern = _0sdUsdPattern(client, 'price_200d_sma_x0_8') + self.price_200d_sma_x2_4: _0sdUsdPattern = _0sdUsdPattern(client, 'price_200d_sma_x2_4') + self.price_200w_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_200w_ema') + self.price_200w_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_200w_sma') + self.price_21d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_21d_ema') + self.price_21d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_21d_sma') + self.price_26d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_26d_ema') + self.price_2y_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_2y_ema') + self.price_2y_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_2y_sma') + self.price_34d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_34d_ema') + self.price_34d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_34d_sma') + self.price_350d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_350d_sma') + self.price_350d_sma_x2: _0sdUsdPattern = _0sdUsdPattern(client, 'price_350d_sma_x2') + self.price_4y_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_4y_ema') + self.price_4y_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_4y_sma') + self.price_55d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_55d_ema') + self.price_55d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_55d_sma') + self.price_89d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_89d_ema') + self.price_89d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_89d_sma') + self.price_8d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_8d_ema') + self.price_8d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_8d_sma') class MetricsTree_Market_Range: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.price_1m_max: _0sdUsdPattern = _0sdUsdPattern(client, "price_1m_max") - self.price_1m_min: _0sdUsdPattern = _0sdUsdPattern(client, "price_1m_min") - self.price_1w_max: _0sdUsdPattern = _0sdUsdPattern(client, "price_1w_max") - self.price_1w_min: _0sdUsdPattern = _0sdUsdPattern(client, "price_1w_min") - self.price_1y_max: _0sdUsdPattern = _0sdUsdPattern(client, "price_1y_max") - self.price_1y_min: _0sdUsdPattern = _0sdUsdPattern(client, "price_1y_min") - self.price_2w_choppiness_index: MetricPattern4[StoredF32] = MetricPattern4( - client, "price_2w_choppiness_index" - ) - self.price_2w_max: _0sdUsdPattern = _0sdUsdPattern(client, "price_2w_max") - self.price_2w_min: _0sdUsdPattern = _0sdUsdPattern(client, "price_2w_min") - self.price_true_range: MetricPattern6[StoredF32] = MetricPattern6( - client, "price_true_range" - ) - self.price_true_range_2w_sum: MetricPattern6[StoredF32] = MetricPattern6( - client, "price_true_range_2w_sum" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.price_1m_max: _0sdUsdPattern = _0sdUsdPattern(client, 'price_1m_max') + self.price_1m_min: _0sdUsdPattern = _0sdUsdPattern(client, 'price_1m_min') + self.price_1w_max: _0sdUsdPattern = _0sdUsdPattern(client, 'price_1w_max') + self.price_1w_min: _0sdUsdPattern = _0sdUsdPattern(client, 'price_1w_min') + self.price_1y_max: _0sdUsdPattern = _0sdUsdPattern(client, 'price_1y_max') + self.price_1y_min: _0sdUsdPattern = _0sdUsdPattern(client, 'price_1y_min') + self.price_2w_choppiness_index: MetricPattern4[StoredF32] = MetricPattern4(client, 'price_2w_choppiness_index') + self.price_2w_max: _0sdUsdPattern = _0sdUsdPattern(client, 'price_2w_max') + self.price_2w_min: _0sdUsdPattern = _0sdUsdPattern(client, 'price_2w_min') + self.price_true_range: MetricPattern6[StoredF32] = MetricPattern6(client, 'price_true_range') + self.price_true_range_2w_sum: MetricPattern6[StoredF32] = MetricPattern6(client, 'price_true_range_2w_sum') class MetricsTree_Market_Returns_PriceReturns: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y: MetricPattern4[StoredF32] = MetricPattern4( - client, "10y_price_returns" - ) - self._1d: MetricPattern4[StoredF32] = MetricPattern4(client, "1d_price_returns") - self._1m: MetricPattern4[StoredF32] = MetricPattern4(client, "1m_price_returns") - self._1w: MetricPattern4[StoredF32] = MetricPattern4(client, "1w_price_returns") - self._1y: MetricPattern4[StoredF32] = MetricPattern4(client, "1y_price_returns") - self._2y: MetricPattern4[StoredF32] = MetricPattern4(client, "2y_price_returns") - self._3m: MetricPattern4[StoredF32] = MetricPattern4(client, "3m_price_returns") - self._3y: MetricPattern4[StoredF32] = MetricPattern4(client, "3y_price_returns") - self._4y: MetricPattern4[StoredF32] = MetricPattern4(client, "4y_price_returns") - self._5y: MetricPattern4[StoredF32] = MetricPattern4(client, "5y_price_returns") - self._6m: MetricPattern4[StoredF32] = MetricPattern4(client, "6m_price_returns") - self._6y: MetricPattern4[StoredF32] = MetricPattern4(client, "6y_price_returns") - self._8y: MetricPattern4[StoredF32] = MetricPattern4(client, "8y_price_returns") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._10y: MetricPattern4[StoredF32] = MetricPattern4(client, '10y_price_returns') + self._1d: MetricPattern4[StoredF32] = MetricPattern4(client, '1d_price_returns') + self._1m: MetricPattern4[StoredF32] = MetricPattern4(client, '1m_price_returns') + self._1w: MetricPattern4[StoredF32] = MetricPattern4(client, '1w_price_returns') + self._1y: MetricPattern4[StoredF32] = MetricPattern4(client, '1y_price_returns') + self._2y: MetricPattern4[StoredF32] = MetricPattern4(client, '2y_price_returns') + self._3m: MetricPattern4[StoredF32] = MetricPattern4(client, '3m_price_returns') + self._3y: MetricPattern4[StoredF32] = MetricPattern4(client, '3y_price_returns') + self._4y: MetricPattern4[StoredF32] = MetricPattern4(client, '4y_price_returns') + self._5y: MetricPattern4[StoredF32] = MetricPattern4(client, '5y_price_returns') + self._6m: MetricPattern4[StoredF32] = MetricPattern4(client, '6m_price_returns') + self._6y: MetricPattern4[StoredF32] = MetricPattern4(client, '6y_price_returns') + self._8y: MetricPattern4[StoredF32] = MetricPattern4(client, '8y_price_returns') class MetricsTree_Market_Returns: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._1d_returns_1m_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "1d_returns_1m_sd" - ) - self._1d_returns_1w_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "1d_returns_1w_sd" - ) - self._1d_returns_1y_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "1d_returns_1y_sd" - ) - self.cagr: PeriodCagrPattern = PeriodCagrPattern(client, "cagr") - self.downside_1m_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "downside_1m_sd" - ) - self.downside_1w_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "downside_1w_sd" - ) - self.downside_1y_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "downside_1y_sd" - ) - self.downside_returns: MetricPattern6[StoredF32] = MetricPattern6( - client, "downside_returns" - ) - self.price_returns: MetricsTree_Market_Returns_PriceReturns = ( - MetricsTree_Market_Returns_PriceReturns(client) - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._1d_returns_1m_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, '1d_returns_1m_sd') + self._1d_returns_1w_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, '1d_returns_1w_sd') + self._1d_returns_1y_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, '1d_returns_1y_sd') + self.cagr: PeriodCagrPattern = PeriodCagrPattern(client, 'cagr') + self.downside_1m_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, 'downside_1m_sd') + self.downside_1w_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, 'downside_1w_sd') + self.downside_1y_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, 'downside_1y_sd') + self.downside_returns: MetricPattern6[StoredF32] = MetricPattern6(client, 'downside_returns') + self.price_returns: MetricsTree_Market_Returns_PriceReturns = MetricsTree_Market_Returns_PriceReturns(client) class MetricsTree_Market_Volatility: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.price_1m_volatility: MetricPattern4[StoredF32] = MetricPattern4( - client, "price_1m_volatility" - ) - self.price_1w_volatility: MetricPattern4[StoredF32] = MetricPattern4( - client, "price_1w_volatility" - ) - self.price_1y_volatility: MetricPattern4[StoredF32] = MetricPattern4( - client, "price_1y_volatility" - ) - self.sharpe_1m: MetricPattern6[StoredF32] = MetricPattern6(client, "sharpe_1m") - self.sharpe_1w: MetricPattern6[StoredF32] = MetricPattern6(client, "sharpe_1w") - self.sharpe_1y: MetricPattern6[StoredF32] = MetricPattern6(client, "sharpe_1y") - self.sortino_1m: MetricPattern6[StoredF32] = MetricPattern6( - client, "sortino_1m" - ) - self.sortino_1w: MetricPattern6[StoredF32] = MetricPattern6( - client, "sortino_1w" - ) - self.sortino_1y: MetricPattern6[StoredF32] = MetricPattern6( - client, "sortino_1y" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.price_1m_volatility: MetricPattern4[StoredF32] = MetricPattern4(client, 'price_1m_volatility') + self.price_1w_volatility: MetricPattern4[StoredF32] = MetricPattern4(client, 'price_1w_volatility') + self.price_1y_volatility: MetricPattern4[StoredF32] = MetricPattern4(client, 'price_1y_volatility') + self.sharpe_1m: MetricPattern6[StoredF32] = MetricPattern6(client, 'sharpe_1m') + self.sharpe_1w: MetricPattern6[StoredF32] = MetricPattern6(client, 'sharpe_1w') + self.sharpe_1y: MetricPattern6[StoredF32] = MetricPattern6(client, 'sharpe_1y') + self.sortino_1m: MetricPattern6[StoredF32] = MetricPattern6(client, 'sortino_1m') + self.sortino_1w: MetricPattern6[StoredF32] = MetricPattern6(client, 'sortino_1w') + self.sortino_1y: MetricPattern6[StoredF32] = MetricPattern6(client, 'sortino_1y') class MetricsTree_Market: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): + + def __init__(self, client: BrkClientBase, base_path: str = ''): self.ath: MetricsTree_Market_Ath = MetricsTree_Market_Ath(client) self.dca: MetricsTree_Market_Dca = MetricsTree_Market_Dca(client) - self.indicators: MetricsTree_Market_Indicators = MetricsTree_Market_Indicators( - client - ) + self.indicators: MetricsTree_Market_Indicators = MetricsTree_Market_Indicators(client) self.lookback: MetricsTree_Market_Lookback = MetricsTree_Market_Lookback(client) - self.moving_average: MetricsTree_Market_MovingAverage = ( - MetricsTree_Market_MovingAverage(client) - ) + self.moving_average: MetricsTree_Market_MovingAverage = MetricsTree_Market_MovingAverage(client) self.range: MetricsTree_Market_Range = MetricsTree_Market_Range(client) self.returns: MetricsTree_Market_Returns = MetricsTree_Market_Returns(client) - self.volatility: MetricsTree_Market_Volatility = MetricsTree_Market_Volatility( - client - ) - + self.volatility: MetricsTree_Market_Volatility = MetricsTree_Market_Volatility(client) class MetricsTree_Outputs_Count: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.total_count: CountPattern2[StoredU64] = CountPattern2( - client, "output_count" - ) - self.utxo_count: MetricPattern1[StoredU64] = MetricPattern1( - client, "exact_utxo_count" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.total_count: CountPattern2[StoredU64] = CountPattern2(client, 'output_count') + self.utxo_count: MetricPattern1[StoredU64] = MetricPattern1(client, 'exact_utxo_count') class MetricsTree_Outputs_Spent: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.txinindex: MetricPattern15[TxInIndex] = MetricPattern15( - client, "txinindex" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.txinindex: MetricPattern15[TxInIndex] = MetricPattern15(client, 'txinindex') class MetricsTree_Outputs: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): + + def __init__(self, client: BrkClientBase, base_path: str = ''): self.count: MetricsTree_Outputs_Count = MetricsTree_Outputs_Count(client) - self.first_txoutindex: MetricPattern11[TxOutIndex] = MetricPattern11( - client, "first_txoutindex" - ) - self.outputtype: MetricPattern15[OutputType] = MetricPattern15( - client, "outputtype" - ) + self.first_txoutindex: MetricPattern11[TxOutIndex] = MetricPattern11(client, 'first_txoutindex') + self.outputtype: MetricPattern15[OutputType] = MetricPattern15(client, 'outputtype') self.spent: MetricsTree_Outputs_Spent = MetricsTree_Outputs_Spent(client) - self.txindex: MetricPattern15[TxIndex] = MetricPattern15(client, "txindex") - self.typeindex: MetricPattern15[TypeIndex] = MetricPattern15( - client, "typeindex" - ) - self.value: MetricPattern15[Sats] = MetricPattern15(client, "value") - + self.txindex: MetricPattern15[TxIndex] = MetricPattern15(client, 'txindex') + self.typeindex: MetricPattern15[TypeIndex] = MetricPattern15(client, 'typeindex') + self.value: MetricPattern15[Sats] = MetricPattern15(client, 'value') class MetricsTree_Pools_Vecs: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.aaopool: AaopoolPattern = AaopoolPattern(client, "aaopool") - self.antpool: AaopoolPattern = AaopoolPattern(client, "antpool") - self.arkpool: AaopoolPattern = AaopoolPattern(client, "arkpool") - self.asicminer: AaopoolPattern = AaopoolPattern(client, "asicminer") - self.axbt: AaopoolPattern = AaopoolPattern(client, "axbt") - self.batpool: AaopoolPattern = AaopoolPattern(client, "batpool") - self.bcmonster: AaopoolPattern = AaopoolPattern(client, "bcmonster") - self.bcpoolio: AaopoolPattern = AaopoolPattern(client, "bcpoolio") - self.binancepool: AaopoolPattern = AaopoolPattern(client, "binancepool") - self.bitalo: AaopoolPattern = AaopoolPattern(client, "bitalo") - self.bitclub: AaopoolPattern = AaopoolPattern(client, "bitclub") - self.bitcoinaffiliatenetwork: AaopoolPattern = AaopoolPattern( - client, "bitcoinaffiliatenetwork" - ) - self.bitcoincom: AaopoolPattern = AaopoolPattern(client, "bitcoincom") - self.bitcoinindia: AaopoolPattern = AaopoolPattern(client, "bitcoinindia") - self.bitcoinrussia: AaopoolPattern = AaopoolPattern(client, "bitcoinrussia") - self.bitcoinukraine: AaopoolPattern = AaopoolPattern(client, "bitcoinukraine") - self.bitfarms: AaopoolPattern = AaopoolPattern(client, "bitfarms") - self.bitfufupool: AaopoolPattern = AaopoolPattern(client, "bitfufupool") - self.bitfury: AaopoolPattern = AaopoolPattern(client, "bitfury") - self.bitminter: AaopoolPattern = AaopoolPattern(client, "bitminter") - self.bitparking: AaopoolPattern = AaopoolPattern(client, "bitparking") - self.bitsolo: AaopoolPattern = AaopoolPattern(client, "bitsolo") - self.bixin: AaopoolPattern = AaopoolPattern(client, "bixin") - self.blockfills: AaopoolPattern = AaopoolPattern(client, "blockfills") - self.braiinspool: AaopoolPattern = AaopoolPattern(client, "braiinspool") - self.bravomining: AaopoolPattern = AaopoolPattern(client, "bravomining") - self.btcc: AaopoolPattern = AaopoolPattern(client, "btcc") - self.btccom: AaopoolPattern = AaopoolPattern(client, "btccom") - self.btcdig: AaopoolPattern = AaopoolPattern(client, "btcdig") - self.btcguild: AaopoolPattern = AaopoolPattern(client, "btcguild") - self.btclab: AaopoolPattern = AaopoolPattern(client, "btclab") - self.btcmp: AaopoolPattern = AaopoolPattern(client, "btcmp") - self.btcnuggets: AaopoolPattern = AaopoolPattern(client, "btcnuggets") - self.btcpoolparty: AaopoolPattern = AaopoolPattern(client, "btcpoolparty") - self.btcserv: AaopoolPattern = AaopoolPattern(client, "btcserv") - self.btctop: AaopoolPattern = AaopoolPattern(client, "btctop") - self.btpool: AaopoolPattern = AaopoolPattern(client, "btpool") - self.bwpool: AaopoolPattern = AaopoolPattern(client, "bwpool") - self.bytepool: AaopoolPattern = AaopoolPattern(client, "bytepool") - self.canoe: AaopoolPattern = AaopoolPattern(client, "canoe") - self.canoepool: AaopoolPattern = AaopoolPattern(client, "canoepool") - self.carbonnegative: AaopoolPattern = AaopoolPattern(client, "carbonnegative") - self.ckpool: AaopoolPattern = AaopoolPattern(client, "ckpool") - self.cloudhashing: AaopoolPattern = AaopoolPattern(client, "cloudhashing") - self.coinlab: AaopoolPattern = AaopoolPattern(client, "coinlab") - self.cointerra: AaopoolPattern = AaopoolPattern(client, "cointerra") - self.connectbtc: AaopoolPattern = AaopoolPattern(client, "connectbtc") - self.dcex: AaopoolPattern = AaopoolPattern(client, "dcex") - self.dcexploration: AaopoolPattern = AaopoolPattern(client, "dcexploration") - self.digitalbtc: AaopoolPattern = AaopoolPattern(client, "digitalbtc") - self.digitalxmintsy: AaopoolPattern = AaopoolPattern(client, "digitalxmintsy") - self.dpool: AaopoolPattern = AaopoolPattern(client, "dpool") - self.eclipsemc: AaopoolPattern = AaopoolPattern(client, "eclipsemc") - self.eightbaochi: AaopoolPattern = AaopoolPattern(client, "eightbaochi") - self.ekanembtc: AaopoolPattern = AaopoolPattern(client, "ekanembtc") - self.eligius: AaopoolPattern = AaopoolPattern(client, "eligius") - self.emcdpool: AaopoolPattern = AaopoolPattern(client, "emcdpool") - self.entrustcharitypool: AaopoolPattern = AaopoolPattern( - client, "entrustcharitypool" - ) - self.eobot: AaopoolPattern = AaopoolPattern(client, "eobot") - self.exxbw: AaopoolPattern = AaopoolPattern(client, "exxbw") - self.f2pool: AaopoolPattern = AaopoolPattern(client, "f2pool") - self.fiftyeightcoin: AaopoolPattern = AaopoolPattern(client, "fiftyeightcoin") - self.foundryusa: AaopoolPattern = AaopoolPattern(client, "foundryusa") - self.futurebitapollosolo: AaopoolPattern = AaopoolPattern( - client, "futurebitapollosolo" - ) - self.gbminers: AaopoolPattern = AaopoolPattern(client, "gbminers") - self.ghashio: AaopoolPattern = AaopoolPattern(client, "ghashio") - self.givemecoins: AaopoolPattern = AaopoolPattern(client, "givemecoins") - self.gogreenlight: AaopoolPattern = AaopoolPattern(client, "gogreenlight") - self.haominer: AaopoolPattern = AaopoolPattern(client, "haominer") - self.haozhuzhu: AaopoolPattern = AaopoolPattern(client, "haozhuzhu") - self.hashbx: AaopoolPattern = AaopoolPattern(client, "hashbx") - self.hashpool: AaopoolPattern = AaopoolPattern(client, "hashpool") - self.helix: AaopoolPattern = AaopoolPattern(client, "helix") - self.hhtt: AaopoolPattern = AaopoolPattern(client, "hhtt") - self.hotpool: AaopoolPattern = AaopoolPattern(client, "hotpool") - self.hummerpool: AaopoolPattern = AaopoolPattern(client, "hummerpool") - self.huobipool: AaopoolPattern = AaopoolPattern(client, "huobipool") - self.innopolistech: AaopoolPattern = AaopoolPattern(client, "innopolistech") - self.kanopool: AaopoolPattern = AaopoolPattern(client, "kanopool") - self.kncminer: AaopoolPattern = AaopoolPattern(client, "kncminer") - self.kucoinpool: AaopoolPattern = AaopoolPattern(client, "kucoinpool") - self.lubiancom: AaopoolPattern = AaopoolPattern(client, "lubiancom") - self.luckypool: AaopoolPattern = AaopoolPattern(client, "luckypool") - self.luxor: AaopoolPattern = AaopoolPattern(client, "luxor") - self.marapool: AaopoolPattern = AaopoolPattern(client, "marapool") - self.maxbtc: AaopoolPattern = AaopoolPattern(client, "maxbtc") - self.maxipool: AaopoolPattern = AaopoolPattern(client, "maxipool") - self.megabigpower: AaopoolPattern = AaopoolPattern(client, "megabigpower") - self.minerium: AaopoolPattern = AaopoolPattern(client, "minerium") - self.miningcity: AaopoolPattern = AaopoolPattern(client, "miningcity") - self.miningdutch: AaopoolPattern = AaopoolPattern(client, "miningdutch") - self.miningkings: AaopoolPattern = AaopoolPattern(client, "miningkings") - self.miningsquared: AaopoolPattern = AaopoolPattern(client, "miningsquared") - self.mmpool: AaopoolPattern = AaopoolPattern(client, "mmpool") - self.mtred: AaopoolPattern = AaopoolPattern(client, "mtred") - self.multicoinco: AaopoolPattern = AaopoolPattern(client, "multicoinco") - self.multipool: AaopoolPattern = AaopoolPattern(client, "multipool") - self.mybtccoinpool: AaopoolPattern = AaopoolPattern(client, "mybtccoinpool") - self.neopool: AaopoolPattern = AaopoolPattern(client, "neopool") - self.nexious: AaopoolPattern = AaopoolPattern(client, "nexious") - self.nicehash: AaopoolPattern = AaopoolPattern(client, "nicehash") - self.nmcbit: AaopoolPattern = AaopoolPattern(client, "nmcbit") - self.novablock: AaopoolPattern = AaopoolPattern(client, "novablock") - self.ocean: AaopoolPattern = AaopoolPattern(client, "ocean") - self.okexpool: AaopoolPattern = AaopoolPattern(client, "okexpool") - self.okkong: AaopoolPattern = AaopoolPattern(client, "okkong") - self.okminer: AaopoolPattern = AaopoolPattern(client, "okminer") - self.okpooltop: AaopoolPattern = AaopoolPattern(client, "okpooltop") - self.onehash: AaopoolPattern = AaopoolPattern(client, "onehash") - self.onem1x: AaopoolPattern = AaopoolPattern(client, "onem1x") - self.onethash: AaopoolPattern = AaopoolPattern(client, "onethash") - self.ozcoin: AaopoolPattern = AaopoolPattern(client, "ozcoin") - self.parasite: AaopoolPattern = AaopoolPattern(client, "parasite") - self.patels: AaopoolPattern = AaopoolPattern(client, "patels") - self.pegapool: AaopoolPattern = AaopoolPattern(client, "pegapool") - self.phashio: AaopoolPattern = AaopoolPattern(client, "phashio") - self.phoenix: AaopoolPattern = AaopoolPattern(client, "phoenix") - self.polmine: AaopoolPattern = AaopoolPattern(client, "polmine") - self.pool175btc: AaopoolPattern = AaopoolPattern(client, "pool175btc") - self.pool50btc: AaopoolPattern = AaopoolPattern(client, "pool50btc") - self.poolin: AaopoolPattern = AaopoolPattern(client, "poolin") - self.portlandhodl: AaopoolPattern = AaopoolPattern(client, "portlandhodl") - self.publicpool: AaopoolPattern = AaopoolPattern(client, "publicpool") - self.purebtccom: AaopoolPattern = AaopoolPattern(client, "purebtccom") - self.rawpool: AaopoolPattern = AaopoolPattern(client, "rawpool") - self.rigpool: AaopoolPattern = AaopoolPattern(client, "rigpool") - self.sbicrypto: AaopoolPattern = AaopoolPattern(client, "sbicrypto") - self.secpool: AaopoolPattern = AaopoolPattern(client, "secpool") - self.secretsuperstar: AaopoolPattern = AaopoolPattern(client, "secretsuperstar") - self.sevenpool: AaopoolPattern = AaopoolPattern(client, "sevenpool") - self.shawnp0wers: AaopoolPattern = AaopoolPattern(client, "shawnp0wers") - self.sigmapoolcom: AaopoolPattern = AaopoolPattern(client, "sigmapoolcom") - self.simplecoinus: AaopoolPattern = AaopoolPattern(client, "simplecoinus") - self.solock: AaopoolPattern = AaopoolPattern(client, "solock") - self.spiderpool: AaopoolPattern = AaopoolPattern(client, "spiderpool") - self.stminingcorp: AaopoolPattern = AaopoolPattern(client, "stminingcorp") - self.tangpool: AaopoolPattern = AaopoolPattern(client, "tangpool") - self.tatmaspool: AaopoolPattern = AaopoolPattern(client, "tatmaspool") - self.tbdice: AaopoolPattern = AaopoolPattern(client, "tbdice") - self.telco214: AaopoolPattern = AaopoolPattern(client, "telco214") - self.terrapool: AaopoolPattern = AaopoolPattern(client, "terrapool") - self.tiger: AaopoolPattern = AaopoolPattern(client, "tiger") - self.tigerpoolnet: AaopoolPattern = AaopoolPattern(client, "tigerpoolnet") - self.titan: AaopoolPattern = AaopoolPattern(client, "titan") - self.transactioncoinmining: AaopoolPattern = AaopoolPattern( - client, "transactioncoinmining" - ) - self.trickysbtcpool: AaopoolPattern = AaopoolPattern(client, "trickysbtcpool") - self.triplemining: AaopoolPattern = AaopoolPattern(client, "triplemining") - self.twentyoneinc: AaopoolPattern = AaopoolPattern(client, "twentyoneinc") - self.ultimuspool: AaopoolPattern = AaopoolPattern(client, "ultimuspool") - self.unknown: AaopoolPattern = AaopoolPattern(client, "unknown") - self.unomp: AaopoolPattern = AaopoolPattern(client, "unomp") - self.viabtc: AaopoolPattern = AaopoolPattern(client, "viabtc") - self.waterhole: AaopoolPattern = AaopoolPattern(client, "waterhole") - self.wayicn: AaopoolPattern = AaopoolPattern(client, "wayicn") - self.whitepool: AaopoolPattern = AaopoolPattern(client, "whitepool") - self.wk057: AaopoolPattern = AaopoolPattern(client, "wk057") - self.yourbtcnet: AaopoolPattern = AaopoolPattern(client, "yourbtcnet") - self.zulupool: AaopoolPattern = AaopoolPattern(client, "zulupool") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.aaopool: AaopoolPattern = AaopoolPattern(client, 'aaopool') + self.antpool: AaopoolPattern = AaopoolPattern(client, 'antpool') + self.arkpool: AaopoolPattern = AaopoolPattern(client, 'arkpool') + self.asicminer: AaopoolPattern = AaopoolPattern(client, 'asicminer') + self.axbt: AaopoolPattern = AaopoolPattern(client, 'axbt') + self.batpool: AaopoolPattern = AaopoolPattern(client, 'batpool') + self.bcmonster: AaopoolPattern = AaopoolPattern(client, 'bcmonster') + self.bcpoolio: AaopoolPattern = AaopoolPattern(client, 'bcpoolio') + self.binancepool: AaopoolPattern = AaopoolPattern(client, 'binancepool') + self.bitalo: AaopoolPattern = AaopoolPattern(client, 'bitalo') + self.bitclub: AaopoolPattern = AaopoolPattern(client, 'bitclub') + self.bitcoinaffiliatenetwork: AaopoolPattern = AaopoolPattern(client, 'bitcoinaffiliatenetwork') + self.bitcoincom: AaopoolPattern = AaopoolPattern(client, 'bitcoincom') + self.bitcoinindia: AaopoolPattern = AaopoolPattern(client, 'bitcoinindia') + self.bitcoinrussia: AaopoolPattern = AaopoolPattern(client, 'bitcoinrussia') + self.bitcoinukraine: AaopoolPattern = AaopoolPattern(client, 'bitcoinukraine') + self.bitfarms: AaopoolPattern = AaopoolPattern(client, 'bitfarms') + self.bitfufupool: AaopoolPattern = AaopoolPattern(client, 'bitfufupool') + self.bitfury: AaopoolPattern = AaopoolPattern(client, 'bitfury') + self.bitminter: AaopoolPattern = AaopoolPattern(client, 'bitminter') + self.bitparking: AaopoolPattern = AaopoolPattern(client, 'bitparking') + self.bitsolo: AaopoolPattern = AaopoolPattern(client, 'bitsolo') + self.bixin: AaopoolPattern = AaopoolPattern(client, 'bixin') + self.blockfills: AaopoolPattern = AaopoolPattern(client, 'blockfills') + self.braiinspool: AaopoolPattern = AaopoolPattern(client, 'braiinspool') + self.bravomining: AaopoolPattern = AaopoolPattern(client, 'bravomining') + self.btcc: AaopoolPattern = AaopoolPattern(client, 'btcc') + self.btccom: AaopoolPattern = AaopoolPattern(client, 'btccom') + self.btcdig: AaopoolPattern = AaopoolPattern(client, 'btcdig') + self.btcguild: AaopoolPattern = AaopoolPattern(client, 'btcguild') + self.btclab: AaopoolPattern = AaopoolPattern(client, 'btclab') + self.btcmp: AaopoolPattern = AaopoolPattern(client, 'btcmp') + self.btcnuggets: AaopoolPattern = AaopoolPattern(client, 'btcnuggets') + self.btcpoolparty: AaopoolPattern = AaopoolPattern(client, 'btcpoolparty') + self.btcserv: AaopoolPattern = AaopoolPattern(client, 'btcserv') + self.btctop: AaopoolPattern = AaopoolPattern(client, 'btctop') + self.btpool: AaopoolPattern = AaopoolPattern(client, 'btpool') + self.bwpool: AaopoolPattern = AaopoolPattern(client, 'bwpool') + self.bytepool: AaopoolPattern = AaopoolPattern(client, 'bytepool') + self.canoe: AaopoolPattern = AaopoolPattern(client, 'canoe') + self.canoepool: AaopoolPattern = AaopoolPattern(client, 'canoepool') + self.carbonnegative: AaopoolPattern = AaopoolPattern(client, 'carbonnegative') + self.ckpool: AaopoolPattern = AaopoolPattern(client, 'ckpool') + self.cloudhashing: AaopoolPattern = AaopoolPattern(client, 'cloudhashing') + self.coinlab: AaopoolPattern = AaopoolPattern(client, 'coinlab') + self.cointerra: AaopoolPattern = AaopoolPattern(client, 'cointerra') + self.connectbtc: AaopoolPattern = AaopoolPattern(client, 'connectbtc') + self.dcex: AaopoolPattern = AaopoolPattern(client, 'dcex') + self.dcexploration: AaopoolPattern = AaopoolPattern(client, 'dcexploration') + self.digitalbtc: AaopoolPattern = AaopoolPattern(client, 'digitalbtc') + self.digitalxmintsy: AaopoolPattern = AaopoolPattern(client, 'digitalxmintsy') + self.dpool: AaopoolPattern = AaopoolPattern(client, 'dpool') + self.eclipsemc: AaopoolPattern = AaopoolPattern(client, 'eclipsemc') + self.eightbaochi: AaopoolPattern = AaopoolPattern(client, 'eightbaochi') + self.ekanembtc: AaopoolPattern = AaopoolPattern(client, 'ekanembtc') + self.eligius: AaopoolPattern = AaopoolPattern(client, 'eligius') + self.emcdpool: AaopoolPattern = AaopoolPattern(client, 'emcdpool') + self.entrustcharitypool: AaopoolPattern = AaopoolPattern(client, 'entrustcharitypool') + self.eobot: AaopoolPattern = AaopoolPattern(client, 'eobot') + self.exxbw: AaopoolPattern = AaopoolPattern(client, 'exxbw') + self.f2pool: AaopoolPattern = AaopoolPattern(client, 'f2pool') + self.fiftyeightcoin: AaopoolPattern = AaopoolPattern(client, 'fiftyeightcoin') + self.foundryusa: AaopoolPattern = AaopoolPattern(client, 'foundryusa') + self.futurebitapollosolo: AaopoolPattern = AaopoolPattern(client, 'futurebitapollosolo') + self.gbminers: AaopoolPattern = AaopoolPattern(client, 'gbminers') + self.ghashio: AaopoolPattern = AaopoolPattern(client, 'ghashio') + self.givemecoins: AaopoolPattern = AaopoolPattern(client, 'givemecoins') + self.gogreenlight: AaopoolPattern = AaopoolPattern(client, 'gogreenlight') + self.haominer: AaopoolPattern = AaopoolPattern(client, 'haominer') + self.haozhuzhu: AaopoolPattern = AaopoolPattern(client, 'haozhuzhu') + self.hashbx: AaopoolPattern = AaopoolPattern(client, 'hashbx') + self.hashpool: AaopoolPattern = AaopoolPattern(client, 'hashpool') + self.helix: AaopoolPattern = AaopoolPattern(client, 'helix') + self.hhtt: AaopoolPattern = AaopoolPattern(client, 'hhtt') + self.hotpool: AaopoolPattern = AaopoolPattern(client, 'hotpool') + self.hummerpool: AaopoolPattern = AaopoolPattern(client, 'hummerpool') + self.huobipool: AaopoolPattern = AaopoolPattern(client, 'huobipool') + self.innopolistech: AaopoolPattern = AaopoolPattern(client, 'innopolistech') + self.kanopool: AaopoolPattern = AaopoolPattern(client, 'kanopool') + self.kncminer: AaopoolPattern = AaopoolPattern(client, 'kncminer') + self.kucoinpool: AaopoolPattern = AaopoolPattern(client, 'kucoinpool') + self.lubiancom: AaopoolPattern = AaopoolPattern(client, 'lubiancom') + self.luckypool: AaopoolPattern = AaopoolPattern(client, 'luckypool') + self.luxor: AaopoolPattern = AaopoolPattern(client, 'luxor') + self.marapool: AaopoolPattern = AaopoolPattern(client, 'marapool') + self.maxbtc: AaopoolPattern = AaopoolPattern(client, 'maxbtc') + self.maxipool: AaopoolPattern = AaopoolPattern(client, 'maxipool') + self.megabigpower: AaopoolPattern = AaopoolPattern(client, 'megabigpower') + self.minerium: AaopoolPattern = AaopoolPattern(client, 'minerium') + self.miningcity: AaopoolPattern = AaopoolPattern(client, 'miningcity') + self.miningdutch: AaopoolPattern = AaopoolPattern(client, 'miningdutch') + self.miningkings: AaopoolPattern = AaopoolPattern(client, 'miningkings') + self.miningsquared: AaopoolPattern = AaopoolPattern(client, 'miningsquared') + self.mmpool: AaopoolPattern = AaopoolPattern(client, 'mmpool') + self.mtred: AaopoolPattern = AaopoolPattern(client, 'mtred') + self.multicoinco: AaopoolPattern = AaopoolPattern(client, 'multicoinco') + self.multipool: AaopoolPattern = AaopoolPattern(client, 'multipool') + self.mybtccoinpool: AaopoolPattern = AaopoolPattern(client, 'mybtccoinpool') + self.neopool: AaopoolPattern = AaopoolPattern(client, 'neopool') + self.nexious: AaopoolPattern = AaopoolPattern(client, 'nexious') + self.nicehash: AaopoolPattern = AaopoolPattern(client, 'nicehash') + self.nmcbit: AaopoolPattern = AaopoolPattern(client, 'nmcbit') + self.novablock: AaopoolPattern = AaopoolPattern(client, 'novablock') + self.ocean: AaopoolPattern = AaopoolPattern(client, 'ocean') + self.okexpool: AaopoolPattern = AaopoolPattern(client, 'okexpool') + self.okkong: AaopoolPattern = AaopoolPattern(client, 'okkong') + self.okminer: AaopoolPattern = AaopoolPattern(client, 'okminer') + self.okpooltop: AaopoolPattern = AaopoolPattern(client, 'okpooltop') + self.onehash: AaopoolPattern = AaopoolPattern(client, 'onehash') + self.onem1x: AaopoolPattern = AaopoolPattern(client, 'onem1x') + self.onethash: AaopoolPattern = AaopoolPattern(client, 'onethash') + self.ozcoin: AaopoolPattern = AaopoolPattern(client, 'ozcoin') + self.parasite: AaopoolPattern = AaopoolPattern(client, 'parasite') + self.patels: AaopoolPattern = AaopoolPattern(client, 'patels') + self.pegapool: AaopoolPattern = AaopoolPattern(client, 'pegapool') + self.phashio: AaopoolPattern = AaopoolPattern(client, 'phashio') + self.phoenix: AaopoolPattern = AaopoolPattern(client, 'phoenix') + self.polmine: AaopoolPattern = AaopoolPattern(client, 'polmine') + self.pool175btc: AaopoolPattern = AaopoolPattern(client, 'pool175btc') + self.pool50btc: AaopoolPattern = AaopoolPattern(client, 'pool50btc') + self.poolin: AaopoolPattern = AaopoolPattern(client, 'poolin') + self.portlandhodl: AaopoolPattern = AaopoolPattern(client, 'portlandhodl') + self.publicpool: AaopoolPattern = AaopoolPattern(client, 'publicpool') + self.purebtccom: AaopoolPattern = AaopoolPattern(client, 'purebtccom') + self.rawpool: AaopoolPattern = AaopoolPattern(client, 'rawpool') + self.rigpool: AaopoolPattern = AaopoolPattern(client, 'rigpool') + self.sbicrypto: AaopoolPattern = AaopoolPattern(client, 'sbicrypto') + self.secpool: AaopoolPattern = AaopoolPattern(client, 'secpool') + self.secretsuperstar: AaopoolPattern = AaopoolPattern(client, 'secretsuperstar') + self.sevenpool: AaopoolPattern = AaopoolPattern(client, 'sevenpool') + self.shawnp0wers: AaopoolPattern = AaopoolPattern(client, 'shawnp0wers') + self.sigmapoolcom: AaopoolPattern = AaopoolPattern(client, 'sigmapoolcom') + self.simplecoinus: AaopoolPattern = AaopoolPattern(client, 'simplecoinus') + self.solock: AaopoolPattern = AaopoolPattern(client, 'solock') + self.spiderpool: AaopoolPattern = AaopoolPattern(client, 'spiderpool') + self.stminingcorp: AaopoolPattern = AaopoolPattern(client, 'stminingcorp') + self.tangpool: AaopoolPattern = AaopoolPattern(client, 'tangpool') + self.tatmaspool: AaopoolPattern = AaopoolPattern(client, 'tatmaspool') + self.tbdice: AaopoolPattern = AaopoolPattern(client, 'tbdice') + self.telco214: AaopoolPattern = AaopoolPattern(client, 'telco214') + self.terrapool: AaopoolPattern = AaopoolPattern(client, 'terrapool') + self.tiger: AaopoolPattern = AaopoolPattern(client, 'tiger') + self.tigerpoolnet: AaopoolPattern = AaopoolPattern(client, 'tigerpoolnet') + self.titan: AaopoolPattern = AaopoolPattern(client, 'titan') + self.transactioncoinmining: AaopoolPattern = AaopoolPattern(client, 'transactioncoinmining') + self.trickysbtcpool: AaopoolPattern = AaopoolPattern(client, 'trickysbtcpool') + self.triplemining: AaopoolPattern = AaopoolPattern(client, 'triplemining') + self.twentyoneinc: AaopoolPattern = AaopoolPattern(client, 'twentyoneinc') + self.ultimuspool: AaopoolPattern = AaopoolPattern(client, 'ultimuspool') + self.unknown: AaopoolPattern = AaopoolPattern(client, 'unknown') + self.unomp: AaopoolPattern = AaopoolPattern(client, 'unomp') + self.viabtc: AaopoolPattern = AaopoolPattern(client, 'viabtc') + self.waterhole: AaopoolPattern = AaopoolPattern(client, 'waterhole') + self.wayicn: AaopoolPattern = AaopoolPattern(client, 'wayicn') + self.whitepool: AaopoolPattern = AaopoolPattern(client, 'whitepool') + self.wk057: AaopoolPattern = AaopoolPattern(client, 'wk057') + self.yourbtcnet: AaopoolPattern = AaopoolPattern(client, 'yourbtcnet') + self.zulupool: AaopoolPattern = AaopoolPattern(client, 'zulupool') class MetricsTree_Pools: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.height_to_pool: MetricPattern11[PoolSlug] = MetricPattern11(client, "pool") + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.height_to_pool: MetricPattern11[PoolSlug] = MetricPattern11(client, 'pool') self.vecs: MetricsTree_Pools_Vecs = MetricsTree_Pools_Vecs(client) - class MetricsTree_Positions: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.block_position: MetricPattern11[BlkPosition] = MetricPattern11( - client, "position" - ) - self.tx_position: MetricPattern27[BlkPosition] = MetricPattern27( - client, "position" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.block_position: MetricPattern11[BlkPosition] = MetricPattern11(client, 'position') + self.tx_position: MetricPattern27[BlkPosition] = MetricPattern27(client, 'position') class MetricsTree_Price_Cents_Split: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.close: MetricPattern5[Cents] = MetricPattern5(client, "price_close_cents") - self.high: MetricPattern5[Cents] = MetricPattern5(client, "price_high_cents") - self.low: MetricPattern5[Cents] = MetricPattern5(client, "price_low_cents") - self.open: MetricPattern5[Cents] = MetricPattern5(client, "price_open_cents") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.close: MetricPattern5[Cents] = MetricPattern5(client, 'price_close_cents') + self.high: MetricPattern5[Cents] = MetricPattern5(client, 'price_high_cents') + self.low: MetricPattern5[Cents] = MetricPattern5(client, 'price_low_cents') + self.open: MetricPattern5[Cents] = MetricPattern5(client, 'price_open_cents') class MetricsTree_Price_Cents: """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.ohlc: MetricPattern5[OHLCCents] = MetricPattern5(client, 'ohlc_cents') + self.split: MetricsTree_Price_Cents_Split = MetricsTree_Price_Cents_Split(client) - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.ohlc: MetricPattern5[OHLCCents] = MetricPattern5(client, "ohlc_cents") - self.split: MetricsTree_Price_Cents_Split = MetricsTree_Price_Cents_Split( - client - ) - - -class MetricsTree_Price_Sats: +class MetricsTree_Price_Usd: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.ohlc: MetricPattern1[OHLCSats] = MetricPattern1(client, "price_ohlc_sats") - self.split: SplitPattern2[Sats] = SplitPattern2(client, "price_sats") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.ohlc: MetricPattern1[OHLCDollars] = MetricPattern1(client, 'price_ohlc') + self.split: SplitPattern2[Dollars] = SplitPattern2(client, 'price') class MetricsTree_Price: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): + + def __init__(self, client: BrkClientBase, base_path: str = ''): self.cents: MetricsTree_Price_Cents = MetricsTree_Price_Cents(client) - self.sats: MetricsTree_Price_Sats = MetricsTree_Price_Sats(client) - self.usd: SatsPattern[OHLCDollars] = SatsPattern(client, "price") - + self.sats: SatsPattern[OHLCSats] = SatsPattern(client, 'price') + self.usd: MetricsTree_Price_Usd = MetricsTree_Price_Usd(client) class MetricsTree_Scripts_Count: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.emptyoutput: DollarsPattern[StoredU64] = DollarsPattern( - client, "emptyoutput_count" - ) - self.opreturn: DollarsPattern[StoredU64] = DollarsPattern( - client, "opreturn_count" - ) - self.p2a: DollarsPattern[StoredU64] = DollarsPattern(client, "p2a_count") - self.p2ms: DollarsPattern[StoredU64] = DollarsPattern(client, "p2ms_count") - self.p2pk33: DollarsPattern[StoredU64] = DollarsPattern(client, "p2pk33_count") - self.p2pk65: DollarsPattern[StoredU64] = DollarsPattern(client, "p2pk65_count") - self.p2pkh: DollarsPattern[StoredU64] = DollarsPattern(client, "p2pkh_count") - self.p2sh: DollarsPattern[StoredU64] = DollarsPattern(client, "p2sh_count") - self.p2tr: DollarsPattern[StoredU64] = DollarsPattern(client, "p2tr_count") - self.p2wpkh: DollarsPattern[StoredU64] = DollarsPattern(client, "p2wpkh_count") - self.p2wsh: DollarsPattern[StoredU64] = DollarsPattern(client, "p2wsh_count") - self.segwit: DollarsPattern[StoredU64] = DollarsPattern(client, "segwit_count") - self.segwit_adoption: SegwitAdoptionPattern = SegwitAdoptionPattern( - client, "segwit_adoption" - ) - self.taproot_adoption: SegwitAdoptionPattern = SegwitAdoptionPattern( - client, "taproot_adoption" - ) - self.unknownoutput: DollarsPattern[StoredU64] = DollarsPattern( - client, "unknownoutput_count" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.emptyoutput: DollarsPattern[StoredU64] = DollarsPattern(client, 'emptyoutput_count') + self.opreturn: DollarsPattern[StoredU64] = DollarsPattern(client, 'opreturn_count') + self.p2a: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2a_count') + self.p2ms: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2ms_count') + self.p2pk33: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2pk33_count') + self.p2pk65: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2pk65_count') + self.p2pkh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2pkh_count') + self.p2sh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2sh_count') + self.p2tr: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2tr_count') + self.p2wpkh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2wpkh_count') + self.p2wsh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2wsh_count') + self.segwit: DollarsPattern[StoredU64] = DollarsPattern(client, 'segwit_count') + self.segwit_adoption: SegwitAdoptionPattern = SegwitAdoptionPattern(client, 'segwit_adoption') + self.taproot_adoption: SegwitAdoptionPattern = SegwitAdoptionPattern(client, 'taproot_adoption') + self.unknownoutput: DollarsPattern[StoredU64] = DollarsPattern(client, 'unknownoutput_count') class MetricsTree_Scripts_Value: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.opreturn: CoinbasePattern = CoinbasePattern(client, "opreturn_value") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.opreturn: CoinbasePattern = CoinbasePattern(client, 'opreturn_value') class MetricsTree_Scripts: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): + + def __init__(self, client: BrkClientBase, base_path: str = ''): self.count: MetricsTree_Scripts_Count = MetricsTree_Scripts_Count(client) - self.empty_to_txindex: MetricPattern9[TxIndex] = MetricPattern9( - client, "txindex" - ) - self.first_emptyoutputindex: MetricPattern11[EmptyOutputIndex] = ( - MetricPattern11(client, "first_emptyoutputindex") - ) - self.first_opreturnindex: MetricPattern11[OpReturnIndex] = MetricPattern11( - client, "first_opreturnindex" - ) - self.first_p2msoutputindex: MetricPattern11[P2MSOutputIndex] = MetricPattern11( - client, "first_p2msoutputindex" - ) - self.first_unknownoutputindex: MetricPattern11[UnknownOutputIndex] = ( - MetricPattern11(client, "first_unknownoutputindex") - ) - self.opreturn_to_txindex: MetricPattern14[TxIndex] = MetricPattern14( - client, "txindex" - ) - self.p2ms_to_txindex: MetricPattern17[TxIndex] = MetricPattern17( - client, "txindex" - ) - self.unknown_to_txindex: MetricPattern28[TxIndex] = MetricPattern28( - client, "txindex" - ) + self.empty_to_txindex: MetricPattern9[TxIndex] = MetricPattern9(client, 'txindex') + self.first_emptyoutputindex: MetricPattern11[EmptyOutputIndex] = MetricPattern11(client, 'first_emptyoutputindex') + self.first_opreturnindex: MetricPattern11[OpReturnIndex] = MetricPattern11(client, 'first_opreturnindex') + self.first_p2msoutputindex: MetricPattern11[P2MSOutputIndex] = MetricPattern11(client, 'first_p2msoutputindex') + self.first_unknownoutputindex: MetricPattern11[UnknownOutputIndex] = MetricPattern11(client, 'first_unknownoutputindex') + self.opreturn_to_txindex: MetricPattern14[TxIndex] = MetricPattern14(client, 'txindex') + self.p2ms_to_txindex: MetricPattern17[TxIndex] = MetricPattern17(client, 'txindex') + self.unknown_to_txindex: MetricPattern28[TxIndex] = MetricPattern28(client, 'txindex') self.value: MetricsTree_Scripts_Value = MetricsTree_Scripts_Value(client) - class MetricsTree_Supply_Burned: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.opreturn: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, "opreturn_supply" - ) - self.unspendable: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, "unspendable_supply" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.opreturn: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, 'opreturn_supply') + self.unspendable: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, 'unspendable_supply') class MetricsTree_Supply_Circulating: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.bitcoin: MetricPattern3[Bitcoin] = MetricPattern3( - client, "circulating_supply_btc" - ) - self.dollars: MetricPattern3[Dollars] = MetricPattern3( - client, "circulating_supply_usd" - ) - self.sats: MetricPattern3[Sats] = MetricPattern3(client, "circulating_supply") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.bitcoin: MetricPattern3[Bitcoin] = MetricPattern3(client, 'circulating_supply_btc') + self.dollars: MetricPattern3[Dollars] = MetricPattern3(client, 'circulating_supply_usd') + self.sats: MetricPattern3[Sats] = MetricPattern3(client, 'circulating_supply') class MetricsTree_Supply_Velocity: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.btc: MetricPattern4[StoredF64] = MetricPattern4(client, "btc_velocity") - self.usd: MetricPattern4[StoredF64] = MetricPattern4(client, "usd_velocity") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.btc: MetricPattern4[StoredF64] = MetricPattern4(client, 'btc_velocity') + self.usd: MetricPattern4[StoredF64] = MetricPattern4(client, 'usd_velocity') class MetricsTree_Supply: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): + + def __init__(self, client: BrkClientBase, base_path: str = ''): self.burned: MetricsTree_Supply_Burned = MetricsTree_Supply_Burned(client) - self.circulating: MetricsTree_Supply_Circulating = ( - MetricsTree_Supply_Circulating(client) - ) - self.inflation: MetricPattern4[StoredF32] = MetricPattern4( - client, "inflation_rate" - ) - self.market_cap: MetricPattern1[Dollars] = MetricPattern1(client, "market_cap") + self.circulating: MetricsTree_Supply_Circulating = MetricsTree_Supply_Circulating(client) + self.inflation: MetricPattern4[StoredF32] = MetricPattern4(client, 'inflation_rate') + self.market_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'market_cap') self.velocity: MetricsTree_Supply_Velocity = MetricsTree_Supply_Velocity(client) - class MetricsTree_Transactions_Count: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.is_coinbase: MetricPattern27[StoredBool] = MetricPattern27( - client, "is_coinbase" - ) - self.tx_count: DollarsPattern[StoredU64] = DollarsPattern(client, "tx_count") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.is_coinbase: MetricPattern27[StoredBool] = MetricPattern27(client, 'is_coinbase') + self.tx_count: DollarsPattern[StoredU64] = DollarsPattern(client, 'tx_count') class MetricsTree_Transactions_Fees_Fee: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.bitcoin: CountPattern2[Bitcoin] = CountPattern2(client, "fee_btc") - self.dollars: CountPattern2[Dollars] = CountPattern2(client, "fee_usd") - self.sats: CountPattern2[Sats] = CountPattern2(client, "fee") - self.txindex: MetricPattern27[Sats] = MetricPattern27(client, "fee") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.bitcoin: CountPattern2[Bitcoin] = CountPattern2(client, 'fee_btc') + self.dollars: CountPattern2[Dollars] = CountPattern2(client, 'fee_usd') + self.sats: CountPattern2[Sats] = CountPattern2(client, 'fee') + self.txindex: MetricPattern27[Sats] = MetricPattern27(client, 'fee') class MetricsTree_Transactions_Fees: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.fee: MetricsTree_Transactions_Fees_Fee = MetricsTree_Transactions_Fees_Fee( - client - ) - self.fee_rate: FeeRatePattern[FeeRate] = FeeRatePattern(client, "fee_rate") - self.input_value: MetricPattern27[Sats] = MetricPattern27(client, "input_value") - self.output_value: MetricPattern27[Sats] = MetricPattern27( - client, "output_value" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.fee: MetricsTree_Transactions_Fees_Fee = MetricsTree_Transactions_Fees_Fee(client) + self.fee_rate: FeeRatePattern[FeeRate] = FeeRatePattern(client, 'fee_rate') + self.input_value: MetricPattern27[Sats] = MetricPattern27(client, 'input_value') + self.output_value: MetricPattern27[Sats] = MetricPattern27(client, 'output_value') class MetricsTree_Transactions_Size: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.vsize: FeeRatePattern[VSize] = FeeRatePattern(client, "tx_vsize") - self.weight: FeeRatePattern[Weight] = FeeRatePattern(client, "tx_weight") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.vsize: FeeRatePattern[VSize] = FeeRatePattern(client, 'tx_vsize') + self.weight: FeeRatePattern[Weight] = FeeRatePattern(client, 'tx_weight') class MetricsTree_Transactions_Versions: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.v1: BlockCountPattern[StoredU64] = BlockCountPattern(client, "tx_v1") - self.v2: BlockCountPattern[StoredU64] = BlockCountPattern(client, "tx_v2") - self.v3: BlockCountPattern[StoredU64] = BlockCountPattern(client, "tx_v3") - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.v1: BlockCountPattern[StoredU64] = BlockCountPattern(client, 'tx_v1') + self.v2: BlockCountPattern[StoredU64] = BlockCountPattern(client, 'tx_v2') + self.v3: BlockCountPattern[StoredU64] = BlockCountPattern(client, 'tx_v3') class MetricsTree_Transactions_Volume: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.annualized_volume: _2015Pattern = _2015Pattern(client, "annualized_volume") - self.inputs_per_sec: MetricPattern4[StoredF32] = MetricPattern4( - client, "inputs_per_sec" - ) - self.outputs_per_sec: MetricPattern4[StoredF32] = MetricPattern4( - client, "outputs_per_sec" - ) - self.received_sum: ActiveSupplyPattern = ActiveSupplyPattern( - client, "received_sum" - ) - self.sent_sum: ActiveSupplyPattern = ActiveSupplyPattern(client, "sent_sum") - self.tx_per_sec: MetricPattern4[StoredF32] = MetricPattern4( - client, "tx_per_sec" - ) - + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.annualized_volume: _2015Pattern = _2015Pattern(client, 'annualized_volume') + self.inputs_per_sec: MetricPattern4[StoredF32] = MetricPattern4(client, 'inputs_per_sec') + self.outputs_per_sec: MetricPattern4[StoredF32] = MetricPattern4(client, 'outputs_per_sec') + self.received_sum: ActiveSupplyPattern = ActiveSupplyPattern(client, 'received_sum') + self.sent_sum: ActiveSupplyPattern = ActiveSupplyPattern(client, 'sent_sum') + self.tx_per_sec: MetricPattern4[StoredF32] = MetricPattern4(client, 'tx_per_sec') class MetricsTree_Transactions: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.base_size: MetricPattern27[StoredU32] = MetricPattern27( - client, "base_size" - ) - self.count: MetricsTree_Transactions_Count = MetricsTree_Transactions_Count( - client - ) + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.base_size: MetricPattern27[StoredU32] = MetricPattern27(client, 'base_size') + self.count: MetricsTree_Transactions_Count = MetricsTree_Transactions_Count(client) self.fees: MetricsTree_Transactions_Fees = MetricsTree_Transactions_Fees(client) - self.first_txindex: MetricPattern11[TxIndex] = MetricPattern11( - client, "first_txindex" - ) - self.first_txinindex: MetricPattern27[TxInIndex] = MetricPattern27( - client, "first_txinindex" - ) - self.first_txoutindex: MetricPattern27[TxOutIndex] = MetricPattern27( - client, "first_txoutindex" - ) - self.height: MetricPattern27[Height] = MetricPattern27(client, "height") - self.is_explicitly_rbf: MetricPattern27[StoredBool] = MetricPattern27( - client, "is_explicitly_rbf" - ) - self.rawlocktime: MetricPattern27[RawLockTime] = MetricPattern27( - client, "rawlocktime" - ) + self.first_txindex: MetricPattern11[TxIndex] = MetricPattern11(client, 'first_txindex') + self.first_txinindex: MetricPattern27[TxInIndex] = MetricPattern27(client, 'first_txinindex') + self.first_txoutindex: MetricPattern27[TxOutIndex] = MetricPattern27(client, 'first_txoutindex') + self.height: MetricPattern27[Height] = MetricPattern27(client, 'height') + self.is_explicitly_rbf: MetricPattern27[StoredBool] = MetricPattern27(client, 'is_explicitly_rbf') + self.rawlocktime: MetricPattern27[RawLockTime] = MetricPattern27(client, 'rawlocktime') self.size: MetricsTree_Transactions_Size = MetricsTree_Transactions_Size(client) - self.total_size: MetricPattern27[StoredU32] = MetricPattern27( - client, "total_size" - ) - self.txid: MetricPattern27[Txid] = MetricPattern27(client, "txid") - self.txversion: MetricPattern27[TxVersion] = MetricPattern27( - client, "txversion" - ) - self.versions: MetricsTree_Transactions_Versions = ( - MetricsTree_Transactions_Versions(client) - ) - self.volume: MetricsTree_Transactions_Volume = MetricsTree_Transactions_Volume( - client - ) - + self.total_size: MetricPattern27[StoredU32] = MetricPattern27(client, 'total_size') + self.txid: MetricPattern27[Txid] = MetricPattern27(client, 'txid') + self.txversion: MetricPattern27[TxVersion] = MetricPattern27(client, 'txversion') + self.versions: MetricsTree_Transactions_Versions = MetricsTree_Transactions_Versions(client) + self.volume: MetricsTree_Transactions_Volume = MetricsTree_Transactions_Volume(client) class MetricsTree: """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ""): + + def __init__(self, client: BrkClientBase, base_path: str = ''): self.addresses: MetricsTree_Addresses = MetricsTree_Addresses(client) self.blocks: MetricsTree_Blocks = MetricsTree_Blocks(client) self.cointime: MetricsTree_Cointime = MetricsTree_Cointime(client) @@ -6616,569 +4049,904 @@ class MetricsTree: self.supply: MetricsTree_Supply = MetricsTree_Supply(client) self.transactions: MetricsTree_Transactions = MetricsTree_Transactions(client) - class BrkClient(BrkClientBase): """Main BRK client with metrics tree and API methods.""" - VERSION = "v0.1.0-beta.1" + VERSION = "v0.1.0" INDEXES = [ - "dateindex", - "decadeindex", - "difficultyepoch", - "emptyoutputindex", - "halvingepoch", - "height", - "txinindex", - "monthindex", - "opreturnindex", - "txoutindex", - "p2aaddressindex", - "p2msoutputindex", - "p2pk33addressindex", - "p2pk65addressindex", - "p2pkhaddressindex", - "p2shaddressindex", - "p2traddressindex", - "p2wpkhaddressindex", - "p2wshaddressindex", - "quarterindex", - "semesterindex", - "txindex", - "unknownoutputindex", - "weekindex", - "yearindex", - "loadedaddressindex", - "emptyaddressindex", - "pairoutputindex", + "dateindex", + "decadeindex", + "difficultyepoch", + "emptyoutputindex", + "halvingepoch", + "height", + "txinindex", + "monthindex", + "opreturnindex", + "txoutindex", + "p2aaddressindex", + "p2msoutputindex", + "p2pk33addressindex", + "p2pk65addressindex", + "p2pkhaddressindex", + "p2shaddressindex", + "p2traddressindex", + "p2wpkhaddressindex", + "p2wshaddressindex", + "quarterindex", + "semesterindex", + "txindex", + "unknownoutputindex", + "weekindex", + "yearindex", + "loadedaddressindex", + "emptyaddressindex", + "pairoutputindex" ] POOL_ID_TO_POOL_NAME = { - "aaopool": "AAO Pool", - "antpool": "AntPool", - "arkpool": "ArkPool", - "asicminer": "ASICMiner", - "axbt": "A-XBT", - "batpool": "BATPOOL", - "bcmonster": "BCMonster", - "bcpoolio": "bcpool.io", - "binancepool": "Binance Pool", - "bitalo": "Bitalo", - "bitclub": "BitClub", - "bitcoinaffiliatenetwork": "Bitcoin Affiliate Network", - "bitcoincom": "Bitcoin.com", - "bitcoinindia": "Bitcoin India", - "bitcoinrussia": "BitcoinRussia", - "bitcoinukraine": "Bitcoin-Ukraine", - "bitfarms": "Bitfarms", - "bitfufupool": "BitFuFuPool", - "bitfury": "BitFury", - "bitminter": "BitMinter", - "bitparking": "Bitparking", - "bitsolo": "Bitsolo", - "bixin": "Bixin", - "blockfills": "BlockFills", - "braiinspool": "Braiins Pool", - "bravomining": "Bravo Mining", - "btcc": "BTCC", - "btccom": "BTC.com", - "btcdig": "BTCDig", - "btcguild": "BTC Guild", - "btclab": "BTCLab", - "btcmp": "BTCMP", - "btcnuggets": "BTC Nuggets", - "btcpoolparty": "BTC Pool Party", - "btcserv": "BTCServ", - "btctop": "BTC.TOP", - "btpool": "BTPOOL", - "bwpool": "BWPool", - "bytepool": "BytePool", - "canoe": "CANOE", - "canoepool": "CanoePool", - "carbonnegative": "Carbon Negative", - "ckpool": "CKPool", - "cloudhashing": "CloudHashing", - "coinlab": "CoinLab", - "cointerra": "Cointerra", - "connectbtc": "ConnectBTC", - "dcex": "DCEX", - "dcexploration": "DCExploration", - "digitalbtc": "digitalBTC", - "digitalxmintsy": "digitalX Mintsy", - "dpool": "DPOOL", - "eclipsemc": "EclipseMC", - "eightbaochi": "8baochi", - "ekanembtc": "EkanemBTC", - "eligius": "Eligius", - "emcdpool": "EMCDPool", - "entrustcharitypool": "Entrust Charity Pool", - "eobot": "Eobot", - "exxbw": "EXX&BW", - "f2pool": "F2Pool", - "fiftyeightcoin": "58COIN", - "foundryusa": "Foundry USA", - "futurebitapollosolo": "FutureBit Apollo Solo", - "gbminers": "GBMiners", - "ghashio": "GHash.IO", - "givemecoins": "Give Me Coins", - "gogreenlight": "GoGreenLight", - "haominer": "haominer", - "haozhuzhu": "HAOZHUZHU", - "hashbx": "HashBX", - "hashpool": "HASHPOOL", - "helix": "Helix", - "hhtt": "HHTT", - "hotpool": "HotPool", - "hummerpool": "Hummerpool", - "huobipool": "Huobi.pool", - "innopolistech": "Innopolis Tech", - "kanopool": "KanoPool", - "kncminer": "KnCMiner", - "kucoinpool": "KuCoinPool", - "lubiancom": "Lubian.com", - "luckypool": "luckyPool", - "luxor": "Luxor", - "marapool": "MARA Pool", - "maxbtc": "MaxBTC", - "maxipool": "MaxiPool", - "megabigpower": "MegaBigPower", - "minerium": "Minerium", - "miningcity": "MiningCity", - "miningdutch": "Mining-Dutch", - "miningkings": "MiningKings", - "miningsquared": "Mining Squared", - "mmpool": "mmpool", - "mtred": "Mt Red", - "multicoinco": "MultiCoin.co", - "multipool": "Multipool", - "mybtccoinpool": "myBTCcoin Pool", - "neopool": "Neopool", - "nexious": "Nexious", - "nicehash": "NiceHash", - "nmcbit": "NMCbit", - "novablock": "NovaBlock", - "ocean": "OCEAN", - "okexpool": "OKExPool", - "okkong": "OKKONG", - "okminer": "OKMINER", - "okpooltop": "okpool.top", - "onehash": "1Hash", - "onem1x": "1M1X", - "onethash": "1THash", - "ozcoin": "OzCoin", - "parasite": "Parasite", - "patels": "Patels", - "pegapool": "PEGA Pool", - "phashio": "PHash.IO", - "phoenix": "Phoenix", - "polmine": "Polmine", - "pool175btc": "175btc", - "pool50btc": "50BTC", - "poolin": "Poolin", - "portlandhodl": "Portland.HODL", - "publicpool": "Public Pool", - "purebtccom": "PureBTC.COM", - "rawpool": "Rawpool", - "rigpool": "RigPool", - "sbicrypto": "SBI Crypto", - "secpool": "SECPOOL", - "secretsuperstar": "SecretSuperstar", - "sevenpool": "7pool", - "shawnp0wers": "shawnp0wers", - "sigmapoolcom": "Sigmapool.com", - "simplecoinus": "simplecoin.us", - "solock": "Solo CK", - "spiderpool": "SpiderPool", - "stminingcorp": "ST Mining Corp", - "tangpool": "Tangpool", - "tatmaspool": "TATMAS Pool", - "tbdice": "TBDice", - "telco214": "Telco 214", - "terrapool": "Terra Pool", - "tiger": "tiger", - "tigerpoolnet": "tigerpool.net", - "titan": "Titan", - "transactioncoinmining": "transactioncoinmining", - "trickysbtcpool": "Tricky's BTC Pool", - "triplemining": "TripleMining", - "twentyoneinc": "21 Inc.", - "ultimuspool": "ULTIMUSPOOL", - "unknown": "Unknown", - "unomp": "UNOMP", - "viabtc": "ViaBTC", - "waterhole": "Waterhole", - "wayicn": "WAYI.CN", - "whitepool": "WhitePool", - "wk057": "wk057", - "yourbtcnet": "Yourbtc.net", - "zulupool": "Zulupool", + "aaopool": "AAO Pool", + "antpool": "AntPool", + "arkpool": "ArkPool", + "asicminer": "ASICMiner", + "axbt": "A-XBT", + "batpool": "BATPOOL", + "bcmonster": "BCMonster", + "bcpoolio": "bcpool.io", + "binancepool": "Binance Pool", + "bitalo": "Bitalo", + "bitclub": "BitClub", + "bitcoinaffiliatenetwork": "Bitcoin Affiliate Network", + "bitcoincom": "Bitcoin.com", + "bitcoinindia": "Bitcoin India", + "bitcoinrussia": "BitcoinRussia", + "bitcoinukraine": "Bitcoin-Ukraine", + "bitfarms": "Bitfarms", + "bitfufupool": "BitFuFuPool", + "bitfury": "BitFury", + "bitminter": "BitMinter", + "bitparking": "Bitparking", + "bitsolo": "Bitsolo", + "bixin": "Bixin", + "blockfills": "BlockFills", + "braiinspool": "Braiins Pool", + "bravomining": "Bravo Mining", + "btcc": "BTCC", + "btccom": "BTC.com", + "btcdig": "BTCDig", + "btcguild": "BTC Guild", + "btclab": "BTCLab", + "btcmp": "BTCMP", + "btcnuggets": "BTC Nuggets", + "btcpoolparty": "BTC Pool Party", + "btcserv": "BTCServ", + "btctop": "BTC.TOP", + "btpool": "BTPOOL", + "bwpool": "BWPool", + "bytepool": "BytePool", + "canoe": "CANOE", + "canoepool": "CanoePool", + "carbonnegative": "Carbon Negative", + "ckpool": "CKPool", + "cloudhashing": "CloudHashing", + "coinlab": "CoinLab", + "cointerra": "Cointerra", + "connectbtc": "ConnectBTC", + "dcex": "DCEX", + "dcexploration": "DCExploration", + "digitalbtc": "digitalBTC", + "digitalxmintsy": "digitalX Mintsy", + "dpool": "DPOOL", + "eclipsemc": "EclipseMC", + "eightbaochi": "8baochi", + "ekanembtc": "EkanemBTC", + "eligius": "Eligius", + "emcdpool": "EMCDPool", + "entrustcharitypool": "Entrust Charity Pool", + "eobot": "Eobot", + "exxbw": "EXX&BW", + "f2pool": "F2Pool", + "fiftyeightcoin": "58COIN", + "foundryusa": "Foundry USA", + "futurebitapollosolo": "FutureBit Apollo Solo", + "gbminers": "GBMiners", + "ghashio": "GHash.IO", + "givemecoins": "Give Me Coins", + "gogreenlight": "GoGreenLight", + "haominer": "haominer", + "haozhuzhu": "HAOZHUZHU", + "hashbx": "HashBX", + "hashpool": "HASHPOOL", + "helix": "Helix", + "hhtt": "HHTT", + "hotpool": "HotPool", + "hummerpool": "Hummerpool", + "huobipool": "Huobi.pool", + "innopolistech": "Innopolis Tech", + "kanopool": "KanoPool", + "kncminer": "KnCMiner", + "kucoinpool": "KuCoinPool", + "lubiancom": "Lubian.com", + "luckypool": "luckyPool", + "luxor": "Luxor", + "marapool": "MARA Pool", + "maxbtc": "MaxBTC", + "maxipool": "MaxiPool", + "megabigpower": "MegaBigPower", + "minerium": "Minerium", + "miningcity": "MiningCity", + "miningdutch": "Mining-Dutch", + "miningkings": "MiningKings", + "miningsquared": "Mining Squared", + "mmpool": "mmpool", + "mtred": "Mt Red", + "multicoinco": "MultiCoin.co", + "multipool": "Multipool", + "mybtccoinpool": "myBTCcoin Pool", + "neopool": "Neopool", + "nexious": "Nexious", + "nicehash": "NiceHash", + "nmcbit": "NMCbit", + "novablock": "NovaBlock", + "ocean": "OCEAN", + "okexpool": "OKExPool", + "okkong": "OKKONG", + "okminer": "OKMINER", + "okpooltop": "okpool.top", + "onehash": "1Hash", + "onem1x": "1M1X", + "onethash": "1THash", + "ozcoin": "OzCoin", + "parasite": "Parasite", + "patels": "Patels", + "pegapool": "PEGA Pool", + "phashio": "PHash.IO", + "phoenix": "Phoenix", + "polmine": "Polmine", + "pool175btc": "175btc", + "pool50btc": "50BTC", + "poolin": "Poolin", + "portlandhodl": "Portland.HODL", + "publicpool": "Public Pool", + "purebtccom": "PureBTC.COM", + "rawpool": "Rawpool", + "rigpool": "RigPool", + "sbicrypto": "SBI Crypto", + "secpool": "SECPOOL", + "secretsuperstar": "SecretSuperstar", + "sevenpool": "7pool", + "shawnp0wers": "shawnp0wers", + "sigmapoolcom": "Sigmapool.com", + "simplecoinus": "simplecoin.us", + "solock": "Solo CK", + "spiderpool": "SpiderPool", + "stminingcorp": "ST Mining Corp", + "tangpool": "Tangpool", + "tatmaspool": "TATMAS Pool", + "tbdice": "TBDice", + "telco214": "Telco 214", + "terrapool": "Terra Pool", + "tiger": "tiger", + "tigerpoolnet": "tigerpool.net", + "titan": "Titan", + "transactioncoinmining": "transactioncoinmining", + "trickysbtcpool": "Tricky's BTC Pool", + "triplemining": "TripleMining", + "twentyoneinc": "21 Inc.", + "ultimuspool": "ULTIMUSPOOL", + "unknown": "Unknown", + "unomp": "UNOMP", + "viabtc": "ViaBTC", + "waterhole": "Waterhole", + "wayicn": "WAYI.CN", + "whitepool": "WhitePool", + "wk057": "wk057", + "yourbtcnet": "Yourbtc.net", + "zulupool": "Zulupool" } TERM_NAMES = { - "short": {"id": "sth", "short": "STH", "long": "Short Term Holders"}, - "long": {"id": "lth", "short": "LTH", "long": "Long Term Holders"}, + "short": { + "id": "sth", + "short": "STH", + "long": "Short Term Holders" + }, + "long": { + "id": "lth", + "short": "LTH", + "long": "Long Term Holders" + } } EPOCH_NAMES = { - "_0": {"id": "epoch_0", "short": "0", "long": "Epoch 0"}, - "_1": {"id": "epoch_1", "short": "1", "long": "Epoch 1"}, - "_2": {"id": "epoch_2", "short": "2", "long": "Epoch 2"}, - "_3": {"id": "epoch_3", "short": "3", "long": "Epoch 3"}, - "_4": {"id": "epoch_4", "short": "4", "long": "Epoch 4"}, + "_0": { + "id": "epoch_0", + "short": "0", + "long": "Epoch 0" + }, + "_1": { + "id": "epoch_1", + "short": "1", + "long": "Epoch 1" + }, + "_2": { + "id": "epoch_2", + "short": "2", + "long": "Epoch 2" + }, + "_3": { + "id": "epoch_3", + "short": "3", + "long": "Epoch 3" + }, + "_4": { + "id": "epoch_4", + "short": "4", + "long": "Epoch 4" + } } YEAR_NAMES = { - "_2009": {"id": "year_2009", "short": "2009", "long": "Year 2009"}, - "_2010": {"id": "year_2010", "short": "2010", "long": "Year 2010"}, - "_2011": {"id": "year_2011", "short": "2011", "long": "Year 2011"}, - "_2012": {"id": "year_2012", "short": "2012", "long": "Year 2012"}, - "_2013": {"id": "year_2013", "short": "2013", "long": "Year 2013"}, - "_2014": {"id": "year_2014", "short": "2014", "long": "Year 2014"}, - "_2015": {"id": "year_2015", "short": "2015", "long": "Year 2015"}, - "_2016": {"id": "year_2016", "short": "2016", "long": "Year 2016"}, - "_2017": {"id": "year_2017", "short": "2017", "long": "Year 2017"}, - "_2018": {"id": "year_2018", "short": "2018", "long": "Year 2018"}, - "_2019": {"id": "year_2019", "short": "2019", "long": "Year 2019"}, - "_2020": {"id": "year_2020", "short": "2020", "long": "Year 2020"}, - "_2021": {"id": "year_2021", "short": "2021", "long": "Year 2021"}, - "_2022": {"id": "year_2022", "short": "2022", "long": "Year 2022"}, - "_2023": {"id": "year_2023", "short": "2023", "long": "Year 2023"}, - "_2024": {"id": "year_2024", "short": "2024", "long": "Year 2024"}, - "_2025": {"id": "year_2025", "short": "2025", "long": "Year 2025"}, - "_2026": {"id": "year_2026", "short": "2026", "long": "Year 2026"}, + "_2009": { + "id": "year_2009", + "short": "2009", + "long": "Year 2009" + }, + "_2010": { + "id": "year_2010", + "short": "2010", + "long": "Year 2010" + }, + "_2011": { + "id": "year_2011", + "short": "2011", + "long": "Year 2011" + }, + "_2012": { + "id": "year_2012", + "short": "2012", + "long": "Year 2012" + }, + "_2013": { + "id": "year_2013", + "short": "2013", + "long": "Year 2013" + }, + "_2014": { + "id": "year_2014", + "short": "2014", + "long": "Year 2014" + }, + "_2015": { + "id": "year_2015", + "short": "2015", + "long": "Year 2015" + }, + "_2016": { + "id": "year_2016", + "short": "2016", + "long": "Year 2016" + }, + "_2017": { + "id": "year_2017", + "short": "2017", + "long": "Year 2017" + }, + "_2018": { + "id": "year_2018", + "short": "2018", + "long": "Year 2018" + }, + "_2019": { + "id": "year_2019", + "short": "2019", + "long": "Year 2019" + }, + "_2020": { + "id": "year_2020", + "short": "2020", + "long": "Year 2020" + }, + "_2021": { + "id": "year_2021", + "short": "2021", + "long": "Year 2021" + }, + "_2022": { + "id": "year_2022", + "short": "2022", + "long": "Year 2022" + }, + "_2023": { + "id": "year_2023", + "short": "2023", + "long": "Year 2023" + }, + "_2024": { + "id": "year_2024", + "short": "2024", + "long": "Year 2024" + }, + "_2025": { + "id": "year_2025", + "short": "2025", + "long": "Year 2025" + }, + "_2026": { + "id": "year_2026", + "short": "2026", + "long": "Year 2026" + } } SPENDABLE_TYPE_NAMES = { - "p2pk65": { - "id": "p2pk65", - "short": "P2PK65", - "long": "Pay to Public Key (65 bytes)", - }, - "p2pk33": { - "id": "p2pk33", - "short": "P2PK33", - "long": "Pay to Public Key (33 bytes)", - }, - "p2pkh": {"id": "p2pkh", "short": "P2PKH", "long": "Pay to Public Key Hash"}, - "p2ms": {"id": "p2ms", "short": "P2MS", "long": "Pay to Multisig"}, - "p2sh": {"id": "p2sh", "short": "P2SH", "long": "Pay to Script Hash"}, - "p2wpkh": { - "id": "p2wpkh", - "short": "P2WPKH", - "long": "Pay to Witness Public Key Hash", - }, - "p2wsh": { - "id": "p2wsh", - "short": "P2WSH", - "long": "Pay to Witness Script Hash", - }, - "p2tr": {"id": "p2tr", "short": "P2TR", "long": "Pay to Taproot"}, - "p2a": {"id": "p2a", "short": "P2A", "long": "Pay to Anchor"}, - "unknown": { - "id": "unknown_outputs", - "short": "Unknown", - "long": "Unknown Output Type", - }, - "empty": {"id": "empty_outputs", "short": "Empty", "long": "Empty Output"}, + "p2pk65": { + "id": "p2pk65", + "short": "P2PK65", + "long": "Pay to Public Key (65 bytes)" + }, + "p2pk33": { + "id": "p2pk33", + "short": "P2PK33", + "long": "Pay to Public Key (33 bytes)" + }, + "p2pkh": { + "id": "p2pkh", + "short": "P2PKH", + "long": "Pay to Public Key Hash" + }, + "p2ms": { + "id": "p2ms", + "short": "P2MS", + "long": "Pay to Multisig" + }, + "p2sh": { + "id": "p2sh", + "short": "P2SH", + "long": "Pay to Script Hash" + }, + "p2wpkh": { + "id": "p2wpkh", + "short": "P2WPKH", + "long": "Pay to Witness Public Key Hash" + }, + "p2wsh": { + "id": "p2wsh", + "short": "P2WSH", + "long": "Pay to Witness Script Hash" + }, + "p2tr": { + "id": "p2tr", + "short": "P2TR", + "long": "Pay to Taproot" + }, + "p2a": { + "id": "p2a", + "short": "P2A", + "long": "Pay to Anchor" + }, + "unknown": { + "id": "unknown_outputs", + "short": "Unknown", + "long": "Unknown Output Type" + }, + "empty": { + "id": "empty_outputs", + "short": "Empty", + "long": "Empty Output" + } } AGE_RANGE_NAMES = { - "up_to_1h": {"id": "under_1h_old", "short": "<1h", "long": "Under 1 Hour Old"}, - "_1h_to_1d": { - "id": "1h_to_1d_old", - "short": "1h-1d", - "long": "1 Hour to 1 Day Old", - }, - "_1d_to_1w": { - "id": "1d_to_1w_old", - "short": "1d-1w", - "long": "1 Day to 1 Week Old", - }, - "_1w_to_1m": { - "id": "1w_to_1m_old", - "short": "1w-1m", - "long": "1 Week to 1 Month Old", - }, - "_1m_to_2m": { - "id": "1m_to_2m_old", - "short": "1m-2m", - "long": "1 to 2 Months Old", - }, - "_2m_to_3m": { - "id": "2m_to_3m_old", - "short": "2m-3m", - "long": "2 to 3 Months Old", - }, - "_3m_to_4m": { - "id": "3m_to_4m_old", - "short": "3m-4m", - "long": "3 to 4 Months Old", - }, - "_4m_to_5m": { - "id": "4m_to_5m_old", - "short": "4m-5m", - "long": "4 to 5 Months Old", - }, - "_5m_to_6m": { - "id": "5m_to_6m_old", - "short": "5m-6m", - "long": "5 to 6 Months Old", - }, - "_6m_to_1y": { - "id": "6m_to_1y_old", - "short": "6m-1y", - "long": "6 Months to 1 Year Old", - }, - "_1y_to_2y": { - "id": "1y_to_2y_old", - "short": "1y-2y", - "long": "1 to 2 Years Old", - }, - "_2y_to_3y": { - "id": "2y_to_3y_old", - "short": "2y-3y", - "long": "2 to 3 Years Old", - }, - "_3y_to_4y": { - "id": "3y_to_4y_old", - "short": "3y-4y", - "long": "3 to 4 Years Old", - }, - "_4y_to_5y": { - "id": "4y_to_5y_old", - "short": "4y-5y", - "long": "4 to 5 Years Old", - }, - "_5y_to_6y": { - "id": "5y_to_6y_old", - "short": "5y-6y", - "long": "5 to 6 Years Old", - }, - "_6y_to_7y": { - "id": "6y_to_7y_old", - "short": "6y-7y", - "long": "6 to 7 Years Old", - }, - "_7y_to_8y": { - "id": "7y_to_8y_old", - "short": "7y-8y", - "long": "7 to 8 Years Old", - }, - "_8y_to_10y": { - "id": "8y_to_10y_old", - "short": "8y-10y", - "long": "8 to 10 Years Old", - }, - "_10y_to_12y": { - "id": "10y_to_12y_old", - "short": "10y-12y", - "long": "10 to 12 Years Old", - }, - "_12y_to_15y": { - "id": "12y_to_15y_old", - "short": "12y-15y", - "long": "12 to 15 Years Old", - }, - "from_15y": {"id": "over_15y_old", "short": "15y+", "long": "15+ Years Old"}, + "up_to_1h": { + "id": "under_1h_old", + "short": "<1h", + "long": "Under 1 Hour Old" + }, + "_1h_to_1d": { + "id": "1h_to_1d_old", + "short": "1h-1d", + "long": "1 Hour to 1 Day Old" + }, + "_1d_to_1w": { + "id": "1d_to_1w_old", + "short": "1d-1w", + "long": "1 Day to 1 Week Old" + }, + "_1w_to_1m": { + "id": "1w_to_1m_old", + "short": "1w-1m", + "long": "1 Week to 1 Month Old" + }, + "_1m_to_2m": { + "id": "1m_to_2m_old", + "short": "1m-2m", + "long": "1 to 2 Months Old" + }, + "_2m_to_3m": { + "id": "2m_to_3m_old", + "short": "2m-3m", + "long": "2 to 3 Months Old" + }, + "_3m_to_4m": { + "id": "3m_to_4m_old", + "short": "3m-4m", + "long": "3 to 4 Months Old" + }, + "_4m_to_5m": { + "id": "4m_to_5m_old", + "short": "4m-5m", + "long": "4 to 5 Months Old" + }, + "_5m_to_6m": { + "id": "5m_to_6m_old", + "short": "5m-6m", + "long": "5 to 6 Months Old" + }, + "_6m_to_1y": { + "id": "6m_to_1y_old", + "short": "6m-1y", + "long": "6 Months to 1 Year Old" + }, + "_1y_to_2y": { + "id": "1y_to_2y_old", + "short": "1y-2y", + "long": "1 to 2 Years Old" + }, + "_2y_to_3y": { + "id": "2y_to_3y_old", + "short": "2y-3y", + "long": "2 to 3 Years Old" + }, + "_3y_to_4y": { + "id": "3y_to_4y_old", + "short": "3y-4y", + "long": "3 to 4 Years Old" + }, + "_4y_to_5y": { + "id": "4y_to_5y_old", + "short": "4y-5y", + "long": "4 to 5 Years Old" + }, + "_5y_to_6y": { + "id": "5y_to_6y_old", + "short": "5y-6y", + "long": "5 to 6 Years Old" + }, + "_6y_to_7y": { + "id": "6y_to_7y_old", + "short": "6y-7y", + "long": "6 to 7 Years Old" + }, + "_7y_to_8y": { + "id": "7y_to_8y_old", + "short": "7y-8y", + "long": "7 to 8 Years Old" + }, + "_8y_to_10y": { + "id": "8y_to_10y_old", + "short": "8y-10y", + "long": "8 to 10 Years Old" + }, + "_10y_to_12y": { + "id": "10y_to_12y_old", + "short": "10y-12y", + "long": "10 to 12 Years Old" + }, + "_12y_to_15y": { + "id": "12y_to_15y_old", + "short": "12y-15y", + "long": "12 to 15 Years Old" + }, + "from_15y": { + "id": "over_15y_old", + "short": "15y+", + "long": "15+ Years Old" + } } MAX_AGE_NAMES = { - "_1w": {"id": "under_1w_old", "short": "<1w", "long": "Under 1 Week Old"}, - "_1m": {"id": "under_1m_old", "short": "<1m", "long": "Under 1 Month Old"}, - "_2m": {"id": "under_2m_old", "short": "<2m", "long": "Under 2 Months Old"}, - "_3m": {"id": "under_3m_old", "short": "<3m", "long": "Under 3 Months Old"}, - "_4m": {"id": "under_4m_old", "short": "<4m", "long": "Under 4 Months Old"}, - "_5m": {"id": "under_5m_old", "short": "<5m", "long": "Under 5 Months Old"}, - "_6m": {"id": "under_6m_old", "short": "<6m", "long": "Under 6 Months Old"}, - "_1y": {"id": "under_1y_old", "short": "<1y", "long": "Under 1 Year Old"}, - "_2y": {"id": "under_2y_old", "short": "<2y", "long": "Under 2 Years Old"}, - "_3y": {"id": "under_3y_old", "short": "<3y", "long": "Under 3 Years Old"}, - "_4y": {"id": "under_4y_old", "short": "<4y", "long": "Under 4 Years Old"}, - "_5y": {"id": "under_5y_old", "short": "<5y", "long": "Under 5 Years Old"}, - "_6y": {"id": "under_6y_old", "short": "<6y", "long": "Under 6 Years Old"}, - "_7y": {"id": "under_7y_old", "short": "<7y", "long": "Under 7 Years Old"}, - "_8y": {"id": "under_8y_old", "short": "<8y", "long": "Under 8 Years Old"}, - "_10y": {"id": "under_10y_old", "short": "<10y", "long": "Under 10 Years Old"}, - "_12y": {"id": "under_12y_old", "short": "<12y", "long": "Under 12 Years Old"}, - "_15y": {"id": "under_15y_old", "short": "<15y", "long": "Under 15 Years Old"}, + "_1w": { + "id": "under_1w_old", + "short": "<1w", + "long": "Under 1 Week Old" + }, + "_1m": { + "id": "under_1m_old", + "short": "<1m", + "long": "Under 1 Month Old" + }, + "_2m": { + "id": "under_2m_old", + "short": "<2m", + "long": "Under 2 Months Old" + }, + "_3m": { + "id": "under_3m_old", + "short": "<3m", + "long": "Under 3 Months Old" + }, + "_4m": { + "id": "under_4m_old", + "short": "<4m", + "long": "Under 4 Months Old" + }, + "_5m": { + "id": "under_5m_old", + "short": "<5m", + "long": "Under 5 Months Old" + }, + "_6m": { + "id": "under_6m_old", + "short": "<6m", + "long": "Under 6 Months Old" + }, + "_1y": { + "id": "under_1y_old", + "short": "<1y", + "long": "Under 1 Year Old" + }, + "_2y": { + "id": "under_2y_old", + "short": "<2y", + "long": "Under 2 Years Old" + }, + "_3y": { + "id": "under_3y_old", + "short": "<3y", + "long": "Under 3 Years Old" + }, + "_4y": { + "id": "under_4y_old", + "short": "<4y", + "long": "Under 4 Years Old" + }, + "_5y": { + "id": "under_5y_old", + "short": "<5y", + "long": "Under 5 Years Old" + }, + "_6y": { + "id": "under_6y_old", + "short": "<6y", + "long": "Under 6 Years Old" + }, + "_7y": { + "id": "under_7y_old", + "short": "<7y", + "long": "Under 7 Years Old" + }, + "_8y": { + "id": "under_8y_old", + "short": "<8y", + "long": "Under 8 Years Old" + }, + "_10y": { + "id": "under_10y_old", + "short": "<10y", + "long": "Under 10 Years Old" + }, + "_12y": { + "id": "under_12y_old", + "short": "<12y", + "long": "Under 12 Years Old" + }, + "_15y": { + "id": "under_15y_old", + "short": "<15y", + "long": "Under 15 Years Old" + } } MIN_AGE_NAMES = { - "_1d": {"id": "over_1d_old", "short": "1d+", "long": "Over 1 Day Old"}, - "_1w": {"id": "over_1w_old", "short": "1w+", "long": "Over 1 Week Old"}, - "_1m": {"id": "over_1m_old", "short": "1m+", "long": "Over 1 Month Old"}, - "_2m": {"id": "over_2m_old", "short": "2m+", "long": "Over 2 Months Old"}, - "_3m": {"id": "over_3m_old", "short": "3m+", "long": "Over 3 Months Old"}, - "_4m": {"id": "over_4m_old", "short": "4m+", "long": "Over 4 Months Old"}, - "_5m": {"id": "over_5m_old", "short": "5m+", "long": "Over 5 Months Old"}, - "_6m": {"id": "over_6m_old", "short": "6m+", "long": "Over 6 Months Old"}, - "_1y": {"id": "over_1y_old", "short": "1y+", "long": "Over 1 Year Old"}, - "_2y": {"id": "over_2y_old", "short": "2y+", "long": "Over 2 Years Old"}, - "_3y": {"id": "over_3y_old", "short": "3y+", "long": "Over 3 Years Old"}, - "_4y": {"id": "over_4y_old", "short": "4y+", "long": "Over 4 Years Old"}, - "_5y": {"id": "over_5y_old", "short": "5y+", "long": "Over 5 Years Old"}, - "_6y": {"id": "over_6y_old", "short": "6y+", "long": "Over 6 Years Old"}, - "_7y": {"id": "over_7y_old", "short": "7y+", "long": "Over 7 Years Old"}, - "_8y": {"id": "over_8y_old", "short": "8y+", "long": "Over 8 Years Old"}, - "_10y": {"id": "over_10y_old", "short": "10y+", "long": "Over 10 Years Old"}, - "_12y": {"id": "over_12y_old", "short": "12y+", "long": "Over 12 Years Old"}, + "_1d": { + "id": "over_1d_old", + "short": "1d+", + "long": "Over 1 Day Old" + }, + "_1w": { + "id": "over_1w_old", + "short": "1w+", + "long": "Over 1 Week Old" + }, + "_1m": { + "id": "over_1m_old", + "short": "1m+", + "long": "Over 1 Month Old" + }, + "_2m": { + "id": "over_2m_old", + "short": "2m+", + "long": "Over 2 Months Old" + }, + "_3m": { + "id": "over_3m_old", + "short": "3m+", + "long": "Over 3 Months Old" + }, + "_4m": { + "id": "over_4m_old", + "short": "4m+", + "long": "Over 4 Months Old" + }, + "_5m": { + "id": "over_5m_old", + "short": "5m+", + "long": "Over 5 Months Old" + }, + "_6m": { + "id": "over_6m_old", + "short": "6m+", + "long": "Over 6 Months Old" + }, + "_1y": { + "id": "over_1y_old", + "short": "1y+", + "long": "Over 1 Year Old" + }, + "_2y": { + "id": "over_2y_old", + "short": "2y+", + "long": "Over 2 Years Old" + }, + "_3y": { + "id": "over_3y_old", + "short": "3y+", + "long": "Over 3 Years Old" + }, + "_4y": { + "id": "over_4y_old", + "short": "4y+", + "long": "Over 4 Years Old" + }, + "_5y": { + "id": "over_5y_old", + "short": "5y+", + "long": "Over 5 Years Old" + }, + "_6y": { + "id": "over_6y_old", + "short": "6y+", + "long": "Over 6 Years Old" + }, + "_7y": { + "id": "over_7y_old", + "short": "7y+", + "long": "Over 7 Years Old" + }, + "_8y": { + "id": "over_8y_old", + "short": "8y+", + "long": "Over 8 Years Old" + }, + "_10y": { + "id": "over_10y_old", + "short": "10y+", + "long": "Over 10 Years Old" + }, + "_12y": { + "id": "over_12y_old", + "short": "12y+", + "long": "Over 12 Years Old" + } } AMOUNT_RANGE_NAMES = { - "_0sats": {"id": "with_0sats", "short": "0 sats", "long": "0 Sats"}, - "_1sat_to_10sats": { - "id": "above_1sat_under_10sats", - "short": "1-10 sats", - "long": "1-10 Sats", - }, - "_10sats_to_100sats": { - "id": "above_10sats_under_100sats", - "short": "10-100 sats", - "long": "10-100 Sats", - }, - "_100sats_to_1k_sats": { - "id": "above_100sats_under_1k_sats", - "short": "100-1k sats", - "long": "100-1K Sats", - }, - "_1k_sats_to_10k_sats": { - "id": "above_1k_sats_under_10k_sats", - "short": "1k-10k sats", - "long": "1K-10K Sats", - }, - "_10k_sats_to_100k_sats": { - "id": "above_10k_sats_under_100k_sats", - "short": "10k-100k sats", - "long": "10K-100K Sats", - }, - "_100k_sats_to_1m_sats": { - "id": "above_100k_sats_under_1m_sats", - "short": "100k-1M sats", - "long": "100K-1M Sats", - }, - "_1m_sats_to_10m_sats": { - "id": "above_1m_sats_under_10m_sats", - "short": "1M-10M sats", - "long": "1M-10M Sats", - }, - "_10m_sats_to_1btc": { - "id": "above_10m_sats_under_1btc", - "short": "0.1-1 BTC", - "long": "0.1-1 BTC", - }, - "_1btc_to_10btc": { - "id": "above_1btc_under_10btc", - "short": "1-10 BTC", - "long": "1-10 BTC", - }, - "_10btc_to_100btc": { - "id": "above_10btc_under_100btc", - "short": "10-100 BTC", - "long": "10-100 BTC", - }, - "_100btc_to_1k_btc": { - "id": "above_100btc_under_1k_btc", - "short": "100-1k BTC", - "long": "100-1K BTC", - }, - "_1k_btc_to_10k_btc": { - "id": "above_1k_btc_under_10k_btc", - "short": "1k-10k BTC", - "long": "1K-10K BTC", - }, - "_10k_btc_to_100k_btc": { - "id": "above_10k_btc_under_100k_btc", - "short": "10k-100k BTC", - "long": "10K-100K BTC", - }, - "_100k_btc_or_more": { - "id": "above_100k_btc", - "short": "100k+ BTC", - "long": "100K+ BTC", - }, + "_0sats": { + "id": "with_0sats", + "short": "0 sats", + "long": "0 Sats" + }, + "_1sat_to_10sats": { + "id": "above_1sat_under_10sats", + "short": "1-10 sats", + "long": "1-10 Sats" + }, + "_10sats_to_100sats": { + "id": "above_10sats_under_100sats", + "short": "10-100 sats", + "long": "10-100 Sats" + }, + "_100sats_to_1k_sats": { + "id": "above_100sats_under_1k_sats", + "short": "100-1k sats", + "long": "100-1K Sats" + }, + "_1k_sats_to_10k_sats": { + "id": "above_1k_sats_under_10k_sats", + "short": "1k-10k sats", + "long": "1K-10K Sats" + }, + "_10k_sats_to_100k_sats": { + "id": "above_10k_sats_under_100k_sats", + "short": "10k-100k sats", + "long": "10K-100K Sats" + }, + "_100k_sats_to_1m_sats": { + "id": "above_100k_sats_under_1m_sats", + "short": "100k-1M sats", + "long": "100K-1M Sats" + }, + "_1m_sats_to_10m_sats": { + "id": "above_1m_sats_under_10m_sats", + "short": "1M-10M sats", + "long": "1M-10M Sats" + }, + "_10m_sats_to_1btc": { + "id": "above_10m_sats_under_1btc", + "short": "0.1-1 BTC", + "long": "0.1-1 BTC" + }, + "_1btc_to_10btc": { + "id": "above_1btc_under_10btc", + "short": "1-10 BTC", + "long": "1-10 BTC" + }, + "_10btc_to_100btc": { + "id": "above_10btc_under_100btc", + "short": "10-100 BTC", + "long": "10-100 BTC" + }, + "_100btc_to_1k_btc": { + "id": "above_100btc_under_1k_btc", + "short": "100-1k BTC", + "long": "100-1K BTC" + }, + "_1k_btc_to_10k_btc": { + "id": "above_1k_btc_under_10k_btc", + "short": "1k-10k BTC", + "long": "1K-10K BTC" + }, + "_10k_btc_to_100k_btc": { + "id": "above_10k_btc_under_100k_btc", + "short": "10k-100k BTC", + "long": "10K-100K BTC" + }, + "_100k_btc_or_more": { + "id": "above_100k_btc", + "short": "100k+ BTC", + "long": "100K+ BTC" + } } GE_AMOUNT_NAMES = { - "_1sat": {"id": "over_1sat", "short": "1+ sats", "long": "Over 1 Sat"}, - "_10sats": {"id": "over_10sats", "short": "10+ sats", "long": "Over 10 Sats"}, - "_100sats": { - "id": "over_100sats", - "short": "100+ sats", - "long": "Over 100 Sats", - }, - "_1k_sats": {"id": "over_1k_sats", "short": "1k+ sats", "long": "Over 1K Sats"}, - "_10k_sats": { - "id": "over_10k_sats", - "short": "10k+ sats", - "long": "Over 10K Sats", - }, - "_100k_sats": { - "id": "over_100k_sats", - "short": "100k+ sats", - "long": "Over 100K Sats", - }, - "_1m_sats": {"id": "over_1m_sats", "short": "1M+ sats", "long": "Over 1M Sats"}, - "_10m_sats": { - "id": "over_10m_sats", - "short": "0.1+ BTC", - "long": "Over 0.1 BTC", - }, - "_1btc": {"id": "over_1btc", "short": "1+ BTC", "long": "Over 1 BTC"}, - "_10btc": {"id": "over_10btc", "short": "10+ BTC", "long": "Over 10 BTC"}, - "_100btc": {"id": "over_100btc", "short": "100+ BTC", "long": "Over 100 BTC"}, - "_1k_btc": {"id": "over_1k_btc", "short": "1k+ BTC", "long": "Over 1K BTC"}, - "_10k_btc": {"id": "over_10k_btc", "short": "10k+ BTC", "long": "Over 10K BTC"}, + "_1sat": { + "id": "over_1sat", + "short": "1+ sats", + "long": "Over 1 Sat" + }, + "_10sats": { + "id": "over_10sats", + "short": "10+ sats", + "long": "Over 10 Sats" + }, + "_100sats": { + "id": "over_100sats", + "short": "100+ sats", + "long": "Over 100 Sats" + }, + "_1k_sats": { + "id": "over_1k_sats", + "short": "1k+ sats", + "long": "Over 1K Sats" + }, + "_10k_sats": { + "id": "over_10k_sats", + "short": "10k+ sats", + "long": "Over 10K Sats" + }, + "_100k_sats": { + "id": "over_100k_sats", + "short": "100k+ sats", + "long": "Over 100K Sats" + }, + "_1m_sats": { + "id": "over_1m_sats", + "short": "1M+ sats", + "long": "Over 1M Sats" + }, + "_10m_sats": { + "id": "over_10m_sats", + "short": "0.1+ BTC", + "long": "Over 0.1 BTC" + }, + "_1btc": { + "id": "over_1btc", + "short": "1+ BTC", + "long": "Over 1 BTC" + }, + "_10btc": { + "id": "over_10btc", + "short": "10+ BTC", + "long": "Over 10 BTC" + }, + "_100btc": { + "id": "over_100btc", + "short": "100+ BTC", + "long": "Over 100 BTC" + }, + "_1k_btc": { + "id": "over_1k_btc", + "short": "1k+ BTC", + "long": "Over 1K BTC" + }, + "_10k_btc": { + "id": "over_10k_btc", + "short": "10k+ BTC", + "long": "Over 10K BTC" + } } LT_AMOUNT_NAMES = { - "_10sats": {"id": "under_10sats", "short": "<10 sats", "long": "Under 10 Sats"}, - "_100sats": { - "id": "under_100sats", - "short": "<100 sats", - "long": "Under 100 Sats", - }, - "_1k_sats": { - "id": "under_1k_sats", - "short": "<1k sats", - "long": "Under 1K Sats", - }, - "_10k_sats": { - "id": "under_10k_sats", - "short": "<10k sats", - "long": "Under 10K Sats", - }, - "_100k_sats": { - "id": "under_100k_sats", - "short": "<100k sats", - "long": "Under 100K Sats", - }, - "_1m_sats": { - "id": "under_1m_sats", - "short": "<1M sats", - "long": "Under 1M Sats", - }, - "_10m_sats": { - "id": "under_10m_sats", - "short": "<0.1 BTC", - "long": "Under 0.1 BTC", - }, - "_1btc": {"id": "under_1btc", "short": "<1 BTC", "long": "Under 1 BTC"}, - "_10btc": {"id": "under_10btc", "short": "<10 BTC", "long": "Under 10 BTC"}, - "_100btc": {"id": "under_100btc", "short": "<100 BTC", "long": "Under 100 BTC"}, - "_1k_btc": {"id": "under_1k_btc", "short": "<1k BTC", "long": "Under 1K BTC"}, - "_10k_btc": { - "id": "under_10k_btc", - "short": "<10k BTC", - "long": "Under 10K BTC", - }, - "_100k_btc": { - "id": "under_100k_btc", - "short": "<100k BTC", - "long": "Under 100K BTC", - }, + "_10sats": { + "id": "under_10sats", + "short": "<10 sats", + "long": "Under 10 Sats" + }, + "_100sats": { + "id": "under_100sats", + "short": "<100 sats", + "long": "Under 100 Sats" + }, + "_1k_sats": { + "id": "under_1k_sats", + "short": "<1k sats", + "long": "Under 1K Sats" + }, + "_10k_sats": { + "id": "under_10k_sats", + "short": "<10k sats", + "long": "Under 10K Sats" + }, + "_100k_sats": { + "id": "under_100k_sats", + "short": "<100k sats", + "long": "Under 100K Sats" + }, + "_1m_sats": { + "id": "under_1m_sats", + "short": "<1M sats", + "long": "Under 1M Sats" + }, + "_10m_sats": { + "id": "under_10m_sats", + "short": "<0.1 BTC", + "long": "Under 0.1 BTC" + }, + "_1btc": { + "id": "under_1btc", + "short": "<1 BTC", + "long": "Under 1 BTC" + }, + "_10btc": { + "id": "under_10btc", + "short": "<10 BTC", + "long": "Under 10 BTC" + }, + "_100btc": { + "id": "under_100btc", + "short": "<100 BTC", + "long": "Under 100 BTC" + }, + "_1k_btc": { + "id": "under_1k_btc", + "short": "<1k BTC", + "long": "Under 1K BTC" + }, + "_10k_btc": { + "id": "under_10k_btc", + "short": "<10k BTC", + "long": "Under 10K BTC" + }, + "_100k_btc": { + "id": "under_100k_btc", + "short": "<100k BTC", + "long": "Under 100K BTC" + } } - def __init__(self, base_url: str = "http://localhost:3000", timeout: float = 30.0): + def __init__(self, base_url: str = 'http://localhost:3000', timeout: float = 30.0): super().__init__(base_url, timeout) self.metrics = MetricsTree(self) @@ -7196,7 +4964,7 @@ class BrkClient(BrkClientBase): Compact OpenAPI specification optimized for LLM consumption. Removes redundant fields while preserving essential API information. Full spec available at `/openapi.json`. Endpoint: `GET /api.json`""" - return self.get_json("/api.json") + return self.get_json('/api.json') def get_address(self, address: Address) -> AddressStats: """Address information. @@ -7206,14 +4974,9 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-address)* Endpoint: `GET /api/address/{address}`""" - return self.get_json(f"/api/address/{address}") + return self.get_json(f'/api/address/{address}') - def get_address_txs( - self, - address: Address, - after_txid: Optional[str] = None, - limit: Optional[float] = None, - ) -> List[Txid]: + def get_address_txs(self, address: Address, after_txid: Optional[str] = None, limit: Optional[float] = None) -> List[Txid]: """Address transaction IDs. Get transaction IDs for an address, newest first. Use after_txid for pagination. @@ -7222,20 +4985,13 @@ class BrkClient(BrkClientBase): Endpoint: `GET /api/address/{address}/txs`""" params = [] - if after_txid is not None: - params.append(f"after_txid={after_txid}") - if limit is not None: - params.append(f"limit={limit}") - query = "&".join(params) - path = f"/api/address/{address}/txs{'?' + query if query else ''}" + if after_txid is not None: params.append(f'after_txid={after_txid}') + if limit is not None: params.append(f'limit={limit}') + query = '&'.join(params) + path = f'/api/address/{address}/txs{"?" + query if query else ""}' return self.get_json(path) - def get_address_confirmed_txs( - self, - address: Address, - after_txid: Optional[str] = None, - limit: Optional[float] = None, - ) -> List[Txid]: + def get_address_confirmed_txs(self, address: Address, after_txid: Optional[str] = None, limit: Optional[float] = None) -> List[Txid]: """Address confirmed transactions. Get confirmed transaction IDs for an address, 25 per page. Use ?after_txid= for pagination. @@ -7244,12 +5000,10 @@ class BrkClient(BrkClientBase): Endpoint: `GET /api/address/{address}/txs/chain`""" params = [] - if after_txid is not None: - params.append(f"after_txid={after_txid}") - if limit is not None: - params.append(f"limit={limit}") - query = "&".join(params) - path = f"/api/address/{address}/txs/chain{'?' + query if query else ''}" + if after_txid is not None: params.append(f'after_txid={after_txid}') + if limit is not None: params.append(f'limit={limit}') + query = '&'.join(params) + path = f'/api/address/{address}/txs/chain{"?" + query if query else ""}' return self.get_json(path) def get_address_mempool_txs(self, address: Address) -> List[Txid]: @@ -7260,7 +5014,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-transactions-mempool)* Endpoint: `GET /api/address/{address}/txs/mempool`""" - return self.get_json(f"/api/address/{address}/txs/mempool") + return self.get_json(f'/api/address/{address}/txs/mempool') def get_address_utxos(self, address: Address) -> List[Utxo]: """Address UTXOs. @@ -7270,7 +5024,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-utxo)* Endpoint: `GET /api/address/{address}/utxo`""" - return self.get_json(f"/api/address/{address}/utxo") + return self.get_json(f'/api/address/{address}/utxo') def get_block_by_height(self, height: Height) -> BlockInfo: """Block by height. @@ -7280,7 +5034,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-height)* Endpoint: `GET /api/block-height/{height}`""" - return self.get_json(f"/api/block-height/{height}") + return self.get_json(f'/api/block-height/{height}') def get_block(self, hash: BlockHash) -> BlockInfo: """Block information. @@ -7290,7 +5044,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-block)* Endpoint: `GET /api/block/{hash}`""" - return self.get_json(f"/api/block/{hash}") + return self.get_json(f'/api/block/{hash}') def get_block_raw(self, hash: BlockHash) -> List[float]: """Raw block. @@ -7300,7 +5054,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-raw)* Endpoint: `GET /api/block/{hash}/raw`""" - return self.get_json(f"/api/block/{hash}/raw") + return self.get_json(f'/api/block/{hash}/raw') def get_block_status(self, hash: BlockHash) -> BlockStatus: """Block status. @@ -7310,7 +5064,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-status)* Endpoint: `GET /api/block/{hash}/status`""" - return self.get_json(f"/api/block/{hash}/status") + return self.get_json(f'/api/block/{hash}/status') def get_block_txid(self, hash: BlockHash, index: TxIndex) -> Txid: """Transaction ID at index. @@ -7320,7 +5074,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-transaction-id)* Endpoint: `GET /api/block/{hash}/txid/{index}`""" - return self.get_json(f"/api/block/{hash}/txid/{index}") + return self.get_json(f'/api/block/{hash}/txid/{index}') def get_block_txids(self, hash: BlockHash) -> List[Txid]: """Block transaction IDs. @@ -7330,7 +5084,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-transaction-ids)* Endpoint: `GET /api/block/{hash}/txids`""" - return self.get_json(f"/api/block/{hash}/txids") + return self.get_json(f'/api/block/{hash}/txids') def get_block_txs(self, hash: BlockHash, start_index: TxIndex) -> List[Transaction]: """Block transactions (paginated). @@ -7340,7 +5094,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-transactions)* Endpoint: `GET /api/block/{hash}/txs/{start_index}`""" - return self.get_json(f"/api/block/{hash}/txs/{start_index}") + return self.get_json(f'/api/block/{hash}/txs/{start_index}') def get_blocks(self) -> List[BlockInfo]: """Recent blocks. @@ -7350,7 +5104,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-blocks)* Endpoint: `GET /api/blocks`""" - return self.get_json("/api/blocks") + return self.get_json('/api/blocks') def get_blocks_from_height(self, height: Height) -> List[BlockInfo]: """Blocks from height. @@ -7360,7 +5114,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-blocks)* Endpoint: `GET /api/blocks/{height}`""" - return self.get_json(f"/api/blocks/{height}") + return self.get_json(f'/api/blocks/{height}') def get_mempool(self) -> MempoolInfo: """Mempool statistics. @@ -7370,7 +5124,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-mempool)* Endpoint: `GET /api/mempool/info`""" - return self.get_json("/api/mempool/info") + return self.get_json('/api/mempool/info') def get_mempool_txids(self) -> List[Txid]: """Mempool transaction IDs. @@ -7380,7 +5134,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-mempool-transaction-ids)* Endpoint: `GET /api/mempool/txids`""" - return self.get_json("/api/mempool/txids") + return self.get_json('/api/mempool/txids') def get_metric_info(self, metric: Metric) -> List[Index]: """Get supported indexes for a metric. @@ -7388,34 +5142,22 @@ class BrkClient(BrkClientBase): Returns the list of indexes supported by the specified metric. For example, `realized_price` might be available on dateindex, weekindex, and monthindex. Endpoint: `GET /api/metric/{metric}`""" - return self.get_json(f"/api/metric/{metric}") + return self.get_json(f'/api/metric/{metric}') - def get_metric( - self, - metric: Metric, - index: Index, - start: Optional[float] = None, - end: Optional[float] = None, - limit: Optional[str] = None, - format: Optional[Format] = None, - ) -> Union[AnyMetricData, str]: + def get_metric(self, metric: Metric, index: Index, start: Optional[float] = None, end: Optional[float] = None, limit: Optional[str] = None, format: Optional[Format] = None) -> Union[AnyMetricData, str]: """Get metric data. Fetch data for a specific metric at the given index. Use query parameters to filter by date range and format (json/csv). Endpoint: `GET /api/metric/{metric}/{index}`""" params = [] - if start is not None: - params.append(f"start={start}") - if end is not None: - params.append(f"end={end}") - if limit is not None: - params.append(f"limit={limit}") - if format is not None: - params.append(f"format={format}") - query = "&".join(params) - path = f"/api/metric/{metric}/{index}{'?' + query if query else ''}" - if format == "csv": + if start is not None: params.append(f'start={start}') + if end is not None: params.append(f'end={end}') + if limit is not None: params.append(f'limit={limit}') + if format is not None: params.append(f'format={format}') + query = '&'.join(params) + path = f'/api/metric/{metric}/{index}{"?" + query if query else ""}' + if format == 'csv': return self.get_text(path) return self.get_json(path) @@ -7425,36 +5167,24 @@ class BrkClient(BrkClientBase): Returns the complete hierarchical catalog of available metrics organized as a tree structure. Metrics are grouped by categories and subcategories. Endpoint: `GET /api/metrics`""" - return self.get_json("/api/metrics") + return self.get_json('/api/metrics') - def get_metrics( - self, - metrics: Metrics, - index: Index, - start: Optional[float] = None, - end: Optional[float] = None, - limit: Optional[str] = None, - format: Optional[Format] = None, - ) -> Union[List[AnyMetricData], str]: + def get_metrics(self, metrics: Metrics, index: Index, start: Optional[float] = None, end: Optional[float] = None, limit: Optional[str] = None, format: Optional[Format] = None) -> Union[List[AnyMetricData], str]: """Bulk metric data. Fetch multiple metrics in a single request. Supports filtering by index and date range. Returns an array of MetricData objects. For a single metric, use `get_metric` instead. Endpoint: `GET /api/metrics/bulk`""" params = [] - params.append(f"metrics={metrics}") - params.append(f"index={index}") - if start is not None: - params.append(f"start={start}") - if end is not None: - params.append(f"end={end}") - if limit is not None: - params.append(f"limit={limit}") - if format is not None: - params.append(f"format={format}") - query = "&".join(params) - path = f"/api/metrics/bulk{'?' + query if query else ''}" - if format == "csv": + params.append(f'metrics={metrics}') + params.append(f'index={index}') + if start is not None: params.append(f'start={start}') + if end is not None: params.append(f'end={end}') + if limit is not None: params.append(f'limit={limit}') + if format is not None: params.append(f'format={format}') + query = '&'.join(params) + path = f'/api/metrics/bulk{"?" + query if query else ""}' + if format == 'csv': return self.get_text(path) return self.get_json(path) @@ -7464,7 +5194,7 @@ class BrkClient(BrkClientBase): Returns the number of metrics available per index type. Endpoint: `GET /api/metrics/count`""" - return self.get_json("/api/metrics/count") + return self.get_json('/api/metrics/count') def get_indexes(self) -> List[IndexInfo]: """List available indexes. @@ -7472,7 +5202,7 @@ class BrkClient(BrkClientBase): Returns all available indexes with their accepted query aliases. Use any alias when querying metrics. Endpoint: `GET /api/metrics/indexes`""" - return self.get_json("/api/metrics/indexes") + return self.get_json('/api/metrics/indexes') def list_metrics(self, page: Optional[float] = None) -> PaginatedMetrics: """Metrics list. @@ -7481,25 +5211,21 @@ class BrkClient(BrkClientBase): Endpoint: `GET /api/metrics/list`""" params = [] - if page is not None: - params.append(f"page={page}") - query = "&".join(params) - path = f"/api/metrics/list{'?' + query if query else ''}" + if page is not None: params.append(f'page={page}') + query = '&'.join(params) + path = f'/api/metrics/list{"?" + query if query else ""}' return self.get_json(path) - def search_metrics( - self, metric: Metric, limit: Optional[Limit] = None - ) -> List[Metric]: + def search_metrics(self, metric: Metric, limit: Optional[Limit] = None) -> List[Metric]: """Search metrics. Fuzzy search for metrics by name. Supports partial matches and typos. Endpoint: `GET /api/metrics/search/{metric}`""" params = [] - if limit is not None: - params.append(f"limit={limit}") - query = "&".join(params) - path = f"/api/metrics/search/{metric}{'?' + query if query else ''}" + if limit is not None: params.append(f'limit={limit}') + query = '&'.join(params) + path = f'/api/metrics/search/{metric}{"?" + query if query else ""}' return self.get_json(path) def get_disk_usage(self) -> DiskUsage: @@ -7508,7 +5234,7 @@ class BrkClient(BrkClientBase): Returns the disk space used by BRK and Bitcoin data. Endpoint: `GET /api/server/disk`""" - return self.get_json("/api/server/disk") + return self.get_json('/api/server/disk') def get_sync_status(self) -> SyncStatus: """Sync status. @@ -7516,7 +5242,7 @@ class BrkClient(BrkClientBase): Returns the sync status of the indexer, including indexed height, tip height, blocks behind, and last indexed timestamp. Endpoint: `GET /api/server/sync`""" - return self.get_json("/api/server/sync") + return self.get_json('/api/server/sync') def get_tx(self, txid: Txid) -> Transaction: """Transaction information. @@ -7526,7 +5252,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction)* Endpoint: `GET /api/tx/{txid}`""" - return self.get_json(f"/api/tx/{txid}") + return self.get_json(f'/api/tx/{txid}') def get_tx_hex(self, txid: Txid) -> Hex: """Transaction hex. @@ -7536,7 +5262,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction-hex)* Endpoint: `GET /api/tx/{txid}/hex`""" - return self.get_json(f"/api/tx/{txid}/hex") + return self.get_json(f'/api/tx/{txid}/hex') def get_tx_outspend(self, txid: Txid, vout: Vout) -> TxOutspend: """Output spend status. @@ -7546,7 +5272,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction-outspend)* Endpoint: `GET /api/tx/{txid}/outspend/{vout}`""" - return self.get_json(f"/api/tx/{txid}/outspend/{vout}") + return self.get_json(f'/api/tx/{txid}/outspend/{vout}') def get_tx_outspends(self, txid: Txid) -> List[TxOutspend]: """All output spend statuses. @@ -7556,7 +5282,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction-outspends)* Endpoint: `GET /api/tx/{txid}/outspends`""" - return self.get_json(f"/api/tx/{txid}/outspends") + return self.get_json(f'/api/tx/{txid}/outspends') def get_tx_status(self, txid: Txid) -> TxStatus: """Transaction status. @@ -7566,7 +5292,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction-status)* Endpoint: `GET /api/tx/{txid}/status`""" - return self.get_json(f"/api/tx/{txid}/status") + return self.get_json(f'/api/tx/{txid}/status') def get_difficulty_adjustment(self) -> DifficultyAdjustment: """Difficulty adjustment. @@ -7576,7 +5302,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-difficulty-adjustment)* Endpoint: `GET /api/v1/difficulty-adjustment`""" - return self.get_json("/api/v1/difficulty-adjustment") + return self.get_json('/api/v1/difficulty-adjustment') def get_mempool_blocks(self) -> List[MempoolBlock]: """Projected mempool blocks. @@ -7586,7 +5312,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-mempool-blocks-fees)* Endpoint: `GET /api/v1/fees/mempool-blocks`""" - return self.get_json("/api/v1/fees/mempool-blocks") + return self.get_json('/api/v1/fees/mempool-blocks') def get_recommended_fees(self) -> RecommendedFees: """Recommended fees. @@ -7596,7 +5322,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-recommended-fees)* Endpoint: `GET /api/v1/fees/recommended`""" - return self.get_json("/api/v1/fees/recommended") + return self.get_json('/api/v1/fees/recommended') def get_block_fee_rates(self, time_period: TimePeriod) -> Any: """Block fee rates (WIP). @@ -7606,7 +5332,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-feerates)* Endpoint: `GET /api/v1/mining/blocks/fee-rates/{time_period}`""" - return self.get_json(f"/api/v1/mining/blocks/fee-rates/{time_period}") + return self.get_json(f'/api/v1/mining/blocks/fee-rates/{time_period}') def get_block_fees(self, time_period: TimePeriod) -> List[BlockFeesEntry]: """Block fees. @@ -7616,7 +5342,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-fees)* Endpoint: `GET /api/v1/mining/blocks/fees/{time_period}`""" - return self.get_json(f"/api/v1/mining/blocks/fees/{time_period}") + return self.get_json(f'/api/v1/mining/blocks/fees/{time_period}') def get_block_rewards(self, time_period: TimePeriod) -> List[BlockRewardsEntry]: """Block rewards. @@ -7626,7 +5352,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-rewards)* Endpoint: `GET /api/v1/mining/blocks/rewards/{time_period}`""" - return self.get_json(f"/api/v1/mining/blocks/rewards/{time_period}") + return self.get_json(f'/api/v1/mining/blocks/rewards/{time_period}') def get_block_sizes_weights(self, time_period: TimePeriod) -> BlockSizesWeights: """Block sizes and weights. @@ -7636,7 +5362,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-sizes-weights)* Endpoint: `GET /api/v1/mining/blocks/sizes-weights/{time_period}`""" - return self.get_json(f"/api/v1/mining/blocks/sizes-weights/{time_period}") + return self.get_json(f'/api/v1/mining/blocks/sizes-weights/{time_period}') def get_block_by_timestamp(self, timestamp: Timestamp) -> BlockTimestamp: """Block by timestamp. @@ -7646,7 +5372,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-timestamp)* Endpoint: `GET /api/v1/mining/blocks/timestamp/{timestamp}`""" - return self.get_json(f"/api/v1/mining/blocks/timestamp/{timestamp}") + return self.get_json(f'/api/v1/mining/blocks/timestamp/{timestamp}') def get_difficulty_adjustments(self) -> List[DifficultyAdjustmentEntry]: """Difficulty adjustments (all time). @@ -7656,11 +5382,9 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-difficulty-adjustments)* Endpoint: `GET /api/v1/mining/difficulty-adjustments`""" - return self.get_json("/api/v1/mining/difficulty-adjustments") + return self.get_json('/api/v1/mining/difficulty-adjustments') - def get_difficulty_adjustments_by_period( - self, time_period: TimePeriod - ) -> List[DifficultyAdjustmentEntry]: + def get_difficulty_adjustments_by_period(self, time_period: TimePeriod) -> List[DifficultyAdjustmentEntry]: """Difficulty adjustments. Get historical difficulty adjustments for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y. @@ -7668,7 +5392,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-difficulty-adjustments)* Endpoint: `GET /api/v1/mining/difficulty-adjustments/{time_period}`""" - return self.get_json(f"/api/v1/mining/difficulty-adjustments/{time_period}") + return self.get_json(f'/api/v1/mining/difficulty-adjustments/{time_period}') def get_hashrate(self) -> HashrateSummary: """Network hashrate (all time). @@ -7678,7 +5402,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-hashrate)* Endpoint: `GET /api/v1/mining/hashrate`""" - return self.get_json("/api/v1/mining/hashrate") + return self.get_json('/api/v1/mining/hashrate') def get_hashrate_by_period(self, time_period: TimePeriod) -> HashrateSummary: """Network hashrate. @@ -7688,7 +5412,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-hashrate)* Endpoint: `GET /api/v1/mining/hashrate/{time_period}`""" - return self.get_json(f"/api/v1/mining/hashrate/{time_period}") + return self.get_json(f'/api/v1/mining/hashrate/{time_period}') def get_pool(self, slug: PoolSlug) -> PoolDetail: """Mining pool details. @@ -7698,7 +5422,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-mining-pool)* Endpoint: `GET /api/v1/mining/pool/{slug}`""" - return self.get_json(f"/api/v1/mining/pool/{slug}") + return self.get_json(f'/api/v1/mining/pool/{slug}') def get_pools(self) -> List[PoolInfo]: """List all mining pools. @@ -7708,7 +5432,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-mining-pools)* Endpoint: `GET /api/v1/mining/pools`""" - return self.get_json("/api/v1/mining/pools") + return self.get_json('/api/v1/mining/pools') def get_pool_stats(self, time_period: TimePeriod) -> PoolsSummary: """Mining pool statistics. @@ -7718,7 +5442,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-mining-pools)* Endpoint: `GET /api/v1/mining/pools/{time_period}`""" - return self.get_json(f"/api/v1/mining/pools/{time_period}") + return self.get_json(f'/api/v1/mining/pools/{time_period}') def get_reward_stats(self, block_count: float) -> RewardStats: """Mining reward statistics. @@ -7728,7 +5452,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-reward-stats)* Endpoint: `GET /api/v1/mining/reward-stats/{block_count}`""" - return self.get_json(f"/api/v1/mining/reward-stats/{block_count}") + return self.get_json(f'/api/v1/mining/reward-stats/{block_count}') def validate_address(self, address: str) -> AddressValidation: """Validate address. @@ -7738,7 +5462,7 @@ class BrkClient(BrkClientBase): *[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-validate)* Endpoint: `GET /api/v1/validate-address/{address}`""" - return self.get_json(f"/api/v1/validate-address/{address}") + return self.get_json(f'/api/v1/validate-address/{address}') def get_health(self) -> Health: """Health check. @@ -7746,7 +5470,7 @@ class BrkClient(BrkClientBase): Returns the health status of the API server, including uptime information. Endpoint: `GET /health`""" - return self.get_json("/health") + return self.get_json('/health') def get_openapi(self) -> Any: """OpenAPI specification. @@ -7754,7 +5478,7 @@ class BrkClient(BrkClientBase): Full OpenAPI 3.1 specification for this API. Endpoint: `GET /openapi.json`""" - return self.get_json("/openapi.json") + return self.get_json('/openapi.json') def get_version(self) -> str: """API version. @@ -7762,4 +5486,5 @@ class BrkClient(BrkClientBase): Returns the current version of the API server Endpoint: `GET /version`""" - return self.get_json("/version") + return self.get_json('/version') + diff --git a/packages/brk_client/pyproject.toml b/packages/brk_client/pyproject.toml index 10f07a953..0db9cebbd 100644 --- a/packages/brk_client/pyproject.toml +++ b/packages/brk_client/pyproject.toml @@ -1,13 +1,13 @@ [project] name = "brk-client" -version = "0.1.0-beta.1" +version = "0.1.0" description = "Python client for the Bitcoin Research Kit" readme = "README.md" requires-python = ">=3.9" license = "MIT" keywords = ["bitcoin", "blockchain", "analytics", "on-chain"] classifiers = [ - "Development Status :: 4 - Beta", + "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3",