diff --git a/crates/brk_bindgen/src/analysis/tree.rs b/crates/brk_bindgen/src/analysis/tree.rs index 41383b382..c16e2810a 100644 --- a/crates/brk_bindgen/src/analysis/tree.rs +++ b/crates/brk_bindgen/src/analysis/tree.rs @@ -123,6 +123,9 @@ pub struct PatternBaseResult { /// Whether this instance uses suffix mode (common prefix) or prefix mode (common suffix). /// Used to check compatibility with the pattern's mode. pub is_suffix_mode: bool, + /// The field parts (suffix in suffix mode, prefix in prefix mode) for each field. + /// Used to check if instance field parts match the pattern's field parts. + pub field_parts: HashMap, } /// Get the metric base for a pattern instance by analyzing direct children. @@ -141,6 +144,7 @@ pub fn get_pattern_instance_base(node: &TreeNode) -> PatternBaseResult { base: String::new(), has_outlier: false, is_suffix_mode: true, // default + field_parts: HashMap::new(), }; } @@ -150,6 +154,7 @@ pub fn get_pattern_instance_base(node: &TreeNode) -> PatternBaseResult { base: result.base, has_outlier: result.has_outlier, is_suffix_mode: result.is_suffix_mode, + field_parts: result.field_parts, }; } @@ -168,6 +173,7 @@ pub fn get_pattern_instance_base(node: &TreeNode) -> PatternBaseResult { base: result.base, has_outlier: true, is_suffix_mode: result.is_suffix_mode, + field_parts: result.field_parts, }; } } @@ -179,14 +185,16 @@ pub fn get_pattern_instance_base(node: &TreeNode) -> PatternBaseResult { base: String::new(), has_outlier: false, is_suffix_mode: true, // default + field_parts: HashMap::new(), } } -/// Result of try_find_base: base name, has_outlier flag, and is_suffix_mode flag. +/// Result of try_find_base: base name, has_outlier flag, is_suffix_mode flag, and field_parts. struct FindBaseResult { base: String, has_outlier: bool, is_suffix_mode: bool, + field_parts: HashMap, } /// Try to find a common base from child names using prefix/suffix detection. @@ -197,20 +205,52 @@ fn try_find_base(child_names: &[(String, String)], is_outlier_attempt: bool) -> // Try common prefix first (suffix mode) if let Some(prefix) = find_common_prefix(&leaf_names) { let base = prefix.trim_end_matches('_').to_string(); + let mut field_parts = HashMap::new(); + for (field_name, leaf_name) in child_names { + // Compute the suffix part for this field + let suffix = if leaf_name == &base { + String::new() + } else { + leaf_name + .strip_prefix(&prefix) + .unwrap_or(leaf_name) + .to_string() + }; + field_parts.insert(field_name.clone(), suffix); + } return Some(FindBaseResult { base, has_outlier: is_outlier_attempt, is_suffix_mode: true, + field_parts, }); } // Try common suffix (prefix mode) if let Some(suffix) = find_common_suffix(&leaf_names) { let base = suffix.trim_start_matches('_').to_string(); + let mut field_parts = HashMap::new(); + for (field_name, leaf_name) in child_names { + // Compute the prefix part for this field + let prefix_part = leaf_name + .strip_suffix(&suffix) + .map(|s| { + if s.is_empty() { + String::new() + } else if s.ends_with('_') { + s.to_string() + } else { + format!("{}_", s) + } + }) + .unwrap_or_default(); + field_parts.insert(field_name.clone(), prefix_part); + } return Some(FindBaseResult { base, has_outlier: is_outlier_attempt, is_suffix_mode: false, + field_parts, }); } diff --git a/crates/brk_bindgen/src/generate/tree.rs b/crates/brk_bindgen/src/generate/tree.rs index 4441047a4..0f1ac017c 100644 --- a/crates/brk_bindgen/src/generate/tree.rs +++ b/crates/brk_bindgen/src/generate/tree.rs @@ -55,17 +55,20 @@ pub fn prepare_tree_node<'a>( .map(|(f, _)| f.clone()) .collect(); - // Skip if this matches a parameterizable pattern AND has no outlier AND mode matches + // Skip if this matches a parameterizable pattern AND has no outlier AND field parts match let base_result = get_pattern_instance_base(node); - let mode_matches = pattern_lookup + let pattern_fully_matches = pattern_lookup .get(&fields) .and_then(|name| metadata.find_pattern(name)) - .is_none_or(|p| p.is_suffix_mode() == base_result.is_suffix_mode); + .is_some_and(|p| { + p.is_suffix_mode() == base_result.is_suffix_mode + && p.field_parts_match(&base_result.field_parts) + }); if let Some(pattern_name) = pattern_lookup.get(&fields) && pattern_name != name && metadata.is_parameterizable(pattern_name) && !base_result.has_outlier - && mode_matches + && pattern_fully_matches { return None; } @@ -89,16 +92,23 @@ pub fn prepare_tree_node<'a>( .as_ref() .is_some_and(|cf| metadata.matches_pattern(cf)); - // Check if the pattern mode matches the instance mode - let mode_matches = child_fields + // Check if the pattern mode AND field parts match the instance + let pattern_fully_matches = child_fields .as_ref() .and_then(|cf| metadata.find_pattern_by_fields(cf)) - .is_none_or(|p| p.is_suffix_mode() == base_result.is_suffix_mode); + .is_some_and(|p| { + // Mode must match (suffix vs prefix) + if p.is_suffix_mode() != base_result.is_suffix_mode { + return false; + } + // Field parts must also match + p.field_parts_match(&base_result.field_parts) + }); // should_inline determines if we generate an inline struct type - // We inline if: it's a branch AND (doesn't match any pattern OR mode doesn't match OR has outlier) + // We inline if: it's a branch AND (doesn't match any pattern OR pattern doesn't fully match OR has outlier) let should_inline = - !is_leaf && (!matches_any_pattern || !mode_matches || base_result.has_outlier); + !is_leaf && (!matches_any_pattern || !pattern_fully_matches || base_result.has_outlier); // Inline type name (only used when should_inline is true) let inline_type_name = if should_inline { diff --git a/crates/brk_bindgen/src/types/structs.rs b/crates/brk_bindgen/src/types/structs.rs index c85c43d68..36c693363 100644 --- a/crates/brk_bindgen/src/types/structs.rs +++ b/crates/brk_bindgen/src/types/structs.rs @@ -1,6 +1,6 @@ //! Structural pattern and field types. -use std::collections::BTreeSet; +use std::collections::{BTreeSet, HashMap}; use brk_types::Index; @@ -47,6 +47,30 @@ impl StructuralPattern { pub fn is_suffix_mode(&self) -> bool { matches!(&self.mode, Some(PatternMode::Suffix { .. })) } + + /// Check if the given instance field parts match this pattern's field parts. + /// Returns true if all field parts in the pattern match the instance's field parts. + pub fn field_parts_match(&self, instance_field_parts: &HashMap) -> bool { + match &self.mode { + Some(PatternMode::Suffix { relatives }) => { + // For each field in the pattern, check if the instance has the same suffix + relatives.iter().all(|(field_name, pattern_suffix)| { + instance_field_parts + .get(field_name) + .is_some_and(|instance_suffix| instance_suffix == pattern_suffix) + }) + } + Some(PatternMode::Prefix { prefixes }) => { + // For each field in the pattern, check if the instance has the same prefix + prefixes.iter().all(|(field_name, pattern_prefix)| { + instance_field_parts + .get(field_name) + .is_some_and(|instance_prefix| instance_prefix == pattern_prefix) + }) + } + None => false, // Non-parameterizable patterns don't use field parts + } + } } /// A field in a structural pattern. diff --git a/crates/brk_client/src/lib.rs b/crates/brk_client/src/lib.rs index 2e0c49186..616aba926 100644 --- a/crates/brk_client/src/lib.rs +++ b/crates/brk_client/src/lib.rs @@ -7,11 +7,12 @@ #![allow(clippy::useless_format)] #![allow(clippy::unnecessary_to_owned)] +use std::sync::Arc; +use std::ops::{Bound, RangeBounds}; +use serde::de::DeserializeOwned; pub use brk_cohort::*; pub use brk_types::*; -use serde::de::DeserializeOwned; -use std::ops::{Bound, RangeBounds}; -use std::sync::Arc; + /// Error type for BRK client operations. #[derive(Debug)] @@ -76,9 +77,7 @@ impl BrkClientBase { let response = minreq::get(&url) .with_timeout(self.timeout_secs) .send() - .map_err(|e| BrkError { - message: e.to_string(), - })?; + .map_err(|e| BrkError { message: e.to_string() })?; if response.status_code >= 400 { return Err(BrkError { @@ -91,9 +90,9 @@ impl BrkClientBase { /// Make a GET request and deserialize JSON response. pub fn get_json(&self, path: &str) -> Result { - self.get(path)?.json().map_err(|e| BrkError { - message: e.to_string(), - }) + self.get(path)? + .json() + .map_err(|e| BrkError { message: e.to_string() }) } /// Make a GET request and return raw text response. @@ -101,34 +100,25 @@ impl BrkClientBase { self.get(path)? .as_str() .map(|s| s.to_string()) - .map_err(|e| BrkError { - message: e.to_string(), - }) + .map_err(|e| BrkError { message: e.to_string() }) } } /// Build metric name with suffix. #[inline] fn _m(acc: &str, s: &str) -> String { - if s.is_empty() { - acc.to_string() - } else if acc.is_empty() { - s.to_string() - } else { - format!("{acc}_{s}") - } + if s.is_empty() { acc.to_string() } + else if acc.is_empty() { s.to_string() } + else { format!("{acc}_{s}") } } /// Build metric name with prefix. #[inline] fn _p(prefix: &str, acc: &str) -> String { - if acc.is_empty() { - prefix.to_string() - } else { - format!("{prefix}_{acc}") - } + if acc.is_empty() { prefix.to_string() } else { format!("{prefix}_{acc}") } } + /// Non-generic trait for metric patterns (usable in collections). pub trait AnyMetricPattern { /// Get the metric name. @@ -144,6 +134,7 @@ pub trait MetricPattern: AnyMetricPattern { fn get(&self, index: Index) -> Option>; } + /// Shared endpoint configuration. #[derive(Clone)] struct EndpointConfig { @@ -156,13 +147,7 @@ struct EndpointConfig { impl EndpointConfig { fn new(client: Arc, name: Arc, index: Index) -> Self { - Self { - client, - name, - index, - start: None, - end: None, - } + Self { client, name, index, start: None, end: None } } fn path(&self) -> String { @@ -171,21 +156,11 @@ impl EndpointConfig { fn build_path(&self, format: Option<&str>) -> String { let mut params = Vec::new(); - if let Some(s) = self.start { - params.push(format!("start={}", s)); - } - if let Some(e) = self.end { - params.push(format!("end={}", e)); - } - if let Some(fmt) = format { - params.push(format!("format={}", fmt)); - } + if let Some(s) = self.start { params.push(format!("start={}", s)); } + if let Some(e) = self.end { params.push(format!("end={}", e)); } + if let Some(fmt) = format { params.push(format!("format={}", fmt)); } let p = self.path(); - if params.is_empty() { - p - } else { - format!("{}?{}", p, params.join("&")) - } + if params.is_empty() { p } else { format!("{}?{}", p, params.join("&")) } } fn get_json(&self, format: Option<&str>) -> Result { @@ -231,20 +206,14 @@ pub struct MetricEndpointBuilder { impl MetricEndpointBuilder { pub fn new(client: Arc, name: Arc, index: Index) -> Self { - Self { - config: EndpointConfig::new(client, name, index), - _marker: std::marker::PhantomData, - } + Self { config: EndpointConfig::new(client, name, index), _marker: std::marker::PhantomData } } /// Select a specific index position. pub fn get(mut self, index: usize) -> SingleItemBuilder { self.config.start = Some(index as i64); self.config.end = Some(index as i64 + 1); - SingleItemBuilder { - config: self.config, - _marker: std::marker::PhantomData, - } + SingleItemBuilder { config: self.config, _marker: std::marker::PhantomData } } /// Select a range using Rust range syntax. @@ -266,10 +235,7 @@ impl MetricEndpointBuilder { Bound::Excluded(&n) => Some(n as i64), Bound::Unbounded => None, }; - RangeBuilder { - config: self.config, - _marker: std::marker::PhantomData, - } + RangeBuilder { config: self.config, _marker: std::marker::PhantomData } } /// Take the first n items. @@ -284,19 +250,13 @@ impl MetricEndpointBuilder { } else { self.config.start = Some(-(n as i64)); } - RangeBuilder { - config: self.config, - _marker: std::marker::PhantomData, - } + RangeBuilder { config: self.config, _marker: std::marker::PhantomData } } /// Skip the first n items. Chain with `take(n)` to get a range. pub fn skip(mut self, n: usize) -> SkippedBuilder { self.config.start = Some(n as i64); - SkippedBuilder { - config: self.config, - _marker: std::marker::PhantomData, - } + SkippedBuilder { config: self.config, _marker: std::marker::PhantomData } } /// Fetch all data as parsed JSON. @@ -344,10 +304,7 @@ impl SkippedBuilder { pub fn take(mut self, n: usize) -> RangeBuilder { let start = self.config.start.unwrap_or(0); self.config.end = Some(start + n as i64); - RangeBuilder { - config: self.config, - _marker: std::marker::PhantomData, - } + RangeBuilder { config: self.config, _marker: std::marker::PhantomData } } /// Fetch from the skipped position to the end. @@ -379,6 +336,7 @@ impl RangeBuilder { } } + // Index accessor structs /// Container for index endpoint methods. @@ -396,11 +354,7 @@ impl MetricPattern1By { MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::DecadeIndex) } pub fn difficultyepoch(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::DifficultyEpoch, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::DifficultyEpoch) } pub fn height(&self) -> MetricEndpointBuilder { MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::Height) @@ -433,11 +387,7 @@ impl MetricPattern1 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern1By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern1By { client, name, _marker: std::marker::PhantomData } } } @@ -499,11 +449,7 @@ impl MetricPattern2By { MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::DecadeIndex) } pub fn difficultyepoch(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::DifficultyEpoch, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::DifficultyEpoch) } pub fn monthindex(&self) -> MetricEndpointBuilder { MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::MonthIndex) @@ -533,11 +479,7 @@ impl MetricPattern2 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern2By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern2By { client, name, _marker: std::marker::PhantomData } } } @@ -627,11 +569,7 @@ impl MetricPattern3 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern3By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern3By { client, name, _marker: std::marker::PhantomData } } } @@ -718,11 +656,7 @@ impl MetricPattern4 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern4By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern4By { client, name, _marker: std::marker::PhantomData } } } @@ -792,11 +726,7 @@ impl MetricPattern5 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern5By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern5By { client, name, _marker: std::marker::PhantomData } } } @@ -812,7 +742,10 @@ impl AnyMetricPattern for MetricPattern5 { } fn indexes(&self) -> &'static [Index] { - &[Index::DateIndex, Index::Height] + &[ + Index::DateIndex, + Index::Height, + ] } } @@ -850,11 +783,7 @@ impl MetricPattern6 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern6By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern6By { client, name, _marker: std::marker::PhantomData } } } @@ -870,7 +799,9 @@ impl AnyMetricPattern for MetricPattern6 { } fn indexes(&self) -> &'static [Index] { - &[Index::DateIndex] + &[ + Index::DateIndex, + ] } } @@ -907,11 +838,7 @@ impl MetricPattern7 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern7By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern7By { client, name, _marker: std::marker::PhantomData } } } @@ -927,7 +854,9 @@ impl AnyMetricPattern for MetricPattern7 { } fn indexes(&self) -> &'static [Index] { - &[Index::DecadeIndex] + &[ + Index::DecadeIndex, + ] } } @@ -949,11 +878,7 @@ pub struct MetricPattern8By { impl MetricPattern8By { pub fn difficultyepoch(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::DifficultyEpoch, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::DifficultyEpoch) } } @@ -968,11 +893,7 @@ impl MetricPattern8 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern8By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern8By { client, name, _marker: std::marker::PhantomData } } } @@ -988,7 +909,9 @@ impl AnyMetricPattern for MetricPattern8 { } fn indexes(&self) -> &'static [Index] { - &[Index::DifficultyEpoch] + &[ + Index::DifficultyEpoch, + ] } } @@ -1010,11 +933,7 @@ pub struct MetricPattern9By { impl MetricPattern9By { pub fn emptyoutputindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::EmptyOutputIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::EmptyOutputIndex) } } @@ -1029,11 +948,7 @@ impl MetricPattern9 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern9By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern9By { client, name, _marker: std::marker::PhantomData } } } @@ -1049,7 +964,9 @@ impl AnyMetricPattern for MetricPattern9 { } fn indexes(&self) -> &'static [Index] { - &[Index::EmptyOutputIndex] + &[ + Index::EmptyOutputIndex, + ] } } @@ -1086,11 +1003,7 @@ impl MetricPattern10 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern10By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern10By { client, name, _marker: std::marker::PhantomData } } } @@ -1106,7 +1019,9 @@ impl AnyMetricPattern for MetricPattern10 { } fn indexes(&self) -> &'static [Index] { - &[Index::HalvingEpoch] + &[ + Index::HalvingEpoch, + ] } } @@ -1143,11 +1058,7 @@ impl MetricPattern11 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern11By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern11By { client, name, _marker: std::marker::PhantomData } } } @@ -1163,7 +1074,9 @@ impl AnyMetricPattern for MetricPattern11 { } fn indexes(&self) -> &'static [Index] { - &[Index::Height] + &[ + Index::Height, + ] } } @@ -1200,11 +1113,7 @@ impl MetricPattern12 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern12By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern12By { client, name, _marker: std::marker::PhantomData } } } @@ -1220,7 +1129,9 @@ impl AnyMetricPattern for MetricPattern12 { } fn indexes(&self) -> &'static [Index] { - &[Index::TxInIndex] + &[ + Index::TxInIndex, + ] } } @@ -1257,11 +1168,7 @@ impl MetricPattern13 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern13By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern13By { client, name, _marker: std::marker::PhantomData } } } @@ -1277,7 +1184,9 @@ impl AnyMetricPattern for MetricPattern13 { } fn indexes(&self) -> &'static [Index] { - &[Index::MonthIndex] + &[ + Index::MonthIndex, + ] } } @@ -1314,11 +1223,7 @@ impl MetricPattern14 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern14By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern14By { client, name, _marker: std::marker::PhantomData } } } @@ -1334,7 +1239,9 @@ impl AnyMetricPattern for MetricPattern14 { } fn indexes(&self) -> &'static [Index] { - &[Index::OpReturnIndex] + &[ + Index::OpReturnIndex, + ] } } @@ -1371,11 +1278,7 @@ impl MetricPattern15 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern15By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern15By { client, name, _marker: std::marker::PhantomData } } } @@ -1391,7 +1294,9 @@ impl AnyMetricPattern for MetricPattern15 { } fn indexes(&self) -> &'static [Index] { - &[Index::TxOutIndex] + &[ + Index::TxOutIndex, + ] } } @@ -1413,11 +1318,7 @@ pub struct MetricPattern16By { impl MetricPattern16By { pub fn p2aaddressindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::P2AAddressIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::P2AAddressIndex) } } @@ -1432,11 +1333,7 @@ impl MetricPattern16 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern16By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern16By { client, name, _marker: std::marker::PhantomData } } } @@ -1452,7 +1349,9 @@ impl AnyMetricPattern for MetricPattern16 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2AAddressIndex] + &[ + Index::P2AAddressIndex, + ] } } @@ -1474,11 +1373,7 @@ pub struct MetricPattern17By { impl MetricPattern17By { pub fn p2msoutputindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::P2MSOutputIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::P2MSOutputIndex) } } @@ -1493,11 +1388,7 @@ impl MetricPattern17 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern17By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern17By { client, name, _marker: std::marker::PhantomData } } } @@ -1513,7 +1404,9 @@ impl AnyMetricPattern for MetricPattern17 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2MSOutputIndex] + &[ + Index::P2MSOutputIndex, + ] } } @@ -1535,11 +1428,7 @@ pub struct MetricPattern18By { impl MetricPattern18By { pub fn p2pk33addressindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::P2PK33AddressIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::P2PK33AddressIndex) } } @@ -1554,11 +1443,7 @@ impl MetricPattern18 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern18By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern18By { client, name, _marker: std::marker::PhantomData } } } @@ -1574,7 +1459,9 @@ impl AnyMetricPattern for MetricPattern18 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2PK33AddressIndex] + &[ + Index::P2PK33AddressIndex, + ] } } @@ -1596,11 +1483,7 @@ pub struct MetricPattern19By { impl MetricPattern19By { pub fn p2pk65addressindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::P2PK65AddressIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::P2PK65AddressIndex) } } @@ -1615,11 +1498,7 @@ impl MetricPattern19 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern19By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern19By { client, name, _marker: std::marker::PhantomData } } } @@ -1635,7 +1514,9 @@ impl AnyMetricPattern for MetricPattern19 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2PK65AddressIndex] + &[ + Index::P2PK65AddressIndex, + ] } } @@ -1657,11 +1538,7 @@ pub struct MetricPattern20By { impl MetricPattern20By { pub fn p2pkhaddressindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::P2PKHAddressIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::P2PKHAddressIndex) } } @@ -1676,11 +1553,7 @@ impl MetricPattern20 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern20By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern20By { client, name, _marker: std::marker::PhantomData } } } @@ -1696,7 +1569,9 @@ impl AnyMetricPattern for MetricPattern20 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2PKHAddressIndex] + &[ + Index::P2PKHAddressIndex, + ] } } @@ -1718,11 +1593,7 @@ pub struct MetricPattern21By { impl MetricPattern21By { pub fn p2shaddressindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::P2SHAddressIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::P2SHAddressIndex) } } @@ -1737,11 +1608,7 @@ impl MetricPattern21 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern21By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern21By { client, name, _marker: std::marker::PhantomData } } } @@ -1757,7 +1624,9 @@ impl AnyMetricPattern for MetricPattern21 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2SHAddressIndex] + &[ + Index::P2SHAddressIndex, + ] } } @@ -1779,11 +1648,7 @@ pub struct MetricPattern22By { impl MetricPattern22By { pub fn p2traddressindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::P2TRAddressIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::P2TRAddressIndex) } } @@ -1798,11 +1663,7 @@ impl MetricPattern22 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern22By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern22By { client, name, _marker: std::marker::PhantomData } } } @@ -1818,7 +1679,9 @@ impl AnyMetricPattern for MetricPattern22 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2TRAddressIndex] + &[ + Index::P2TRAddressIndex, + ] } } @@ -1840,11 +1703,7 @@ pub struct MetricPattern23By { impl MetricPattern23By { pub fn p2wpkhaddressindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::P2WPKHAddressIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::P2WPKHAddressIndex) } } @@ -1859,11 +1718,7 @@ impl MetricPattern23 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern23By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern23By { client, name, _marker: std::marker::PhantomData } } } @@ -1879,7 +1734,9 @@ impl AnyMetricPattern for MetricPattern23 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2WPKHAddressIndex] + &[ + Index::P2WPKHAddressIndex, + ] } } @@ -1901,11 +1758,7 @@ pub struct MetricPattern24By { impl MetricPattern24By { pub fn p2wshaddressindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::P2WSHAddressIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::P2WSHAddressIndex) } } @@ -1920,11 +1773,7 @@ impl MetricPattern24 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern24By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern24By { client, name, _marker: std::marker::PhantomData } } } @@ -1940,7 +1789,9 @@ impl AnyMetricPattern for MetricPattern24 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2WSHAddressIndex] + &[ + Index::P2WSHAddressIndex, + ] } } @@ -1977,11 +1828,7 @@ impl MetricPattern25 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern25By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern25By { client, name, _marker: std::marker::PhantomData } } } @@ -1997,7 +1844,9 @@ impl AnyMetricPattern for MetricPattern25 { } fn indexes(&self) -> &'static [Index] { - &[Index::QuarterIndex] + &[ + Index::QuarterIndex, + ] } } @@ -2034,11 +1883,7 @@ impl MetricPattern26 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern26By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern26By { client, name, _marker: std::marker::PhantomData } } } @@ -2054,7 +1899,9 @@ impl AnyMetricPattern for MetricPattern26 { } fn indexes(&self) -> &'static [Index] { - &[Index::SemesterIndex] + &[ + Index::SemesterIndex, + ] } } @@ -2091,11 +1938,7 @@ impl MetricPattern27 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern27By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern27By { client, name, _marker: std::marker::PhantomData } } } @@ -2111,7 +1954,9 @@ impl AnyMetricPattern for MetricPattern27 { } fn indexes(&self) -> &'static [Index] { - &[Index::TxIndex] + &[ + Index::TxIndex, + ] } } @@ -2133,11 +1978,7 @@ pub struct MetricPattern28By { impl MetricPattern28By { pub fn unknownoutputindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::UnknownOutputIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::UnknownOutputIndex) } } @@ -2152,11 +1993,7 @@ impl MetricPattern28 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern28By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern28By { client, name, _marker: std::marker::PhantomData } } } @@ -2172,7 +2009,9 @@ impl AnyMetricPattern for MetricPattern28 { } fn indexes(&self) -> &'static [Index] { - &[Index::UnknownOutputIndex] + &[ + Index::UnknownOutputIndex, + ] } } @@ -2209,11 +2048,7 @@ impl MetricPattern29 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern29By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern29By { client, name, _marker: std::marker::PhantomData } } } @@ -2229,7 +2064,9 @@ impl AnyMetricPattern for MetricPattern29 { } fn indexes(&self) -> &'static [Index] { - &[Index::WeekIndex] + &[ + Index::WeekIndex, + ] } } @@ -2266,11 +2103,7 @@ impl MetricPattern30 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern30By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern30By { client, name, _marker: std::marker::PhantomData } } } @@ -2286,7 +2119,9 @@ impl AnyMetricPattern for MetricPattern30 { } fn indexes(&self) -> &'static [Index] { - &[Index::YearIndex] + &[ + Index::YearIndex, + ] } } @@ -2308,11 +2143,7 @@ pub struct MetricPattern31By { impl MetricPattern31By { pub fn loadedaddressindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::LoadedAddressIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::LoadedAddressIndex) } } @@ -2327,11 +2158,7 @@ impl MetricPattern31 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern31By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern31By { client, name, _marker: std::marker::PhantomData } } } @@ -2347,7 +2174,9 @@ impl AnyMetricPattern for MetricPattern31 { } fn indexes(&self) -> &'static [Index] { - &[Index::LoadedAddressIndex] + &[ + Index::LoadedAddressIndex, + ] } } @@ -2369,11 +2198,7 @@ pub struct MetricPattern32By { impl MetricPattern32By { pub fn emptyaddressindex(&self) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.client.clone(), - self.name.clone(), - Index::EmptyAddressIndex, - ) + MetricEndpointBuilder::new(self.client.clone(), self.name.clone(), Index::EmptyAddressIndex) } } @@ -2388,11 +2213,7 @@ impl MetricPattern32 { let name: Arc = name.into(); Self { name: name.clone(), - by: MetricPattern32By { - client, - name, - _marker: std::marker::PhantomData, - }, + by: MetricPattern32By { client, name, _marker: std::marker::PhantomData } } } @@ -2408,7 +2229,9 @@ impl AnyMetricPattern for MetricPattern32 { } fn indexes(&self) -> &'static [Index] { - &[Index::EmptyAddressIndex] + &[ + Index::EmptyAddressIndex, + ] } } @@ -2464,88 +2287,31 @@ impl RealizedPattern3 { pub fn new(client: Arc, acc: String) -> Self { Self { adjusted_sopr: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr")), - adjusted_sopr_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "adjusted_sopr_30d_ema"), - ), - adjusted_sopr_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "adjusted_sopr_7d_ema"), - ), - adjusted_value_created: MetricPattern1::new( - client.clone(), - _m(&acc, "adjusted_value_created"), - ), - adjusted_value_destroyed: MetricPattern1::new( - client.clone(), - _m(&acc, "adjusted_value_destroyed"), - ), + adjusted_sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_30d_ema")), + adjusted_sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_7d_ema")), + adjusted_value_created: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_created")), + adjusted_value_destroyed: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_destroyed")), mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern2::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "net_realized_pnl_cumulative_30d_delta"), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", - ), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", - ), - ), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "net_realized_pnl_rel_to_realized_cap"), - ), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "realized_cap_30d_delta"), - ), - realized_cap_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "realized_cap_rel_to_own_market_cap"), - ), + realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), + realized_cap_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_rel_to_own_market_cap")), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_loss_rel_to_realized_cap"), - ), + realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: ActivePriceRatioPattern::new( - client.clone(), - _m(&acc, "realized_price_ratio"), - ), + realized_price_extra: ActivePriceRatioPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_profit_rel_to_realized_cap"), - ), - realized_profit_to_loss_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "realized_profit_to_loss_ratio"), - ), + realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), + realized_profit_to_loss_ratio: MetricPattern6::new(client.clone(), _m(&acc, "realized_profit_to_loss_ratio")), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio"), - ), - sell_side_risk_ratio_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_30d_ema"), - ), - sell_side_risk_ratio_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_7d_ema"), - ), + sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), + sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), + sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -2595,80 +2361,29 @@ impl RealizedPattern4 { pub fn new(client: Arc, acc: String) -> Self { Self { adjusted_sopr: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr")), - adjusted_sopr_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "adjusted_sopr_30d_ema"), - ), - adjusted_sopr_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "adjusted_sopr_7d_ema"), - ), - adjusted_value_created: MetricPattern1::new( - client.clone(), - _m(&acc, "adjusted_value_created"), - ), - adjusted_value_destroyed: MetricPattern1::new( - client.clone(), - _m(&acc, "adjusted_value_destroyed"), - ), + adjusted_sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_30d_ema")), + adjusted_sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_7d_ema")), + adjusted_value_created: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_created")), + adjusted_value_destroyed: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_destroyed")), mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern2::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "net_realized_pnl_cumulative_30d_delta"), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", - ), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", - ), - ), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "net_realized_pnl_rel_to_realized_cap"), - ), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "realized_cap_30d_delta"), - ), + realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_loss_rel_to_realized_cap"), - ), + realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: RealizedPriceExtraPattern::new( - client.clone(), - _m(&acc, "realized_price_ratio"), - ), + realized_price_extra: RealizedPriceExtraPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_profit_rel_to_realized_cap"), - ), + realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio"), - ), - sell_side_risk_ratio_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_30d_ema"), - ), - sell_side_risk_ratio_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_7d_ema"), - ), + sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), + sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), + sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -2785,69 +2500,24 @@ impl RealizedPattern2 { mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern2::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "net_realized_pnl_cumulative_30d_delta"), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", - ), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", - ), - ), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "net_realized_pnl_rel_to_realized_cap"), - ), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "realized_cap_30d_delta"), - ), - realized_cap_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "realized_cap_rel_to_own_market_cap"), - ), + realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), + realized_cap_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_rel_to_own_market_cap")), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_loss_rel_to_realized_cap"), - ), + realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: ActivePriceRatioPattern::new( - client.clone(), - _m(&acc, "realized_price_ratio"), - ), + realized_price_extra: ActivePriceRatioPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_profit_rel_to_realized_cap"), - ), - realized_profit_to_loss_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "realized_profit_to_loss_ratio"), - ), + realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), + realized_profit_to_loss_ratio: MetricPattern6::new(client.clone(), _m(&acc, "realized_profit_to_loss_ratio")), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio"), - ), - sell_side_risk_ratio_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_30d_ema"), - ), - sell_side_risk_ratio_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_7d_ema"), - ), + sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), + sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), + sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -2894,61 +2564,22 @@ impl RealizedPattern { mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern2::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "net_realized_pnl_cumulative_30d_delta"), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", - ), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", - ), - ), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "net_realized_pnl_rel_to_realized_cap"), - ), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "realized_cap_30d_delta"), - ), + realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_loss_rel_to_realized_cap"), - ), + realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: RealizedPriceExtraPattern::new( - client.clone(), - _m(&acc, "realized_price_ratio"), - ), + realized_price_extra: RealizedPriceExtraPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_profit_rel_to_realized_cap"), - ), + realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio"), - ), - sell_side_risk_ratio_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_30d_ema"), - ), - sell_side_risk_ratio_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_7d_ema"), - ), + sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), + sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), + sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -3011,56 +2642,6 @@ impl Price111dSmaPattern { } } -/// Pattern struct for repeated tree structure. -pub struct ActivePriceRatioPattern { - pub ratio: MetricPattern4, - pub ratio_1m_sma: MetricPattern4, - pub ratio_1w_sma: MetricPattern4, - pub ratio_1y_sd: Ratio1ySdPattern, - pub ratio_2y_sd: Ratio1ySdPattern, - pub ratio_4y_sd: Ratio1ySdPattern, - pub ratio_pct1: MetricPattern4, - pub ratio_pct1_usd: MetricPattern4, - pub ratio_pct2: MetricPattern4, - pub ratio_pct2_usd: MetricPattern4, - pub ratio_pct5: MetricPattern4, - pub ratio_pct5_usd: MetricPattern4, - pub ratio_pct95: MetricPattern4, - pub ratio_pct95_usd: MetricPattern4, - pub ratio_pct98: MetricPattern4, - pub ratio_pct98_usd: MetricPattern4, - pub ratio_pct99: MetricPattern4, - pub ratio_pct99_usd: MetricPattern4, - pub ratio_sd: Ratio1ySdPattern, -} - -impl ActivePriceRatioPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - ratio: MetricPattern4::new(client.clone(), acc.clone()), - ratio_1m_sma: MetricPattern4::new(client.clone(), _m(&acc, "1m_sma")), - ratio_1w_sma: MetricPattern4::new(client.clone(), _m(&acc, "1w_sma")), - ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), _m(&acc, "1y")), - ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), _m(&acc, "2y")), - ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), _m(&acc, "4y")), - ratio_pct1: MetricPattern4::new(client.clone(), _m(&acc, "pct1")), - ratio_pct1_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct1_usd")), - ratio_pct2: MetricPattern4::new(client.clone(), _m(&acc, "pct2")), - ratio_pct2_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct2_usd")), - ratio_pct5: MetricPattern4::new(client.clone(), _m(&acc, "pct5")), - ratio_pct5_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct5_usd")), - ratio_pct95: MetricPattern4::new(client.clone(), _m(&acc, "pct95")), - ratio_pct95_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct95_usd")), - ratio_pct98: MetricPattern4::new(client.clone(), _m(&acc, "pct98")), - ratio_pct98_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct98_usd")), - ratio_pct99: MetricPattern4::new(client.clone(), _m(&acc, "pct99")), - ratio_pct99_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct99_usd")), - ratio_sd: Ratio1ySdPattern::new(client.clone(), acc.clone()), - } - } -} - /// Pattern struct for repeated tree structure. pub struct PercentilesPattern { pub pct05: MetricPattern4, @@ -3111,6 +2692,56 @@ impl PercentilesPattern { } } +/// Pattern struct for repeated tree structure. +pub struct ActivePriceRatioPattern { + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl ActivePriceRatioPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + ratio: MetricPattern4::new(client.clone(), acc.clone()), + ratio_1m_sma: MetricPattern4::new(client.clone(), _m(&acc, "1m_sma")), + ratio_1w_sma: MetricPattern4::new(client.clone(), _m(&acc, "1w_sma")), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), _m(&acc, "1y")), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), _m(&acc, "2y")), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), _m(&acc, "4y")), + ratio_pct1: MetricPattern4::new(client.clone(), _m(&acc, "pct1")), + ratio_pct1_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct1_usd")), + ratio_pct2: MetricPattern4::new(client.clone(), _m(&acc, "pct2")), + ratio_pct2_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct2_usd")), + ratio_pct5: MetricPattern4::new(client.clone(), _m(&acc, "pct5")), + ratio_pct5_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct5_usd")), + ratio_pct95: MetricPattern4::new(client.clone(), _m(&acc, "pct95")), + ratio_pct95_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct95_usd")), + ratio_pct98: MetricPattern4::new(client.clone(), _m(&acc, "pct98")), + ratio_pct98_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct98_usd")), + ratio_pct99: MetricPattern4::new(client.clone(), _m(&acc, "pct99")), + ratio_pct99_usd: MetricPattern4::new(client.clone(), _m(&acc, "pct99_usd")), + ratio_sd: Ratio1ySdPattern::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct RelativePattern5 { pub neg_unrealized_loss_rel_to_market_cap: MetricPattern1, @@ -3137,75 +2768,24 @@ impl RelativePattern5 { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - neg_unrealized_loss_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_market_cap"), - ), - neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_own_market_cap"), - ), - neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - net_unrealized_pnl_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_market_cap"), - ), - net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_own_market_cap"), - ), - net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl"), - ), + neg_unrealized_loss_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_market_cap")), + neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_market_cap")), + neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl")), + net_unrealized_pnl_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_market_cap")), + net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_market_cap")), + net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl")), nupl: MetricPattern1::new(client.clone(), _m(&acc, "nupl")), - supply_in_loss_rel_to_circulating_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_loss_rel_to_circulating_supply"), - ), - supply_in_loss_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_loss_rel_to_own_supply"), - ), - supply_in_profit_rel_to_circulating_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_profit_rel_to_circulating_supply"), - ), - supply_in_profit_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_profit_rel_to_own_supply"), - ), - supply_rel_to_circulating_supply: MetricPattern4::new( - client.clone(), - _m(&acc, "supply_rel_to_circulating_supply"), - ), - unrealized_loss_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_market_cap"), - ), - unrealized_loss_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_own_market_cap"), - ), - unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - unrealized_profit_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_market_cap"), - ), - unrealized_profit_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_own_market_cap"), - ), - unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_own_total_unrealized_pnl"), - ), + supply_in_loss_rel_to_circulating_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_circulating_supply")), + supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_own_supply")), + supply_in_profit_rel_to_circulating_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_circulating_supply")), + supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_own_supply")), + supply_rel_to_circulating_supply: MetricPattern4::new(client.clone(), _m(&acc, "supply_rel_to_circulating_supply")), + unrealized_loss_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_market_cap")), + unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_market_cap")), + unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_total_unrealized_pnl")), + unrealized_profit_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_market_cap")), + unrealized_profit_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_market_cap")), + unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_total_unrealized_pnl")), } } } @@ -3413,17 +2993,17 @@ impl ClassAveragePricePattern { /// 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_average_price")), - _2016: MetricPattern4::new(client.clone(), _m(&acc, "2016_average_price")), - _2017: MetricPattern4::new(client.clone(), _m(&acc, "2017_average_price")), - _2018: MetricPattern4::new(client.clone(), _m(&acc, "2018_average_price")), - _2019: MetricPattern4::new(client.clone(), _m(&acc, "2019_average_price")), - _2020: MetricPattern4::new(client.clone(), _m(&acc, "2020_average_price")), - _2021: MetricPattern4::new(client.clone(), _m(&acc, "2021_average_price")), - _2022: MetricPattern4::new(client.clone(), _m(&acc, "2022_average_price")), - _2023: MetricPattern4::new(client.clone(), _m(&acc, "2023_average_price")), - _2024: MetricPattern4::new(client.clone(), _m(&acc, "2024_average_price")), - _2025: MetricPattern4::new(client.clone(), _m(&acc, "2025_average_price")), + _2015: MetricPattern4::new(client.clone(), _m(&acc, "2015_returns")), + _2016: MetricPattern4::new(client.clone(), _m(&acc, "2016_returns")), + _2017: MetricPattern4::new(client.clone(), _m(&acc, "2017_returns")), + _2018: MetricPattern4::new(client.clone(), _m(&acc, "2018_returns")), + _2019: MetricPattern4::new(client.clone(), _m(&acc, "2019_returns")), + _2020: MetricPattern4::new(client.clone(), _m(&acc, "2020_returns")), + _2021: MetricPattern4::new(client.clone(), _m(&acc, "2021_returns")), + _2022: MetricPattern4::new(client.clone(), _m(&acc, "2022_returns")), + _2023: MetricPattern4::new(client.clone(), _m(&acc, "2023_returns")), + _2024: MetricPattern4::new(client.clone(), _m(&acc, "2024_returns")), + _2025: MetricPattern4::new(client.clone(), _m(&acc, "2025_returns")), } } } @@ -3480,46 +3060,16 @@ impl RelativePattern2 { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_own_market_cap"), - ), - neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_own_market_cap"), - ), - net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl"), - ), - supply_in_loss_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_loss_rel_to_own_supply"), - ), - supply_in_profit_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_profit_rel_to_own_supply"), - ), - unrealized_loss_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_own_market_cap"), - ), - unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - unrealized_profit_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_own_market_cap"), - ), - unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_own_total_unrealized_pnl"), - ), + neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_market_cap")), + neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl")), + net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_market_cap")), + net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl")), + supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_own_supply")), + supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_own_supply")), + unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_market_cap")), + unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_total_unrealized_pnl")), + unrealized_profit_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_market_cap")), + unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_total_unrealized_pnl")), } } } @@ -3542,43 +3092,16 @@ impl RelativePattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - neg_unrealized_loss_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_market_cap"), - ), - net_unrealized_pnl_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_market_cap"), - ), + neg_unrealized_loss_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_market_cap")), + net_unrealized_pnl_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_market_cap")), nupl: MetricPattern1::new(client.clone(), _m(&acc, "nupl")), - supply_in_loss_rel_to_circulating_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_loss_rel_to_circulating_supply"), - ), - supply_in_loss_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_loss_rel_to_own_supply"), - ), - supply_in_profit_rel_to_circulating_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_profit_rel_to_circulating_supply"), - ), - supply_in_profit_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_profit_rel_to_own_supply"), - ), - supply_rel_to_circulating_supply: MetricPattern4::new( - client.clone(), - _m(&acc, "supply_rel_to_circulating_supply"), - ), - unrealized_loss_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_market_cap"), - ), - unrealized_profit_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_market_cap"), - ), + supply_in_loss_rel_to_circulating_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_circulating_supply")), + supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_own_supply")), + supply_in_profit_rel_to_circulating_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_circulating_supply")), + supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_own_supply")), + supply_rel_to_circulating_supply: MetricPattern4::new(client.clone(), _m(&acc, "supply_rel_to_circulating_supply")), + unrealized_loss_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_market_cap")), + unrealized_profit_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_market_cap")), } } } @@ -3733,41 +3256,6 @@ impl _0satsPattern { } } -/// Pattern struct for repeated tree structure. -pub struct UnrealizedPattern { - pub neg_unrealized_loss: MetricPattern1, - pub net_unrealized_pnl: MetricPattern1, - pub supply_in_loss: ActiveSupplyPattern, - pub supply_in_profit: ActiveSupplyPattern, - pub total_unrealized_pnl: MetricPattern1, - pub unrealized_loss: MetricPattern1, - pub unrealized_profit: MetricPattern1, -} - -impl UnrealizedPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - neg_unrealized_loss: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss"), - ), - net_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl")), - supply_in_loss: ActiveSupplyPattern::new(client.clone(), _m(&acc, "supply_in_loss")), - supply_in_profit: ActiveSupplyPattern::new( - client.clone(), - _m(&acc, "supply_in_profit"), - ), - total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "total_unrealized_pnl"), - ), - unrealized_loss: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss")), - unrealized_profit: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct _100btcPattern { pub activity: ActivityPattern2, @@ -3794,84 +3282,6 @@ impl _100btcPattern { } } -/// Pattern struct for repeated tree structure. -pub struct _10yPattern { - pub activity: ActivityPattern2, - pub cost_basis: CostBasisPattern, - pub outputs: OutputsPattern, - pub realized: RealizedPattern4, - pub relative: RelativePattern, - pub supply: SupplyPattern2, - pub unrealized: UnrealizedPattern, -} - -impl _10yPattern { - /// 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: RealizedPattern4::new(client.clone(), acc.clone()), - relative: RelativePattern::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 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 _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 _10yTo12yPattern { pub activity: ActivityPattern2, @@ -3898,6 +3308,110 @@ impl _10yTo12yPattern { } } +/// 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 UnrealizedPattern { + pub neg_unrealized_loss: MetricPattern1, + pub net_unrealized_pnl: MetricPattern1, + pub supply_in_loss: ActiveSupplyPattern, + pub supply_in_profit: ActiveSupplyPattern, + pub total_unrealized_pnl: MetricPattern1, + pub unrealized_loss: MetricPattern1, + pub unrealized_profit: MetricPattern1, +} + +impl UnrealizedPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + neg_unrealized_loss: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss")), + net_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl")), + supply_in_loss: ActiveSupplyPattern::new(client.clone(), _m(&acc, "supply_in_loss")), + supply_in_profit: ActiveSupplyPattern::new(client.clone(), _m(&acc, "supply_in_profit")), + total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "total_unrealized_pnl")), + unrealized_loss: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss")), + unrealized_profit: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit")), + } + } +} + +/// Pattern struct for repeated tree structure. +pub struct _10yPattern { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl _10yPattern { + /// 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: RealizedPattern4::new(client.clone(), acc.clone()), + relative: RelativePattern::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 ActivityPattern2 { pub coinblocks_destroyed: BlockCountPattern, @@ -3911,18 +3425,9 @@ impl ActivityPattern2 { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - coinblocks_destroyed: BlockCountPattern::new( - client.clone(), - _m(&acc, "coinblocks_destroyed"), - ), - coindays_destroyed: BlockCountPattern::new( - client.clone(), - _m(&acc, "coindays_destroyed"), - ), - satblocks_destroyed: MetricPattern11::new( - client.clone(), - _m(&acc, "satblocks_destroyed"), - ), + coinblocks_destroyed: BlockCountPattern::new(client.clone(), _m(&acc, "coinblocks_destroyed")), + coindays_destroyed: BlockCountPattern::new(client.clone(), _m(&acc, "coindays_destroyed")), + satblocks_destroyed: MetricPattern11::new(client.clone(), _m(&acc, "satblocks_destroyed")), satdays_destroyed: MetricPattern11::new(client.clone(), _m(&acc, "satdays_destroyed")), sent: UnclaimedRewardsPattern::new(client.clone(), _m(&acc, "sent")), } @@ -3949,6 +3454,24 @@ impl SplitPattern2 { } } +/// Pattern struct for repeated tree structure. +pub struct CoinbasePattern2 { + pub bitcoin: BlockCountPattern, + pub dollars: BlockCountPattern, + pub sats: BlockCountPattern, +} + +impl CoinbasePattern2 { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + bitcoin: BlockCountPattern::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 SegwitAdoptionPattern { pub base: MetricPattern11, @@ -3968,37 +3491,19 @@ impl SegwitAdoptionPattern { } /// Pattern struct for repeated tree structure. -pub struct CostBasisPattern2 { - pub max: MetricPattern1, - pub min: MetricPattern1, - pub percentiles: PercentilesPattern, +pub struct CoinbasePattern { + pub bitcoin: BitcoinPattern, + pub dollars: DollarsPattern, + pub sats: DollarsPattern, } -impl CostBasisPattern2 { +impl CoinbasePattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - max: MetricPattern1::new(client.clone(), _m(&acc, "max_cost_basis")), - min: MetricPattern1::new(client.clone(), _m(&acc, "min_cost_basis")), - percentiles: PercentilesPattern::new(client.clone(), _m(&acc, "cost_basis")), - } - } -} - -/// 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()), + bitcoin: BitcoinPattern::new(client.clone(), _m(&acc, "btc")), + dollars: DollarsPattern::new(client.clone(), _m(&acc, "usd")), + sats: DollarsPattern::new(client.clone(), acc.clone()), } } } @@ -4040,59 +3545,37 @@ impl _2015Pattern { } /// Pattern struct for repeated tree structure. -pub struct CoinbasePattern { - pub bitcoin: BitcoinPattern, - pub dollars: DollarsPattern, - pub sats: DollarsPattern, +pub struct CostBasisPattern2 { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, } -impl CoinbasePattern { +impl CostBasisPattern2 { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - bitcoin: BitcoinPattern::new(client.clone(), _m(&acc, "btc")), - dollars: DollarsPattern::new(client.clone(), _m(&acc, "usd")), - sats: DollarsPattern::new(client.clone(), acc.clone()), + max: MetricPattern1::new(client.clone(), _m(&acc, "max_cost_basis")), + min: MetricPattern1::new(client.clone(), _m(&acc, "min_cost_basis")), + percentiles: PercentilesPattern::new(client.clone(), _m(&acc, "cost_basis")), } } } /// Pattern struct for repeated tree structure. -pub struct CoinbasePattern2 { - pub bitcoin: BlockCountPattern, - pub dollars: BlockCountPattern, - pub sats: BlockCountPattern, +pub struct ActiveSupplyPattern { + pub bitcoin: MetricPattern1, + pub dollars: MetricPattern1, + pub sats: MetricPattern1, } -impl CoinbasePattern2 { +impl ActiveSupplyPattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - bitcoin: BlockCountPattern::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 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"), - ), + bitcoin: MetricPattern1::new(client.clone(), _m(&acc, "btc")), + dollars: MetricPattern1::new(client.clone(), _m(&acc, "usd")), + sats: MetricPattern1::new(client.clone(), acc.clone()), } } } @@ -4114,17 +3597,17 @@ impl CostBasisPattern { } /// Pattern struct for repeated tree structure. -pub struct _1dReturns1mSdPattern { - pub sd: MetricPattern4, - pub sma: MetricPattern4, +pub struct RelativePattern4 { + pub supply_in_loss_rel_to_own_supply: MetricPattern1, + pub supply_in_profit_rel_to_own_supply: MetricPattern1, } -impl _1dReturns1mSdPattern { +impl RelativePattern4 { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - sd: MetricPattern4::new(client.clone(), _m(&acc, "sd")), - sma: MetricPattern4::new(client.clone(), _m(&acc, "sma")), + 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")), } } } @@ -4146,33 +3629,17 @@ impl SupplyPattern2 { } /// Pattern struct for repeated tree structure. -pub struct SatsPattern { - pub ohlc: MetricPattern1, - pub split: SplitPattern2, +pub struct _1dReturns1mSdPattern { + pub sd: MetricPattern4, + pub sma: MetricPattern4, } -impl SatsPattern { +impl _1dReturns1mSdPattern { /// 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 BlockCountPattern { - pub cumulative: MetricPattern1, - pub sum: MetricPattern1, -} - -impl BlockCountPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - cumulative: MetricPattern1::new(client.clone(), _m(&acc, "cumulative")), - sum: MetricPattern1::new(client.clone(), acc.clone()), + sd: MetricPattern4::new(client.clone(), _m(&acc, "sd")), + sma: MetricPattern4::new(client.clone(), _m(&acc, "sma")), } } } @@ -4194,15 +3661,33 @@ impl BitcoinPattern2 { } /// Pattern struct for repeated tree structure. -pub struct RealizedPriceExtraPattern { - pub ratio: MetricPattern4, +pub struct BlockCountPattern { + pub cumulative: MetricPattern1, + pub sum: MetricPattern1, } -impl RealizedPriceExtraPattern { +impl BlockCountPattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - ratio: MetricPattern4::new(client.clone(), acc.clone()), + cumulative: MetricPattern1::new(client.clone(), _m(&acc, "cumulative")), + sum: MetricPattern1::new(client.clone(), acc.clone()), + } + } +} + +/// 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()), } } } @@ -4221,6 +3706,20 @@ impl OutputsPattern { } } +/// Pattern struct for repeated tree structure. +pub struct RealizedPriceExtraPattern { + pub ratio: MetricPattern4, +} + +impl RealizedPriceExtraPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + ratio: MetricPattern4::new(client.clone(), acc.clone()), + } + } +} + // Metrics tree /// Metrics tree node. @@ -4249,10 +3748,7 @@ impl MetricsTree { blocks: MetricsTree_Blocks::new(client.clone(), format!("{base_path}_blocks")), cointime: MetricsTree_Cointime::new(client.clone(), format!("{base_path}_cointime")), constants: MetricsTree_Constants::new(client.clone(), format!("{base_path}_constants")), - distribution: MetricsTree_Distribution::new( - client.clone(), - format!("{base_path}_distribution"), - ), + distribution: MetricsTree_Distribution::new(client.clone(), format!("{base_path}_distribution")), indexes: MetricsTree_Indexes::new(client.clone(), format!("{base_path}_indexes")), inputs: MetricsTree_Inputs::new(client.clone(), format!("{base_path}_inputs")), market: MetricsTree_Market::new(client.clone(), format!("{base_path}_market")), @@ -4262,10 +3758,7 @@ impl MetricsTree { price: MetricsTree_Price::new(client.clone(), format!("{base_path}_price")), scripts: MetricsTree_Scripts::new(client.clone(), format!("{base_path}_scripts")), supply: MetricsTree_Supply::new(client.clone(), format!("{base_path}_supply")), - transactions: MetricsTree_Transactions::new( - client.clone(), - format!("{base_path}_transactions"), - ), + transactions: MetricsTree_Transactions::new(client.clone(), format!("{base_path}_transactions")), } } } @@ -4293,38 +3786,14 @@ pub struct MetricsTree_Addresses { impl MetricsTree_Addresses { pub fn new(client: Arc, base_path: String) -> Self { Self { - first_p2aaddressindex: MetricPattern11::new( - client.clone(), - "first_p2aaddressindex".to_string(), - ), - first_p2pk33addressindex: MetricPattern11::new( - client.clone(), - "first_p2pk33addressindex".to_string(), - ), - first_p2pk65addressindex: MetricPattern11::new( - client.clone(), - "first_p2pk65addressindex".to_string(), - ), - first_p2pkhaddressindex: MetricPattern11::new( - client.clone(), - "first_p2pkhaddressindex".to_string(), - ), - first_p2shaddressindex: MetricPattern11::new( - client.clone(), - "first_p2shaddressindex".to_string(), - ), - first_p2traddressindex: MetricPattern11::new( - client.clone(), - "first_p2traddressindex".to_string(), - ), - first_p2wpkhaddressindex: MetricPattern11::new( - client.clone(), - "first_p2wpkhaddressindex".to_string(), - ), - first_p2wshaddressindex: MetricPattern11::new( - client.clone(), - "first_p2wshaddressindex".to_string(), - ), + first_p2aaddressindex: MetricPattern11::new(client.clone(), "first_p2aaddressindex".to_string()), + first_p2pk33addressindex: MetricPattern11::new(client.clone(), "first_p2pk33addressindex".to_string()), + first_p2pk65addressindex: MetricPattern11::new(client.clone(), "first_p2pk65addressindex".to_string()), + first_p2pkhaddressindex: MetricPattern11::new(client.clone(), "first_p2pkhaddressindex".to_string()), + first_p2shaddressindex: MetricPattern11::new(client.clone(), "first_p2shaddressindex".to_string()), + first_p2traddressindex: MetricPattern11::new(client.clone(), "first_p2traddressindex".to_string()), + first_p2wpkhaddressindex: MetricPattern11::new(client.clone(), "first_p2wpkhaddressindex".to_string()), + first_p2wshaddressindex: MetricPattern11::new(client.clone(), "first_p2wshaddressindex".to_string()), p2abytes: MetricPattern16::new(client.clone(), "p2abytes".to_string()), p2pk33bytes: MetricPattern18::new(client.clone(), "p2pk33bytes".to_string()), p2pk65bytes: MetricPattern19::new(client.clone(), "p2pk65bytes".to_string()), @@ -4359,21 +3828,12 @@ impl MetricsTree_Blocks { Self { blockhash: MetricPattern11::new(client.clone(), "blockhash".to_string()), count: MetricsTree_Blocks_Count::new(client.clone(), format!("{base_path}_count")), - difficulty: MetricsTree_Blocks_Difficulty::new( - client.clone(), - format!("{base_path}_difficulty"), - ), + difficulty: MetricsTree_Blocks_Difficulty::new(client.clone(), format!("{base_path}_difficulty")), fullness: FullnessPattern::new(client.clone(), "block_fullness".to_string()), - halving: MetricsTree_Blocks_Halving::new( - client.clone(), - format!("{base_path}_halving"), - ), + halving: MetricsTree_Blocks_Halving::new(client.clone(), format!("{base_path}_halving")), interval: FullnessPattern::new(client.clone(), "block_interval".to_string()), mining: MetricsTree_Blocks_Mining::new(client.clone(), format!("{base_path}_mining")), - rewards: MetricsTree_Blocks_Rewards::new( - client.clone(), - format!("{base_path}_rewards"), - ), + rewards: MetricsTree_Blocks_Rewards::new(client.clone(), format!("{base_path}_rewards")), size: MetricsTree_Blocks_Size::new(client.clone(), format!("{base_path}_size")), time: MetricsTree_Blocks_Time::new(client.clone(), format!("{base_path}_time")), total_size: MetricPattern11::new(client.clone(), "total_size".to_string()), @@ -4409,10 +3869,7 @@ impl MetricsTree_Blocks_Count { _24h_block_count: MetricPattern1::new(client.clone(), "24h_block_count".to_string()), _24h_start: MetricPattern11::new(client.clone(), "24h_start".to_string()), block_count: BlockCountPattern::new(client.clone(), "block_count".to_string()), - block_count_target: MetricPattern4::new( - client.clone(), - "block_count_target".to_string(), - ), + block_count_target: MetricPattern4::new(client.clone(), "block_count_target".to_string()), } } } @@ -4432,14 +3889,8 @@ impl MetricsTree_Blocks_Difficulty { Self { adjustment: MetricPattern1::new(client.clone(), "difficulty_adjustment".to_string()), as_hash: MetricPattern1::new(client.clone(), "difficulty_as_hash".to_string()), - blocks_before_next_adjustment: MetricPattern1::new( - client.clone(), - "blocks_before_next_difficulty_adjustment".to_string(), - ), - days_before_next_adjustment: MetricPattern1::new( - client.clone(), - "days_before_next_difficulty_adjustment".to_string(), - ), + blocks_before_next_adjustment: MetricPattern1::new(client.clone(), "blocks_before_next_difficulty_adjustment".to_string()), + days_before_next_adjustment: MetricPattern1::new(client.clone(), "days_before_next_difficulty_adjustment".to_string()), epoch: MetricPattern4::new(client.clone(), "difficultyepoch".to_string()), raw: MetricPattern1::new(client.clone(), "difficulty".to_string()), } @@ -4456,14 +3907,8 @@ pub struct MetricsTree_Blocks_Halving { impl MetricsTree_Blocks_Halving { pub fn new(client: Arc, base_path: String) -> Self { Self { - blocks_before_next_halving: MetricPattern1::new( - client.clone(), - "blocks_before_next_halving".to_string(), - ), - days_before_next_halving: MetricPattern1::new( - client.clone(), - "days_before_next_halving".to_string(), - ), + blocks_before_next_halving: MetricPattern1::new(client.clone(), "blocks_before_next_halving".to_string()), + days_before_next_halving: MetricPattern1::new(client.clone(), "days_before_next_halving".to_string()), epoch: MetricPattern4::new(client.clone(), "halvingepoch".to_string()), } } @@ -4492,38 +3937,20 @@ impl MetricsTree_Blocks_Mining { pub fn new(client: Arc, base_path: String) -> Self { Self { hash_price_phs: MetricPattern1::new(client.clone(), "hash_price_phs".to_string()), - hash_price_phs_min: MetricPattern1::new( - client.clone(), - "hash_price_phs_min".to_string(), - ), - hash_price_rebound: MetricPattern1::new( - client.clone(), - "hash_price_rebound".to_string(), - ), + hash_price_phs_min: MetricPattern1::new(client.clone(), "hash_price_phs_min".to_string()), + hash_price_rebound: MetricPattern1::new(client.clone(), "hash_price_rebound".to_string()), hash_price_ths: MetricPattern1::new(client.clone(), "hash_price_ths".to_string()), - hash_price_ths_min: MetricPattern1::new( - client.clone(), - "hash_price_ths_min".to_string(), - ), + hash_price_ths_min: MetricPattern1::new(client.clone(), "hash_price_ths_min".to_string()), hash_rate: MetricPattern1::new(client.clone(), "hash_rate".to_string()), hash_rate_1m_sma: MetricPattern4::new(client.clone(), "hash_rate_1m_sma".to_string()), hash_rate_1w_sma: MetricPattern4::new(client.clone(), "hash_rate_1w_sma".to_string()), hash_rate_1y_sma: MetricPattern4::new(client.clone(), "hash_rate_1y_sma".to_string()), hash_rate_2m_sma: MetricPattern4::new(client.clone(), "hash_rate_2m_sma".to_string()), hash_value_phs: MetricPattern1::new(client.clone(), "hash_value_phs".to_string()), - hash_value_phs_min: MetricPattern1::new( - client.clone(), - "hash_value_phs_min".to_string(), - ), - hash_value_rebound: MetricPattern1::new( - client.clone(), - "hash_value_rebound".to_string(), - ), + hash_value_phs_min: MetricPattern1::new(client.clone(), "hash_value_phs_min".to_string()), + hash_value_rebound: MetricPattern1::new(client.clone(), "hash_value_rebound".to_string()), hash_value_ths: MetricPattern1::new(client.clone(), "hash_value_ths".to_string()), - hash_value_ths_min: MetricPattern1::new( - client.clone(), - "hash_value_ths_min".to_string(), - ), + hash_value_ths_min: MetricPattern1::new(client.clone(), "hash_value_ths_min".to_string()), } } } @@ -4542,22 +3969,13 @@ pub struct MetricsTree_Blocks_Rewards { impl MetricsTree_Blocks_Rewards { pub fn new(client: Arc, base_path: String) -> Self { Self { - _24h_coinbase_sum: MetricsTree_Blocks_Rewards_24hCoinbaseSum::new( - client.clone(), - format!("{base_path}_24h_coinbase_sum"), - ), + _24h_coinbase_sum: MetricsTree_Blocks_Rewards_24hCoinbaseSum::new(client.clone(), format!("{base_path}_24h_coinbase_sum")), coinbase: CoinbasePattern::new(client.clone(), "coinbase".to_string()), fee_dominance: MetricPattern6::new(client.clone(), "fee_dominance".to_string()), subsidy: CoinbasePattern::new(client.clone(), "subsidy".to_string()), subsidy_dominance: MetricPattern6::new(client.clone(), "subsidy_dominance".to_string()), - subsidy_usd_1y_sma: MetricPattern4::new( - client.clone(), - "subsidy_usd_1y_sma".to_string(), - ), - unclaimed_rewards: UnclaimedRewardsPattern::new( - client.clone(), - "unclaimed_rewards".to_string(), - ), + subsidy_usd_1y_sma: MetricPattern4::new(client.clone(), "subsidy_usd_1y_sma".to_string()), + unclaimed_rewards: UnclaimedRewardsPattern::new(client.clone(), "unclaimed_rewards".to_string()), } } } @@ -4622,10 +4040,7 @@ impl MetricsTree_Blocks_Time { Self { date: MetricPattern11::new(client.clone(), "date".to_string()), timestamp: MetricPattern1::new(client.clone(), "timestamp".to_string()), - timestamp_monotonic: MetricPattern11::new( - client.clone(), - "timestamp_monotonic".to_string(), - ), + timestamp_monotonic: MetricPattern11::new(client.clone(), "timestamp_monotonic".to_string()), } } } @@ -4643,19 +4058,10 @@ pub struct MetricsTree_Cointime { impl MetricsTree_Cointime { pub fn new(client: Arc, base_path: String) -> Self { Self { - activity: MetricsTree_Cointime_Activity::new( - client.clone(), - format!("{base_path}_activity"), - ), - adjusted: MetricsTree_Cointime_Adjusted::new( - client.clone(), - format!("{base_path}_adjusted"), - ), + activity: MetricsTree_Cointime_Activity::new(client.clone(), format!("{base_path}_activity")), + adjusted: MetricsTree_Cointime_Adjusted::new(client.clone(), format!("{base_path}_adjusted")), cap: MetricsTree_Cointime_Cap::new(client.clone(), format!("{base_path}_cap")), - pricing: MetricsTree_Cointime_Pricing::new( - client.clone(), - format!("{base_path}_pricing"), - ), + pricing: MetricsTree_Cointime_Pricing::new(client.clone(), format!("{base_path}_pricing")), supply: MetricsTree_Cointime_Supply::new(client.clone(), format!("{base_path}_supply")), value: MetricsTree_Cointime_Value::new(client.clone(), format!("{base_path}_value")), } @@ -4674,18 +4080,9 @@ pub struct MetricsTree_Cointime_Activity { impl MetricsTree_Cointime_Activity { pub fn new(client: Arc, base_path: String) -> Self { Self { - activity_to_vaultedness_ratio: MetricPattern1::new( - client.clone(), - "activity_to_vaultedness_ratio".to_string(), - ), - coinblocks_created: BlockCountPattern::new( - client.clone(), - "coinblocks_created".to_string(), - ), - coinblocks_stored: BlockCountPattern::new( - client.clone(), - "coinblocks_stored".to_string(), - ), + activity_to_vaultedness_ratio: MetricPattern1::new(client.clone(), "activity_to_vaultedness_ratio".to_string()), + coinblocks_created: BlockCountPattern::new(client.clone(), "coinblocks_created".to_string()), + coinblocks_stored: BlockCountPattern::new(client.clone(), "coinblocks_stored".to_string()), liveliness: MetricPattern1::new(client.clone(), "liveliness".to_string()), vaultedness: MetricPattern1::new(client.clone(), "vaultedness".to_string()), } @@ -4702,18 +4099,9 @@ pub struct MetricsTree_Cointime_Adjusted { impl MetricsTree_Cointime_Adjusted { pub fn new(client: Arc, base_path: String) -> Self { Self { - cointime_adj_inflation_rate: MetricPattern4::new( - client.clone(), - "cointime_adj_inflation_rate".to_string(), - ), - cointime_adj_tx_btc_velocity: MetricPattern4::new( - client.clone(), - "cointime_adj_tx_btc_velocity".to_string(), - ), - cointime_adj_tx_usd_velocity: MetricPattern4::new( - client.clone(), - "cointime_adj_tx_usd_velocity".to_string(), - ), + cointime_adj_inflation_rate: MetricPattern4::new(client.clone(), "cointime_adj_inflation_rate".to_string()), + cointime_adj_tx_btc_velocity: MetricPattern4::new(client.clone(), "cointime_adj_tx_btc_velocity".to_string()), + cointime_adj_tx_usd_velocity: MetricPattern4::new(client.clone(), "cointime_adj_tx_usd_velocity".to_string()), } } } @@ -4742,38 +4130,222 @@ impl MetricsTree_Cointime_Cap { /// Metrics tree node. pub struct MetricsTree_Cointime_Pricing { pub active_price: MetricPattern1, - pub active_price_ratio: ActivePriceRatioPattern, + pub active_price_ratio: MetricsTree_Cointime_Pricing_ActivePriceRatio, pub cointime_price: MetricPattern1, - pub cointime_price_ratio: ActivePriceRatioPattern, + pub cointime_price_ratio: MetricsTree_Cointime_Pricing_CointimePriceRatio, pub true_market_mean: MetricPattern1, - pub true_market_mean_ratio: ActivePriceRatioPattern, + pub true_market_mean_ratio: MetricsTree_Cointime_Pricing_TrueMarketMeanRatio, pub vaulted_price: MetricPattern1, - pub vaulted_price_ratio: ActivePriceRatioPattern, + pub vaulted_price_ratio: MetricsTree_Cointime_Pricing_VaultedPriceRatio, } impl MetricsTree_Cointime_Pricing { pub fn new(client: Arc, base_path: String) -> Self { Self { active_price: MetricPattern1::new(client.clone(), "active_price".to_string()), - active_price_ratio: ActivePriceRatioPattern::new( - client.clone(), - "active_price_ratio".to_string(), - ), + active_price_ratio: MetricsTree_Cointime_Pricing_ActivePriceRatio::new(client.clone(), format!("{base_path}_active_price_ratio")), cointime_price: MetricPattern1::new(client.clone(), "cointime_price".to_string()), - cointime_price_ratio: ActivePriceRatioPattern::new( - client.clone(), - "cointime_price_ratio".to_string(), - ), + cointime_price_ratio: MetricsTree_Cointime_Pricing_CointimePriceRatio::new(client.clone(), format!("{base_path}_cointime_price_ratio")), true_market_mean: MetricPattern1::new(client.clone(), "true_market_mean".to_string()), - true_market_mean_ratio: ActivePriceRatioPattern::new( - client.clone(), - "true_market_mean_ratio".to_string(), - ), + true_market_mean_ratio: MetricsTree_Cointime_Pricing_TrueMarketMeanRatio::new(client.clone(), format!("{base_path}_true_market_mean_ratio")), vaulted_price: MetricPattern1::new(client.clone(), "vaulted_price".to_string()), - vaulted_price_ratio: ActivePriceRatioPattern::new( - client.clone(), - "vaulted_price_ratio".to_string(), - ), + vaulted_price_ratio: MetricsTree_Cointime_Pricing_VaultedPriceRatio::new(client.clone(), format!("{base_path}_vaulted_price_ratio")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Cointime_Pricing_ActivePriceRatio { + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Cointime_Pricing_ActivePriceRatio { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + ratio: MetricPattern4::new(client.clone(), "active_price_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "active_price_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "active_price_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "active_price_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "active_price_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "active_price_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "active_price_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "active_price_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "active_price_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "active_price_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "active_price_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "active_price_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "active_price_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "active_price_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "active_price_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "active_price_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "active_price_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "active_price_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "active_price_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Cointime_Pricing_CointimePriceRatio { + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Cointime_Pricing_CointimePriceRatio { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + ratio: MetricPattern4::new(client.clone(), "cointime_price_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "cointime_price_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "cointime_price_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "cointime_price_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "cointime_price_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "cointime_price_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "cointime_price_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "cointime_price_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Cointime_Pricing_TrueMarketMeanRatio { + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Cointime_Pricing_TrueMarketMeanRatio { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + ratio: MetricPattern4::new(client.clone(), "true_market_mean_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "true_market_mean_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "true_market_mean_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "true_market_mean_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "true_market_mean_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "true_market_mean_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "true_market_mean_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "true_market_mean_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Cointime_Pricing_VaultedPriceRatio { + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Cointime_Pricing_VaultedPriceRatio { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + ratio: MetricPattern4::new(client.clone(), "vaulted_price_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "vaulted_price_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "vaulted_price_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "vaulted_price_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "vaulted_price_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "vaulted_price_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "vaulted_price_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "vaulted_price_ratio".to_string()), } } } @@ -4803,18 +4375,9 @@ pub struct MetricsTree_Cointime_Value { impl MetricsTree_Cointime_Value { pub fn new(client: Arc, base_path: String) -> Self { Self { - cointime_value_created: BlockCountPattern::new( - client.clone(), - "cointime_value_created".to_string(), - ), - cointime_value_destroyed: BlockCountPattern::new( - client.clone(), - "cointime_value_destroyed".to_string(), - ), - cointime_value_stored: BlockCountPattern::new( - client.clone(), - "cointime_value_stored".to_string(), - ), + cointime_value_created: BlockCountPattern::new(client.clone(), "cointime_value_created".to_string()), + cointime_value_destroyed: BlockCountPattern::new(client.clone(), "cointime_value_destroyed".to_string()), + cointime_value_stored: BlockCountPattern::new(client.clone(), "cointime_value_stored".to_string()), } } } @@ -4883,32 +4446,14 @@ impl MetricsTree_Distribution { pub fn new(client: Arc, base_path: String) -> Self { Self { addr_count: AddrCountPattern::new(client.clone(), "addr_count".to_string()), - address_cohorts: MetricsTree_Distribution_AddressCohorts::new( - client.clone(), - format!("{base_path}_address_cohorts"), - ), - addresses_data: MetricsTree_Distribution_AddressesData::new( - client.clone(), - format!("{base_path}_addresses_data"), - ), - any_address_indexes: MetricsTree_Distribution_AnyAddressIndexes::new( - client.clone(), - format!("{base_path}_any_address_indexes"), - ), + address_cohorts: MetricsTree_Distribution_AddressCohorts::new(client.clone(), format!("{base_path}_address_cohorts")), + addresses_data: MetricsTree_Distribution_AddressesData::new(client.clone(), format!("{base_path}_addresses_data")), + any_address_indexes: MetricsTree_Distribution_AnyAddressIndexes::new(client.clone(), format!("{base_path}_any_address_indexes")), chain_state: MetricPattern11::new(client.clone(), "chain".to_string()), empty_addr_count: AddrCountPattern::new(client.clone(), "empty_addr_count".to_string()), - emptyaddressindex: MetricPattern32::new( - client.clone(), - "emptyaddressindex".to_string(), - ), - loadedaddressindex: MetricPattern31::new( - client.clone(), - "loadedaddressindex".to_string(), - ), - utxo_cohorts: MetricsTree_Distribution_UtxoCohorts::new( - client.clone(), - format!("{base_path}_utxo_cohorts"), - ), + emptyaddressindex: MetricPattern32::new(client.clone(), "emptyaddressindex".to_string()), + loadedaddressindex: MetricPattern31::new(client.clone(), "loadedaddressindex".to_string()), + utxo_cohorts: MetricsTree_Distribution_UtxoCohorts::new(client.clone(), format!("{base_path}_utxo_cohorts")), } } } @@ -4923,175 +4468,1231 @@ pub struct MetricsTree_Distribution_AddressCohorts { impl MetricsTree_Distribution_AddressCohorts { pub fn new(client: Arc, base_path: String) -> Self { Self { - amount_range: MetricsTree_Distribution_AddressCohorts_AmountRange::new( - client.clone(), - format!("{base_path}_amount_range"), - ), - ge_amount: MetricsTree_Distribution_AddressCohorts_GeAmount::new( - client.clone(), - format!("{base_path}_ge_amount"), - ), - lt_amount: MetricsTree_Distribution_AddressCohorts_LtAmount::new( - client.clone(), - format!("{base_path}_lt_amount"), - ), + amount_range: MetricsTree_Distribution_AddressCohorts_AmountRange::new(client.clone(), format!("{base_path}_amount_range")), + ge_amount: MetricsTree_Distribution_AddressCohorts_GeAmount::new(client.clone(), format!("{base_path}_ge_amount")), + lt_amount: MetricsTree_Distribution_AddressCohorts_LtAmount::new(client.clone(), format!("{base_path}_lt_amount")), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_AddressCohorts_AmountRange { - pub _0sats: _0satsPattern, - pub _100btc_to_1k_btc: _0satsPattern, - pub _100k_btc_or_more: _0satsPattern, - pub _100k_sats_to_1m_sats: _0satsPattern, - pub _100sats_to_1k_sats: _0satsPattern, - pub _10btc_to_100btc: _0satsPattern, - pub _10k_btc_to_100k_btc: _0satsPattern, - pub _10k_sats_to_100k_sats: _0satsPattern, - pub _10m_sats_to_1btc: _0satsPattern, - pub _10sats_to_100sats: _0satsPattern, - pub _1btc_to_10btc: _0satsPattern, - pub _1k_btc_to_10k_btc: _0satsPattern, - pub _1k_sats_to_10k_sats: _0satsPattern, - pub _1m_sats_to_10m_sats: _0satsPattern, - pub _1sat_to_10sats: _0satsPattern, + pub _0sats: MetricsTree_Distribution_AddressCohorts_AmountRange_0sats, + pub _100btc_to_1k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_100btcTo1kBtc, + pub _100k_btc_or_more: MetricsTree_Distribution_AddressCohorts_AmountRange_100kBtcOrMore, + pub _100k_sats_to_1m_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_100kSatsTo1mSats, + pub _100sats_to_1k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_100satsTo1kSats, + pub _10btc_to_100btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10btcTo100btc, + pub _10k_btc_to_100k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10kBtcTo100kBtc, + pub _10k_sats_to_100k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_10kSatsTo100kSats, + pub _10m_sats_to_1btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10mSatsTo1btc, + pub _10sats_to_100sats: MetricsTree_Distribution_AddressCohorts_AmountRange_10satsTo100sats, + pub _1btc_to_10btc: MetricsTree_Distribution_AddressCohorts_AmountRange_1btcTo10btc, + pub _1k_btc_to_10k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_1kBtcTo10kBtc, + pub _1k_sats_to_10k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_1kSatsTo10kSats, + pub _1m_sats_to_10m_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_1mSatsTo10mSats, + pub _1sat_to_10sats: MetricsTree_Distribution_AddressCohorts_AmountRange_1satTo10sats, } impl MetricsTree_Distribution_AddressCohorts_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _0sats: _0satsPattern::new(client.clone(), "addrs_with_0sats".to_string()), - _100btc_to_1k_btc: _0satsPattern::new( - client.clone(), - "addrs_above_100btc_under_1k_btc".to_string(), - ), - _100k_btc_or_more: _0satsPattern::new( - client.clone(), - "addrs_above_100k_btc".to_string(), - ), - _100k_sats_to_1m_sats: _0satsPattern::new( - client.clone(), - "addrs_above_100k_sats_under_1m_sats".to_string(), - ), - _100sats_to_1k_sats: _0satsPattern::new( - client.clone(), - "addrs_above_100sats_under_1k_sats".to_string(), - ), - _10btc_to_100btc: _0satsPattern::new( - client.clone(), - "addrs_above_10btc_under_100btc".to_string(), - ), - _10k_btc_to_100k_btc: _0satsPattern::new( - client.clone(), - "addrs_above_10k_btc_under_100k_btc".to_string(), - ), - _10k_sats_to_100k_sats: _0satsPattern::new( - client.clone(), - "addrs_above_10k_sats_under_100k_sats".to_string(), - ), - _10m_sats_to_1btc: _0satsPattern::new( - client.clone(), - "addrs_above_10m_sats_under_1btc".to_string(), - ), - _10sats_to_100sats: _0satsPattern::new( - client.clone(), - "addrs_above_10sats_under_100sats".to_string(), - ), - _1btc_to_10btc: _0satsPattern::new( - client.clone(), - "addrs_above_1btc_under_10btc".to_string(), - ), - _1k_btc_to_10k_btc: _0satsPattern::new( - client.clone(), - "addrs_above_1k_btc_under_10k_btc".to_string(), - ), - _1k_sats_to_10k_sats: _0satsPattern::new( - client.clone(), - "addrs_above_1k_sats_under_10k_sats".to_string(), - ), - _1m_sats_to_10m_sats: _0satsPattern::new( - client.clone(), - "addrs_above_1m_sats_under_10m_sats".to_string(), - ), - _1sat_to_10sats: _0satsPattern::new( - client.clone(), - "addrs_above_1sat_under_10sats".to_string(), - ), + _0sats: MetricsTree_Distribution_AddressCohorts_AmountRange_0sats::new(client.clone(), format!("{base_path}_0sats")), + _100btc_to_1k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_100btcTo1kBtc::new(client.clone(), format!("{base_path}_100btc_to_1k_btc")), + _100k_btc_or_more: MetricsTree_Distribution_AddressCohorts_AmountRange_100kBtcOrMore::new(client.clone(), format!("{base_path}_100k_btc_or_more")), + _100k_sats_to_1m_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_100kSatsTo1mSats::new(client.clone(), format!("{base_path}_100k_sats_to_1m_sats")), + _100sats_to_1k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_100satsTo1kSats::new(client.clone(), format!("{base_path}_100sats_to_1k_sats")), + _10btc_to_100btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10btcTo100btc::new(client.clone(), format!("{base_path}_10btc_to_100btc")), + _10k_btc_to_100k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10kBtcTo100kBtc::new(client.clone(), format!("{base_path}_10k_btc_to_100k_btc")), + _10k_sats_to_100k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_10kSatsTo100kSats::new(client.clone(), format!("{base_path}_10k_sats_to_100k_sats")), + _10m_sats_to_1btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10mSatsTo1btc::new(client.clone(), format!("{base_path}_10m_sats_to_1btc")), + _10sats_to_100sats: MetricsTree_Distribution_AddressCohorts_AmountRange_10satsTo100sats::new(client.clone(), format!("{base_path}_10sats_to_100sats")), + _1btc_to_10btc: MetricsTree_Distribution_AddressCohorts_AmountRange_1btcTo10btc::new(client.clone(), format!("{base_path}_1btc_to_10btc")), + _1k_btc_to_10k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_1kBtcTo10kBtc::new(client.clone(), format!("{base_path}_1k_btc_to_10k_btc")), + _1k_sats_to_10k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_1kSatsTo10kSats::new(client.clone(), format!("{base_path}_1k_sats_to_10k_sats")), + _1m_sats_to_10m_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_1mSatsTo10mSats::new(client.clone(), format!("{base_path}_1m_sats_to_10m_sats")), + _1sat_to_10sats: MetricsTree_Distribution_AddressCohorts_AmountRange_1satTo10sats::new(client.clone(), format!("{base_path}_1sat_to_10sats")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_0sats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_0sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_with_0sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_with_0sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_with_0sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_with_0sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_with_0sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_with_0sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_with_0sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_with_0sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_100btcTo1kBtc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_100btcTo1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_100btc_under_1k_btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_100btc_under_1k_btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_100btc_under_1k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_100btc_under_1k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_100btc_under_1k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_100btc_under_1k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_100btc_under_1k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_100btc_under_1k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_100kBtcOrMore { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_100kBtcOrMore { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_100k_btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_100k_btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_100k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_100k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_100k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_100k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_100k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_100k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_100kSatsTo1mSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_100kSatsTo1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_100k_sats_under_1m_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_100k_sats_under_1m_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_100k_sats_under_1m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_100k_sats_under_1m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_100k_sats_under_1m_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_100k_sats_under_1m_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_100k_sats_under_1m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_100k_sats_under_1m_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_100satsTo1kSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_100satsTo1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_100sats_under_1k_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_100sats_under_1k_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_100sats_under_1k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_100sats_under_1k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_100sats_under_1k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_100sats_under_1k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_100sats_under_1k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_100sats_under_1k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_10btcTo100btc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_10btcTo100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_10btc_under_100btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_10btc_under_100btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_10btc_under_100btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_10btc_under_100btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_10btc_under_100btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_10btc_under_100btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_10btc_under_100btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_10btc_under_100btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_10kBtcTo100kBtc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_10kBtcTo100kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_10k_btc_under_100k_btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_10k_btc_under_100k_btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_10k_btc_under_100k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_10k_btc_under_100k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_10k_btc_under_100k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_10k_btc_under_100k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_10k_btc_under_100k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_10k_btc_under_100k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_10kSatsTo100kSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_10kSatsTo100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_10k_sats_under_100k_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_10k_sats_under_100k_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_10k_sats_under_100k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_10k_sats_under_100k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_10k_sats_under_100k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_10k_sats_under_100k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_10k_sats_under_100k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_10k_sats_under_100k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_10mSatsTo1btc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_10mSatsTo1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_10m_sats_under_1btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_10m_sats_under_1btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_10m_sats_under_1btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_10m_sats_under_1btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_10m_sats_under_1btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_10m_sats_under_1btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_10m_sats_under_1btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_10m_sats_under_1btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_10satsTo100sats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_10satsTo100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_10sats_under_100sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_10sats_under_100sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_10sats_under_100sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_10sats_under_100sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_10sats_under_100sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_10sats_under_100sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_10sats_under_100sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_10sats_under_100sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_1btcTo10btc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_1btcTo10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_1btc_under_10btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_1btc_under_10btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_1btc_under_10btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_1btc_under_10btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_1btc_under_10btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_1btc_under_10btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_1btc_under_10btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_1btc_under_10btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_1kBtcTo10kBtc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_1kBtcTo10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_1k_btc_under_10k_btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_1k_btc_under_10k_btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_1k_btc_under_10k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_1k_btc_under_10k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_1k_btc_under_10k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_1k_btc_under_10k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_1k_btc_under_10k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_1k_btc_under_10k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_1kSatsTo10kSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_1kSatsTo10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_1k_sats_under_10k_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_1k_sats_under_10k_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_1k_sats_under_10k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_1k_sats_under_10k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_1k_sats_under_10k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_1k_sats_under_10k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_1k_sats_under_10k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_1k_sats_under_10k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_1mSatsTo10mSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_1mSatsTo10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_1m_sats_under_10m_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_1m_sats_under_10m_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_1m_sats_under_10m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_1m_sats_under_10m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_1m_sats_under_10m_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_1m_sats_under_10m_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_1m_sats_under_10m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_1m_sats_under_10m_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_AmountRange_1satTo10sats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_AmountRange_1satTo10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_1sat_under_10sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_1sat_under_10sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_1sat_under_10sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_1sat_under_10sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_1sat_under_10sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_1sat_under_10sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_1sat_under_10sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_1sat_under_10sats".to_string()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_AddressCohorts_GeAmount { - pub _100btc: _0satsPattern, - pub _100k_sats: _0satsPattern, - pub _100sats: _0satsPattern, - pub _10btc: _0satsPattern, - pub _10k_btc: _0satsPattern, - pub _10k_sats: _0satsPattern, - pub _10m_sats: _0satsPattern, - pub _10sats: _0satsPattern, - pub _1btc: _0satsPattern, - pub _1k_btc: _0satsPattern, - pub _1k_sats: _0satsPattern, - pub _1m_sats: _0satsPattern, - pub _1sat: _0satsPattern, + pub _100btc: MetricsTree_Distribution_AddressCohorts_GeAmount_100btc, + pub _100k_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_100kSats, + pub _100sats: MetricsTree_Distribution_AddressCohorts_GeAmount_100sats, + pub _10btc: MetricsTree_Distribution_AddressCohorts_GeAmount_10btc, + pub _10k_btc: MetricsTree_Distribution_AddressCohorts_GeAmount_10kBtc, + pub _10k_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_10kSats, + pub _10m_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_10mSats, + pub _10sats: MetricsTree_Distribution_AddressCohorts_GeAmount_10sats, + pub _1btc: MetricsTree_Distribution_AddressCohorts_GeAmount_1btc, + pub _1k_btc: MetricsTree_Distribution_AddressCohorts_GeAmount_1kBtc, + pub _1k_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_1kSats, + pub _1m_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_1mSats, + pub _1sat: MetricsTree_Distribution_AddressCohorts_GeAmount_1sat, } impl MetricsTree_Distribution_AddressCohorts_GeAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _100btc: _0satsPattern::new(client.clone(), "addrs_above_100btc".to_string()), - _100k_sats: _0satsPattern::new(client.clone(), "addrs_above_100k_sats".to_string()), - _100sats: _0satsPattern::new(client.clone(), "addrs_above_100sats".to_string()), - _10btc: _0satsPattern::new(client.clone(), "addrs_above_10btc".to_string()), - _10k_btc: _0satsPattern::new(client.clone(), "addrs_above_10k_btc".to_string()), - _10k_sats: _0satsPattern::new(client.clone(), "addrs_above_10k_sats".to_string()), - _10m_sats: _0satsPattern::new(client.clone(), "addrs_above_10m_sats".to_string()), - _10sats: _0satsPattern::new(client.clone(), "addrs_above_10sats".to_string()), - _1btc: _0satsPattern::new(client.clone(), "addrs_above_1btc".to_string()), - _1k_btc: _0satsPattern::new(client.clone(), "addrs_above_1k_btc".to_string()), - _1k_sats: _0satsPattern::new(client.clone(), "addrs_above_1k_sats".to_string()), - _1m_sats: _0satsPattern::new(client.clone(), "addrs_above_1m_sats".to_string()), - _1sat: _0satsPattern::new(client.clone(), "addrs_above_1sat".to_string()), + _100btc: MetricsTree_Distribution_AddressCohorts_GeAmount_100btc::new(client.clone(), format!("{base_path}_100btc")), + _100k_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_100kSats::new(client.clone(), format!("{base_path}_100k_sats")), + _100sats: MetricsTree_Distribution_AddressCohorts_GeAmount_100sats::new(client.clone(), format!("{base_path}_100sats")), + _10btc: MetricsTree_Distribution_AddressCohorts_GeAmount_10btc::new(client.clone(), format!("{base_path}_10btc")), + _10k_btc: MetricsTree_Distribution_AddressCohorts_GeAmount_10kBtc::new(client.clone(), format!("{base_path}_10k_btc")), + _10k_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_10kSats::new(client.clone(), format!("{base_path}_10k_sats")), + _10m_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_10mSats::new(client.clone(), format!("{base_path}_10m_sats")), + _10sats: MetricsTree_Distribution_AddressCohorts_GeAmount_10sats::new(client.clone(), format!("{base_path}_10sats")), + _1btc: MetricsTree_Distribution_AddressCohorts_GeAmount_1btc::new(client.clone(), format!("{base_path}_1btc")), + _1k_btc: MetricsTree_Distribution_AddressCohorts_GeAmount_1kBtc::new(client.clone(), format!("{base_path}_1k_btc")), + _1k_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_1kSats::new(client.clone(), format!("{base_path}_1k_sats")), + _1m_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_1mSats::new(client.clone(), format!("{base_path}_1m_sats")), + _1sat: MetricsTree_Distribution_AddressCohorts_GeAmount_1sat::new(client.clone(), format!("{base_path}_1sat")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_100btc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_100btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_100btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_100btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_100btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_100btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_100btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_100btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_100btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_100kSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_100k_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_100k_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_100k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_100k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_100k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_100k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_100k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_100k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_100sats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_100sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_100sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_100sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_100sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_100sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_100sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_100sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_100sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_10btc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_10btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_10btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_10btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_10btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_10btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_10btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_10btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_10btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_10kBtc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_10k_btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_10k_btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_10k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_10k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_10k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_10k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_10k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_10k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_10kSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_10k_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_10k_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_10k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_10k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_10k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_10k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_10k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_10k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_10mSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_10m_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_10m_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_10m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_10m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_10m_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_10m_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_10m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_10m_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_10sats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_10sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_10sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_10sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_10sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_10sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_10sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_10sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_10sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_1btc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_1btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_1btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_1btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_1btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_1btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_1btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_1btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_1btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_1kBtc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_1k_btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_1k_btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_1k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_1k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_1k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_1k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_1k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_1k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_1kSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_1k_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_1k_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_1k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_1k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_1k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_1k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_1k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_1k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_1mSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_1m_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_1m_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_1m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_1m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_1m_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_1m_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_1m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_1m_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_GeAmount_1sat { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_GeAmount_1sat { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_above_1sat".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_above_1sat_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_above_1sat".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_above_1sat_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_above_1sat".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_above_1sat".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_above_1sat_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_above_1sat".to_string()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_AddressCohorts_LtAmount { - pub _100btc: _0satsPattern, - pub _100k_btc: _0satsPattern, - pub _100k_sats: _0satsPattern, - pub _100sats: _0satsPattern, - pub _10btc: _0satsPattern, - pub _10k_btc: _0satsPattern, - pub _10k_sats: _0satsPattern, - pub _10m_sats: _0satsPattern, - pub _10sats: _0satsPattern, - pub _1btc: _0satsPattern, - pub _1k_btc: _0satsPattern, - pub _1k_sats: _0satsPattern, - pub _1m_sats: _0satsPattern, + pub _100btc: MetricsTree_Distribution_AddressCohorts_LtAmount_100btc, + pub _100k_btc: MetricsTree_Distribution_AddressCohorts_LtAmount_100kBtc, + pub _100k_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_100kSats, + pub _100sats: MetricsTree_Distribution_AddressCohorts_LtAmount_100sats, + pub _10btc: MetricsTree_Distribution_AddressCohorts_LtAmount_10btc, + pub _10k_btc: MetricsTree_Distribution_AddressCohorts_LtAmount_10kBtc, + pub _10k_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_10kSats, + pub _10m_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_10mSats, + pub _10sats: MetricsTree_Distribution_AddressCohorts_LtAmount_10sats, + pub _1btc: MetricsTree_Distribution_AddressCohorts_LtAmount_1btc, + pub _1k_btc: MetricsTree_Distribution_AddressCohorts_LtAmount_1kBtc, + pub _1k_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_1kSats, + pub _1m_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_1mSats, } impl MetricsTree_Distribution_AddressCohorts_LtAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _100btc: _0satsPattern::new(client.clone(), "addrs_under_100btc".to_string()), - _100k_btc: _0satsPattern::new(client.clone(), "addrs_under_100k_btc".to_string()), - _100k_sats: _0satsPattern::new(client.clone(), "addrs_under_100k_sats".to_string()), - _100sats: _0satsPattern::new(client.clone(), "addrs_under_100sats".to_string()), - _10btc: _0satsPattern::new(client.clone(), "addrs_under_10btc".to_string()), - _10k_btc: _0satsPattern::new(client.clone(), "addrs_under_10k_btc".to_string()), - _10k_sats: _0satsPattern::new(client.clone(), "addrs_under_10k_sats".to_string()), - _10m_sats: _0satsPattern::new(client.clone(), "addrs_under_10m_sats".to_string()), - _10sats: _0satsPattern::new(client.clone(), "addrs_under_10sats".to_string()), - _1btc: _0satsPattern::new(client.clone(), "addrs_under_1btc".to_string()), - _1k_btc: _0satsPattern::new(client.clone(), "addrs_under_1k_btc".to_string()), - _1k_sats: _0satsPattern::new(client.clone(), "addrs_under_1k_sats".to_string()), - _1m_sats: _0satsPattern::new(client.clone(), "addrs_under_1m_sats".to_string()), + _100btc: MetricsTree_Distribution_AddressCohorts_LtAmount_100btc::new(client.clone(), format!("{base_path}_100btc")), + _100k_btc: MetricsTree_Distribution_AddressCohorts_LtAmount_100kBtc::new(client.clone(), format!("{base_path}_100k_btc")), + _100k_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_100kSats::new(client.clone(), format!("{base_path}_100k_sats")), + _100sats: MetricsTree_Distribution_AddressCohorts_LtAmount_100sats::new(client.clone(), format!("{base_path}_100sats")), + _10btc: MetricsTree_Distribution_AddressCohorts_LtAmount_10btc::new(client.clone(), format!("{base_path}_10btc")), + _10k_btc: MetricsTree_Distribution_AddressCohorts_LtAmount_10kBtc::new(client.clone(), format!("{base_path}_10k_btc")), + _10k_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_10kSats::new(client.clone(), format!("{base_path}_10k_sats")), + _10m_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_10mSats::new(client.clone(), format!("{base_path}_10m_sats")), + _10sats: MetricsTree_Distribution_AddressCohorts_LtAmount_10sats::new(client.clone(), format!("{base_path}_10sats")), + _1btc: MetricsTree_Distribution_AddressCohorts_LtAmount_1btc::new(client.clone(), format!("{base_path}_1btc")), + _1k_btc: MetricsTree_Distribution_AddressCohorts_LtAmount_1kBtc::new(client.clone(), format!("{base_path}_1k_btc")), + _1k_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_1kSats::new(client.clone(), format!("{base_path}_1k_sats")), + _1m_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_1mSats::new(client.clone(), format!("{base_path}_1m_sats")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_100btc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_100btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_100btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_100btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_100btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_100btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_100btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_100btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_100btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_100kBtc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_100kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_100k_btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_100k_btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_100k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_100k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_100k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_100k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_100k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_100k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_100kSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_100k_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_100k_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_100k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_100k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_100k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_100k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_100k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_100k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_100sats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_100sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_100sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_100sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_100sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_100sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_100sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_100sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_100sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_10btc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_10btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_10btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_10btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_10btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_10btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_10btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_10btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_10btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_10kBtc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_10k_btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_10k_btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_10k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_10k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_10k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_10k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_10k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_10k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_10kSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_10k_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_10k_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_10k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_10k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_10k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_10k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_10k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_10k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_10mSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_10m_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_10m_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_10m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_10m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_10m_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_10m_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_10m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_10m_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_10sats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_10sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_10sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_10sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_10sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_10sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_10sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_10sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_10sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_1btc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_1btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_1btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_1btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_1btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_1btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_1btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_1btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_1btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_1kBtc { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_1k_btc".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_1k_btc_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_1k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_1k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_1k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_1k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_1k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_1k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_1kSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_1k_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_1k_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_1k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_1k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_1k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_1k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_1k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_1k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_AddressCohorts_LtAmount_1mSats { + pub activity: ActivityPattern2, + pub addr_count: MetricPattern1, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_AddressCohorts_LtAmount_1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "addrs_under_1m_sats".to_string()), + addr_count: MetricPattern1::new(client.clone(), "addrs_under_1m_sats_addr_count".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "addrs_under_1m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "addrs_under_1m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "addrs_under_1m_sats".to_string()), + relative: RelativePattern::new(client.clone(), "addrs_under_1m_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "addrs_under_1m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "addrs_under_1m_sats".to_string()), } } } @@ -5156,160 +5757,952 @@ pub struct MetricsTree_Distribution_UtxoCohorts { impl MetricsTree_Distribution_UtxoCohorts { pub fn new(client: Arc, base_path: String) -> Self { Self { - age_range: MetricsTree_Distribution_UtxoCohorts_AgeRange::new( - client.clone(), - format!("{base_path}_age_range"), - ), - all: MetricsTree_Distribution_UtxoCohorts_All::new( - client.clone(), - format!("{base_path}_all"), - ), - amount_range: MetricsTree_Distribution_UtxoCohorts_AmountRange::new( - client.clone(), - format!("{base_path}_amount_range"), - ), - epoch: MetricsTree_Distribution_UtxoCohorts_Epoch::new( - client.clone(), - format!("{base_path}_epoch"), - ), - ge_amount: MetricsTree_Distribution_UtxoCohorts_GeAmount::new( - client.clone(), - format!("{base_path}_ge_amount"), - ), - lt_amount: MetricsTree_Distribution_UtxoCohorts_LtAmount::new( - client.clone(), - format!("{base_path}_lt_amount"), - ), - max_age: MetricsTree_Distribution_UtxoCohorts_MaxAge::new( - client.clone(), - format!("{base_path}_max_age"), - ), - min_age: MetricsTree_Distribution_UtxoCohorts_MinAge::new( - client.clone(), - format!("{base_path}_min_age"), - ), - term: MetricsTree_Distribution_UtxoCohorts_Term::new( - client.clone(), - format!("{base_path}_term"), - ), - type_: MetricsTree_Distribution_UtxoCohorts_Type::new( - client.clone(), - format!("{base_path}_type_"), - ), - year: MetricsTree_Distribution_UtxoCohorts_Year::new( - client.clone(), - format!("{base_path}_year"), - ), + age_range: MetricsTree_Distribution_UtxoCohorts_AgeRange::new(client.clone(), format!("{base_path}_age_range")), + all: MetricsTree_Distribution_UtxoCohorts_All::new(client.clone(), format!("{base_path}_all")), + amount_range: MetricsTree_Distribution_UtxoCohorts_AmountRange::new(client.clone(), format!("{base_path}_amount_range")), + epoch: MetricsTree_Distribution_UtxoCohorts_Epoch::new(client.clone(), format!("{base_path}_epoch")), + ge_amount: MetricsTree_Distribution_UtxoCohorts_GeAmount::new(client.clone(), format!("{base_path}_ge_amount")), + lt_amount: MetricsTree_Distribution_UtxoCohorts_LtAmount::new(client.clone(), format!("{base_path}_lt_amount")), + max_age: MetricsTree_Distribution_UtxoCohorts_MaxAge::new(client.clone(), format!("{base_path}_max_age")), + min_age: MetricsTree_Distribution_UtxoCohorts_MinAge::new(client.clone(), format!("{base_path}_min_age")), + term: MetricsTree_Distribution_UtxoCohorts_Term::new(client.clone(), format!("{base_path}_term")), + type_: MetricsTree_Distribution_UtxoCohorts_Type::new(client.clone(), format!("{base_path}_type_")), + year: MetricsTree_Distribution_UtxoCohorts_Year::new(client.clone(), format!("{base_path}_year")), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange { - pub _10y_to_12y: _10yTo12yPattern, - pub _12y_to_15y: _10yTo12yPattern, - pub _1d_to_1w: _10yTo12yPattern, - pub _1h_to_1d: _10yTo12yPattern, - pub _1m_to_2m: _10yTo12yPattern, - pub _1w_to_1m: _10yTo12yPattern, - pub _1y_to_2y: _10yTo12yPattern, - pub _2m_to_3m: _10yTo12yPattern, - pub _2y_to_3y: _10yTo12yPattern, - pub _3m_to_4m: _10yTo12yPattern, - pub _3y_to_4y: _10yTo12yPattern, - pub _4m_to_5m: _10yTo12yPattern, - pub _4y_to_5y: _10yTo12yPattern, - pub _5m_to_6m: _10yTo12yPattern, - pub _5y_to_6y: _10yTo12yPattern, - pub _6m_to_1y: _10yTo12yPattern, - pub _6y_to_7y: _10yTo12yPattern, - pub _7y_to_8y: _10yTo12yPattern, - pub _8y_to_10y: _10yTo12yPattern, - pub from_15y: _10yTo12yPattern, - pub up_to_1h: _10yTo12yPattern, + pub _10y_to_12y: MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y, + pub _12y_to_15y: MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y, + pub _1d_to_1w: MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w, + pub _1h_to_1d: MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d, + pub _1m_to_2m: MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m, + pub _1w_to_1m: MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m, + pub _1y_to_2y: MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y, + pub _2m_to_3m: MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m, + pub _2y_to_3y: MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y, + pub _3m_to_4m: MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m, + pub _3y_to_4y: MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y, + pub _4m_to_5m: MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m, + pub _4y_to_5y: MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y, + pub _5m_to_6m: MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m, + pub _5y_to_6y: MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y, + pub _6m_to_1y: MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y, + pub _6y_to_7y: MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y, + pub _7y_to_8y: MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y, + pub _8y_to_10y: MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y, + pub from_15y: MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y, + pub up_to_1h: MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h, } impl MetricsTree_Distribution_UtxoCohorts_AgeRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _10y_to_12y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_10y_up_to_12y_old".to_string(), - ), - _12y_to_15y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_12y_up_to_15y_old".to_string(), - ), - _1d_to_1w: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_1d_up_to_1w_old".to_string(), - ), - _1h_to_1d: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_1h_up_to_1d_old".to_string(), - ), - _1m_to_2m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_1m_up_to_2m_old".to_string(), - ), - _1w_to_1m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_1w_up_to_1m_old".to_string(), - ), - _1y_to_2y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_1y_up_to_2y_old".to_string(), - ), - _2m_to_3m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_2m_up_to_3m_old".to_string(), - ), - _2y_to_3y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_2y_up_to_3y_old".to_string(), - ), - _3m_to_4m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_3m_up_to_4m_old".to_string(), - ), - _3y_to_4y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_3y_up_to_4y_old".to_string(), - ), - _4m_to_5m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_4m_up_to_5m_old".to_string(), - ), - _4y_to_5y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_4y_up_to_5y_old".to_string(), - ), - _5m_to_6m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_5m_up_to_6m_old".to_string(), - ), - _5y_to_6y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_5y_up_to_6y_old".to_string(), - ), - _6m_to_1y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_6m_up_to_1y_old".to_string(), - ), - _6y_to_7y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_6y_up_to_7y_old".to_string(), - ), - _7y_to_8y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_7y_up_to_8y_old".to_string(), - ), - _8y_to_10y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_8y_up_to_10y_old".to_string(), - ), - from_15y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_15y_old".to_string()), - up_to_1h: _10yTo12yPattern::new(client.clone(), "utxos_up_to_1h_old".to_string()), + _10y_to_12y: MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y::new(client.clone(), format!("{base_path}_10y_to_12y")), + _12y_to_15y: MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y::new(client.clone(), format!("{base_path}_12y_to_15y")), + _1d_to_1w: MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w::new(client.clone(), format!("{base_path}_1d_to_1w")), + _1h_to_1d: MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d::new(client.clone(), format!("{base_path}_1h_to_1d")), + _1m_to_2m: MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m::new(client.clone(), format!("{base_path}_1m_to_2m")), + _1w_to_1m: MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m::new(client.clone(), format!("{base_path}_1w_to_1m")), + _1y_to_2y: MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y::new(client.clone(), format!("{base_path}_1y_to_2y")), + _2m_to_3m: MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m::new(client.clone(), format!("{base_path}_2m_to_3m")), + _2y_to_3y: MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y::new(client.clone(), format!("{base_path}_2y_to_3y")), + _3m_to_4m: MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m::new(client.clone(), format!("{base_path}_3m_to_4m")), + _3y_to_4y: MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y::new(client.clone(), format!("{base_path}_3y_to_4y")), + _4m_to_5m: MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m::new(client.clone(), format!("{base_path}_4m_to_5m")), + _4y_to_5y: MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y::new(client.clone(), format!("{base_path}_4y_to_5y")), + _5m_to_6m: MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m::new(client.clone(), format!("{base_path}_5m_to_6m")), + _5y_to_6y: MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y::new(client.clone(), format!("{base_path}_5y_to_6y")), + _6m_to_1y: MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y::new(client.clone(), format!("{base_path}_6m_to_1y")), + _6y_to_7y: MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y::new(client.clone(), format!("{base_path}_6y_to_7y")), + _7y_to_8y: MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y::new(client.clone(), format!("{base_path}_7y_to_8y")), + _8y_to_10y: MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y::new(client.clone(), format!("{base_path}_8y_to_10y")), + from_15y: MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y::new(client.clone(), format!("{base_path}_from_15y")), + up_to_1h: MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h::new(client.clone(), format!("{base_path}_up_to_1h")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_10y_up_to_12y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_10y_up_to_12y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_10y_up_to_12y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_10y_up_to_12y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_10y_up_to_12y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_10y_up_to_12y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_10y_up_to_12y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_10y_up_to_12y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_10y_up_to_12y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_12y_up_to_15y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_12y_up_to_15y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_12y_up_to_15y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_12y_up_to_15y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_12y_up_to_15y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_12y_up_to_15y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_12y_up_to_15y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_12y_up_to_15y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_12y_up_to_15y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_1d_up_to_1w_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_1d_up_to_1w_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_1d_up_to_1w_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_1d_up_to_1w_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_1d_up_to_1w_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_1d_up_to_1w_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_1d_up_to_1w_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_1d_up_to_1w_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_1d_up_to_1w_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_1h_up_to_1d_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_1h_up_to_1d_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_1h_up_to_1d_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_1h_up_to_1d_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_1h_up_to_1d_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_1h_up_to_1d_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_1h_up_to_1d_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_1h_up_to_1d_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_1h_up_to_1d_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_1m_up_to_2m_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_1m_up_to_2m_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_1m_up_to_2m_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_1m_up_to_2m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_1m_up_to_2m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_1m_up_to_2m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_1m_up_to_2m_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_1m_up_to_2m_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_1m_up_to_2m_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_1w_up_to_1m_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_1w_up_to_1m_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_1w_up_to_1m_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_1w_up_to_1m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_1w_up_to_1m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_1w_up_to_1m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_1w_up_to_1m_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_1w_up_to_1m_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_1w_up_to_1m_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_1y_up_to_2y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_1y_up_to_2y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_1y_up_to_2y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_1y_up_to_2y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_1y_up_to_2y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_1y_up_to_2y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_1y_up_to_2y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_1y_up_to_2y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_1y_up_to_2y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_2m_up_to_3m_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_2m_up_to_3m_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_2m_up_to_3m_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_2m_up_to_3m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_2m_up_to_3m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_2m_up_to_3m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_2m_up_to_3m_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_2m_up_to_3m_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_2m_up_to_3m_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_2y_up_to_3y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_2y_up_to_3y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_2y_up_to_3y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_2y_up_to_3y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_2y_up_to_3y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_2y_up_to_3y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_2y_up_to_3y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_2y_up_to_3y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_2y_up_to_3y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_3m_up_to_4m_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_3m_up_to_4m_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_3m_up_to_4m_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_3m_up_to_4m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_3m_up_to_4m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_3m_up_to_4m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_3m_up_to_4m_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_3m_up_to_4m_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_3m_up_to_4m_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_3y_up_to_4y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_3y_up_to_4y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_3y_up_to_4y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_3y_up_to_4y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_3y_up_to_4y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_3y_up_to_4y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_3y_up_to_4y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_3y_up_to_4y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_3y_up_to_4y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_4m_up_to_5m_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_4m_up_to_5m_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_4m_up_to_5m_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_4m_up_to_5m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_4m_up_to_5m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_4m_up_to_5m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_4m_up_to_5m_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_4m_up_to_5m_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_4m_up_to_5m_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_4y_up_to_5y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_4y_up_to_5y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_4y_up_to_5y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_4y_up_to_5y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_4y_up_to_5y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_4y_up_to_5y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_4y_up_to_5y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_4y_up_to_5y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_4y_up_to_5y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_5m_up_to_6m_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_5m_up_to_6m_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_5m_up_to_6m_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_5m_up_to_6m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_5m_up_to_6m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_5m_up_to_6m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_5m_up_to_6m_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_5m_up_to_6m_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_5m_up_to_6m_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_5y_up_to_6y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_5y_up_to_6y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_5y_up_to_6y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_5y_up_to_6y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_5y_up_to_6y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_5y_up_to_6y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_5y_up_to_6y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_5y_up_to_6y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_5y_up_to_6y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_6m_up_to_1y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_6m_up_to_1y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_6m_up_to_1y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_6m_up_to_1y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_6m_up_to_1y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_6m_up_to_1y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_6m_up_to_1y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_6m_up_to_1y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_6m_up_to_1y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_6y_up_to_7y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_6y_up_to_7y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_6y_up_to_7y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_6y_up_to_7y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_6y_up_to_7y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_6y_up_to_7y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_6y_up_to_7y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_6y_up_to_7y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_6y_up_to_7y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_7y_up_to_8y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_7y_up_to_8y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_7y_up_to_8y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_7y_up_to_8y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_7y_up_to_8y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_7y_up_to_8y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_7y_up_to_8y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_7y_up_to_8y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_7y_up_to_8y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_8y_up_to_10y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_8y_up_to_10y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_8y_up_to_10y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_8y_up_to_10y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_8y_up_to_10y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_8y_up_to_10y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_8y_up_to_10y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_8y_up_to_10y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_8y_up_to_10y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_15y_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_15y_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_at_least_15y_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_at_least_15y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_15y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_15y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_at_least_15y_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_at_least_15y_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_at_least_15y_old_cost_basis".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h { + pub activity: ActivityPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h_CostBasis, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_1h_old".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_1h_old_utxo_count".to_string()), + realized: RealizedPattern2::new(client.clone(), "utxos_up_to_1h_old".to_string()), + relative: RelativePattern2::new(client.clone(), "utxos_up_to_1h_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_1h_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_1h_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "utxos_up_to_1h_old_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "utxos_up_to_1h_old_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "utxos_up_to_1h_old_cost_basis".to_string()), } } } @@ -5319,31 +6712,22 @@ pub struct MetricsTree_Distribution_UtxoCohorts_All { pub activity: MetricsTree_Distribution_UtxoCohorts_All_Activity, pub cost_basis: MetricsTree_Distribution_UtxoCohorts_All_CostBasis, pub outputs: OutputsPattern, - pub realized: RealizedPattern3, + pub realized: MetricsTree_Distribution_UtxoCohorts_All_Realized, pub relative: MetricsTree_Distribution_UtxoCohorts_All_Relative, pub supply: SupplyPattern2, - pub unrealized: UnrealizedPattern, + pub unrealized: MetricsTree_Distribution_UtxoCohorts_All_Unrealized, } impl MetricsTree_Distribution_UtxoCohorts_All { pub fn new(client: Arc, base_path: String) -> Self { Self { - activity: MetricsTree_Distribution_UtxoCohorts_All_Activity::new( - client.clone(), - format!("{base_path}_activity"), - ), - cost_basis: MetricsTree_Distribution_UtxoCohorts_All_CostBasis::new( - client.clone(), - format!("{base_path}_cost_basis"), - ), + activity: MetricsTree_Distribution_UtxoCohorts_All_Activity::new(client.clone(), format!("{base_path}_activity")), + cost_basis: MetricsTree_Distribution_UtxoCohorts_All_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), outputs: OutputsPattern::new(client.clone(), "utxo_count".to_string()), - realized: RealizedPattern3::new(client.clone(), "".to_string()), - relative: MetricsTree_Distribution_UtxoCohorts_All_Relative::new( - client.clone(), - format!("{base_path}_relative"), - ), + realized: MetricsTree_Distribution_UtxoCohorts_All_Realized::new(client.clone(), format!("{base_path}_realized")), + relative: MetricsTree_Distribution_UtxoCohorts_All_Relative::new(client.clone(), format!("{base_path}_relative")), supply: SupplyPattern2::new(client.clone(), "supply".to_string()), - unrealized: UnrealizedPattern::new(client.clone(), "".to_string()), + unrealized: MetricsTree_Distribution_UtxoCohorts_All_Unrealized::new(client.clone(), format!("{base_path}_unrealized")), } } } @@ -5360,22 +6744,10 @@ pub struct MetricsTree_Distribution_UtxoCohorts_All_Activity { impl MetricsTree_Distribution_UtxoCohorts_All_Activity { pub fn new(client: Arc, base_path: String) -> Self { Self { - coinblocks_destroyed: BlockCountPattern::new( - client.clone(), - "coinblocks_destroyed".to_string(), - ), - coindays_destroyed: BlockCountPattern::new( - client.clone(), - "coindays_destroyed".to_string(), - ), - satblocks_destroyed: MetricPattern11::new( - client.clone(), - "satblocks_destroyed".to_string(), - ), - satdays_destroyed: MetricPattern11::new( - client.clone(), - "satdays_destroyed".to_string(), - ), + coinblocks_destroyed: BlockCountPattern::new(client.clone(), "coinblocks_destroyed".to_string()), + coindays_destroyed: BlockCountPattern::new(client.clone(), "coindays_destroyed".to_string()), + satblocks_destroyed: MetricPattern11::new(client.clone(), "satblocks_destroyed".to_string()), + satdays_destroyed: MetricPattern11::new(client.clone(), "satdays_destroyed".to_string()), sent: UnclaimedRewardsPattern::new(client.clone(), "sent".to_string()), } } @@ -5398,6 +6770,130 @@ impl MetricsTree_Distribution_UtxoCohorts_All_CostBasis { } } +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_All_Realized { + pub adjusted_sopr: MetricPattern6, + pub adjusted_sopr_30d_ema: MetricPattern6, + pub adjusted_sopr_7d_ema: MetricPattern6, + pub adjusted_value_created: MetricPattern1, + pub adjusted_value_destroyed: MetricPattern1, + pub mvrv: MetricPattern4, + pub neg_realized_loss: BitcoinPattern2, + pub net_realized_pnl: BlockCountPattern, + pub net_realized_pnl_cumulative_30d_delta: MetricPattern4, + pub net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4, + pub net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4, + pub net_realized_pnl_rel_to_realized_cap: BlockCountPattern, + pub realized_cap: MetricPattern1, + pub realized_cap_30d_delta: MetricPattern4, + pub realized_cap_rel_to_own_market_cap: MetricPattern1, + pub realized_loss: BlockCountPattern, + pub realized_loss_rel_to_realized_cap: BlockCountPattern, + pub realized_price: MetricPattern1, + pub realized_price_extra: MetricsTree_Distribution_UtxoCohorts_All_Realized_RealizedPriceExtra, + pub realized_profit: BlockCountPattern, + pub realized_profit_rel_to_realized_cap: BlockCountPattern, + pub realized_profit_to_loss_ratio: MetricPattern6, + pub realized_value: MetricPattern1, + pub sell_side_risk_ratio: MetricPattern6, + pub sell_side_risk_ratio_30d_ema: MetricPattern6, + pub sell_side_risk_ratio_7d_ema: MetricPattern6, + pub sopr: MetricPattern6, + pub sopr_30d_ema: MetricPattern6, + pub sopr_7d_ema: MetricPattern6, + pub total_realized_pnl: MetricPattern1, + pub value_created: MetricPattern1, + pub value_destroyed: MetricPattern1, +} + +impl MetricsTree_Distribution_UtxoCohorts_All_Realized { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + adjusted_sopr: MetricPattern6::new(client.clone(), "adjusted_sopr".to_string()), + adjusted_sopr_30d_ema: MetricPattern6::new(client.clone(), "adjusted_sopr_30d_ema".to_string()), + adjusted_sopr_7d_ema: MetricPattern6::new(client.clone(), "adjusted_sopr_7d_ema".to_string()), + adjusted_value_created: MetricPattern1::new(client.clone(), "adjusted_value_created".to_string()), + adjusted_value_destroyed: MetricPattern1::new(client.clone(), "adjusted_value_destroyed".to_string()), + mvrv: MetricPattern4::new(client.clone(), "mvrv".to_string()), + neg_realized_loss: BitcoinPattern2::new(client.clone(), "neg_realized_loss".to_string()), + net_realized_pnl: BlockCountPattern::new(client.clone(), "net_realized_pnl".to_string()), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), "net_realized_pnl_cumulative_30d_delta".to_string()), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap".to_string()), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap".to_string()), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), "net_realized_pnl_rel_to_realized_cap".to_string()), + realized_cap: MetricPattern1::new(client.clone(), "realized_cap".to_string()), + realized_cap_30d_delta: MetricPattern4::new(client.clone(), "realized_cap_30d_delta".to_string()), + realized_cap_rel_to_own_market_cap: MetricPattern1::new(client.clone(), "realized_cap_rel_to_own_market_cap".to_string()), + realized_loss: BlockCountPattern::new(client.clone(), "realized_loss".to_string()), + realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), "realized_loss_rel_to_realized_cap".to_string()), + realized_price: MetricPattern1::new(client.clone(), "realized_price".to_string()), + realized_price_extra: MetricsTree_Distribution_UtxoCohorts_All_Realized_RealizedPriceExtra::new(client.clone(), format!("{base_path}_realized_price_extra")), + realized_profit: BlockCountPattern::new(client.clone(), "realized_profit".to_string()), + realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), "realized_profit_rel_to_realized_cap".to_string()), + realized_profit_to_loss_ratio: MetricPattern6::new(client.clone(), "realized_profit_to_loss_ratio".to_string()), + realized_value: MetricPattern1::new(client.clone(), "realized_value".to_string()), + sell_side_risk_ratio: MetricPattern6::new(client.clone(), "sell_side_risk_ratio".to_string()), + sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), "sell_side_risk_ratio_30d_ema".to_string()), + sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), "sell_side_risk_ratio_7d_ema".to_string()), + sopr: MetricPattern6::new(client.clone(), "sopr".to_string()), + sopr_30d_ema: MetricPattern6::new(client.clone(), "sopr_30d_ema".to_string()), + sopr_7d_ema: MetricPattern6::new(client.clone(), "sopr_7d_ema".to_string()), + total_realized_pnl: MetricPattern1::new(client.clone(), "total_realized_pnl".to_string()), + value_created: MetricPattern1::new(client.clone(), "value_created".to_string()), + value_destroyed: MetricPattern1::new(client.clone(), "value_destroyed".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_All_Realized_RealizedPriceExtra { + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_All_Realized_RealizedPriceExtra { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + ratio: MetricPattern4::new(client.clone(), "realized_price_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "realized_price_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "realized_price_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "realized_price_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "realized_price_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "realized_price_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "realized_price_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "realized_price_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "realized_price_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "realized_price_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "realized_price_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "realized_price_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "realized_price_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "realized_price_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "realized_price_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "realized_price_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "realized_price_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "realized_price_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "realized_price_ratio".to_string()), + } + } +} + /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_All_Relative { pub neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1, @@ -5411,302 +6907,2317 @@ pub struct MetricsTree_Distribution_UtxoCohorts_All_Relative { impl MetricsTree_Distribution_UtxoCohorts_All_Relative { pub fn new(client: Arc, base_path: String) -> Self { Self { - neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - "neg_unrealized_loss_rel_to_own_total_unrealized_pnl".to_string(), - ), - net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - "net_unrealized_pnl_rel_to_own_total_unrealized_pnl".to_string(), - ), - supply_in_loss_rel_to_own_supply: MetricPattern1::new( - client.clone(), - "supply_in_loss_rel_to_own_supply".to_string(), - ), - supply_in_profit_rel_to_own_supply: MetricPattern1::new( - client.clone(), - "supply_in_profit_rel_to_own_supply".to_string(), - ), - unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - "unrealized_loss_rel_to_own_total_unrealized_pnl".to_string(), - ), - unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - "unrealized_profit_rel_to_own_total_unrealized_pnl".to_string(), - ), + neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "neg_unrealized_loss_rel_to_own_total_unrealized_pnl".to_string()), + net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "net_unrealized_pnl_rel_to_own_total_unrealized_pnl".to_string()), + supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), "supply_in_loss_rel_to_own_supply".to_string()), + supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), "supply_in_profit_rel_to_own_supply".to_string()), + unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "unrealized_loss_rel_to_own_total_unrealized_pnl".to_string()), + unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "unrealized_profit_rel_to_own_total_unrealized_pnl".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_All_Unrealized { + pub neg_unrealized_loss: MetricPattern1, + pub net_unrealized_pnl: MetricPattern1, + pub supply_in_loss: ActiveSupplyPattern, + pub supply_in_profit: ActiveSupplyPattern, + pub total_unrealized_pnl: MetricPattern1, + pub unrealized_loss: MetricPattern1, + pub unrealized_profit: MetricPattern1, +} + +impl MetricsTree_Distribution_UtxoCohorts_All_Unrealized { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + neg_unrealized_loss: MetricPattern1::new(client.clone(), "neg_unrealized_loss".to_string()), + net_unrealized_pnl: MetricPattern1::new(client.clone(), "net_unrealized_pnl".to_string()), + supply_in_loss: ActiveSupplyPattern::new(client.clone(), "supply_in_loss".to_string()), + supply_in_profit: ActiveSupplyPattern::new(client.clone(), "supply_in_profit".to_string()), + total_unrealized_pnl: MetricPattern1::new(client.clone(), "total_unrealized_pnl".to_string()), + unrealized_loss: MetricPattern1::new(client.clone(), "unrealized_loss".to_string()), + unrealized_profit: MetricPattern1::new(client.clone(), "unrealized_profit".to_string()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange { - pub _0sats: _0satsPattern2, - pub _100btc_to_1k_btc: _0satsPattern2, - pub _100k_btc_or_more: _0satsPattern2, - pub _100k_sats_to_1m_sats: _0satsPattern2, - pub _100sats_to_1k_sats: _0satsPattern2, - pub _10btc_to_100btc: _0satsPattern2, - pub _10k_btc_to_100k_btc: _0satsPattern2, - pub _10k_sats_to_100k_sats: _0satsPattern2, - pub _10m_sats_to_1btc: _0satsPattern2, - pub _10sats_to_100sats: _0satsPattern2, - pub _1btc_to_10btc: _0satsPattern2, - pub _1k_btc_to_10k_btc: _0satsPattern2, - pub _1k_sats_to_10k_sats: _0satsPattern2, - pub _1m_sats_to_10m_sats: _0satsPattern2, - pub _1sat_to_10sats: _0satsPattern2, + pub _0sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_0sats, + pub _100btc_to_1k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_100btcTo1kBtc, + pub _100k_btc_or_more: MetricsTree_Distribution_UtxoCohorts_AmountRange_100kBtcOrMore, + pub _100k_sats_to_1m_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_100kSatsTo1mSats, + pub _100sats_to_1k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_100satsTo1kSats, + pub _10btc_to_100btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10btcTo100btc, + pub _10k_btc_to_100k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10kBtcTo100kBtc, + pub _10k_sats_to_100k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_10kSatsTo100kSats, + pub _10m_sats_to_1btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10mSatsTo1btc, + pub _10sats_to_100sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_10satsTo100sats, + pub _1btc_to_10btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_1btcTo10btc, + pub _1k_btc_to_10k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_1kBtcTo10kBtc, + pub _1k_sats_to_10k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_1kSatsTo10kSats, + pub _1m_sats_to_10m_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_1mSatsTo10mSats, + pub _1sat_to_10sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_1satTo10sats, } impl MetricsTree_Distribution_UtxoCohorts_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _0sats: _0satsPattern2::new(client.clone(), "utxos_with_0sats".to_string()), - _100btc_to_1k_btc: _0satsPattern2::new( - client.clone(), - "utxos_above_100btc_under_1k_btc".to_string(), - ), - _100k_btc_or_more: _0satsPattern2::new( - client.clone(), - "utxos_above_100k_btc".to_string(), - ), - _100k_sats_to_1m_sats: _0satsPattern2::new( - client.clone(), - "utxos_above_100k_sats_under_1m_sats".to_string(), - ), - _100sats_to_1k_sats: _0satsPattern2::new( - client.clone(), - "utxos_above_100sats_under_1k_sats".to_string(), - ), - _10btc_to_100btc: _0satsPattern2::new( - client.clone(), - "utxos_above_10btc_under_100btc".to_string(), - ), - _10k_btc_to_100k_btc: _0satsPattern2::new( - client.clone(), - "utxos_above_10k_btc_under_100k_btc".to_string(), - ), - _10k_sats_to_100k_sats: _0satsPattern2::new( - client.clone(), - "utxos_above_10k_sats_under_100k_sats".to_string(), - ), - _10m_sats_to_1btc: _0satsPattern2::new( - client.clone(), - "utxos_above_10m_sats_under_1btc".to_string(), - ), - _10sats_to_100sats: _0satsPattern2::new( - client.clone(), - "utxos_above_10sats_under_100sats".to_string(), - ), - _1btc_to_10btc: _0satsPattern2::new( - client.clone(), - "utxos_above_1btc_under_10btc".to_string(), - ), - _1k_btc_to_10k_btc: _0satsPattern2::new( - client.clone(), - "utxos_above_1k_btc_under_10k_btc".to_string(), - ), - _1k_sats_to_10k_sats: _0satsPattern2::new( - client.clone(), - "utxos_above_1k_sats_under_10k_sats".to_string(), - ), - _1m_sats_to_10m_sats: _0satsPattern2::new( - client.clone(), - "utxos_above_1m_sats_under_10m_sats".to_string(), - ), - _1sat_to_10sats: _0satsPattern2::new( - client.clone(), - "utxos_above_1sat_under_10sats".to_string(), - ), + _0sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_0sats::new(client.clone(), format!("{base_path}_0sats")), + _100btc_to_1k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_100btcTo1kBtc::new(client.clone(), format!("{base_path}_100btc_to_1k_btc")), + _100k_btc_or_more: MetricsTree_Distribution_UtxoCohorts_AmountRange_100kBtcOrMore::new(client.clone(), format!("{base_path}_100k_btc_or_more")), + _100k_sats_to_1m_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_100kSatsTo1mSats::new(client.clone(), format!("{base_path}_100k_sats_to_1m_sats")), + _100sats_to_1k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_100satsTo1kSats::new(client.clone(), format!("{base_path}_100sats_to_1k_sats")), + _10btc_to_100btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10btcTo100btc::new(client.clone(), format!("{base_path}_10btc_to_100btc")), + _10k_btc_to_100k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10kBtcTo100kBtc::new(client.clone(), format!("{base_path}_10k_btc_to_100k_btc")), + _10k_sats_to_100k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_10kSatsTo100kSats::new(client.clone(), format!("{base_path}_10k_sats_to_100k_sats")), + _10m_sats_to_1btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10mSatsTo1btc::new(client.clone(), format!("{base_path}_10m_sats_to_1btc")), + _10sats_to_100sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_10satsTo100sats::new(client.clone(), format!("{base_path}_10sats_to_100sats")), + _1btc_to_10btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_1btcTo10btc::new(client.clone(), format!("{base_path}_1btc_to_10btc")), + _1k_btc_to_10k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_1kBtcTo10kBtc::new(client.clone(), format!("{base_path}_1k_btc_to_10k_btc")), + _1k_sats_to_10k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_1kSatsTo10kSats::new(client.clone(), format!("{base_path}_1k_sats_to_10k_sats")), + _1m_sats_to_10m_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_1mSatsTo10mSats::new(client.clone(), format!("{base_path}_1m_sats_to_10m_sats")), + _1sat_to_10sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_1satTo10sats::new(client.clone(), format!("{base_path}_1sat_to_10sats")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_0sats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_0sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_with_0sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_with_0sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_with_0sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_with_0sats".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_with_0sats_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_with_0sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_with_0sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_100btcTo1kBtc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_100btcTo1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_100btc_under_1k_btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_100btc_under_1k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_100btc_under_1k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_100btc_under_1k_btc".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_100btc_under_1k_btc_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_100btc_under_1k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_100btc_under_1k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_100kBtcOrMore { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_100kBtcOrMore { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_100k_btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_100k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_100k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_100k_btc".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_100k_btc_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_100k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_100k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_100kSatsTo1mSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_100kSatsTo1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_100k_sats_under_1m_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_100k_sats_under_1m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_100k_sats_under_1m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_100k_sats_under_1m_sats".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_100k_sats_under_1m_sats_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_100k_sats_under_1m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_100k_sats_under_1m_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_100satsTo1kSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_100satsTo1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_100sats_under_1k_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_100sats_under_1k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_100sats_under_1k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_100sats_under_1k_sats".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_100sats_under_1k_sats_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_100sats_under_1k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_100sats_under_1k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_10btcTo100btc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_10btcTo100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_10btc_under_100btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_10btc_under_100btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_10btc_under_100btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_10btc_under_100btc".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_10btc_under_100btc_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_10btc_under_100btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_10btc_under_100btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_10kBtcTo100kBtc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_10kBtcTo100kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_10k_btc_under_100k_btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_10k_btc_under_100k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_10k_btc_under_100k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_10k_btc_under_100k_btc".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_10k_btc_under_100k_btc_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_10k_btc_under_100k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_10k_btc_under_100k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_10kSatsTo100kSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_10kSatsTo100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_10k_sats_under_100k_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_10k_sats_under_100k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_10k_sats_under_100k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_10k_sats_under_100k_sats".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_10k_sats_under_100k_sats_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_10k_sats_under_100k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_10k_sats_under_100k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_10mSatsTo1btc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_10mSatsTo1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_10m_sats_under_1btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_10m_sats_under_1btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_10m_sats_under_1btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_10m_sats_under_1btc".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_10m_sats_under_1btc_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_10m_sats_under_1btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_10m_sats_under_1btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_10satsTo100sats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_10satsTo100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_10sats_under_100sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_10sats_under_100sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_10sats_under_100sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_10sats_under_100sats".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_10sats_under_100sats_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_10sats_under_100sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_10sats_under_100sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_1btcTo10btc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_1btcTo10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_1btc_under_10btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_1btc_under_10btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_1btc_under_10btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_1btc_under_10btc".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_1btc_under_10btc_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_1btc_under_10btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_1btc_under_10btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_1kBtcTo10kBtc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_1kBtcTo10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_1k_btc_under_10k_btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_1k_btc_under_10k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_1k_btc_under_10k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_1k_btc_under_10k_btc".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_1k_btc_under_10k_btc_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_1k_btc_under_10k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_1k_btc_under_10k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_1kSatsTo10kSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_1kSatsTo10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_1k_sats_under_10k_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_1k_sats_under_10k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_1k_sats_under_10k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_1k_sats_under_10k_sats".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_1k_sats_under_10k_sats_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_1k_sats_under_10k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_1k_sats_under_10k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_1mSatsTo10mSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_1mSatsTo10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_1m_sats_under_10m_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_1m_sats_under_10m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_1m_sats_under_10m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_1m_sats_under_10m_sats".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_1m_sats_under_10m_sats_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_1m_sats_under_10m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_1m_sats_under_10m_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_AmountRange_1satTo10sats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_AmountRange_1satTo10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_1sat_under_10sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_1sat_under_10sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_1sat_under_10sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_1sat_under_10sats".to_string()), + relative: RelativePattern4::new(client.clone(), "utxos_above_1sat_under_10sats_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_1sat_under_10sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_1sat_under_10sats".to_string()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_Epoch { - pub _0: _0satsPattern2, - pub _1: _0satsPattern2, - pub _2: _0satsPattern2, - pub _3: _0satsPattern2, - pub _4: _0satsPattern2, + pub _0: MetricsTree_Distribution_UtxoCohorts_Epoch_0, + pub _1: MetricsTree_Distribution_UtxoCohorts_Epoch_1, + pub _2: MetricsTree_Distribution_UtxoCohorts_Epoch_2, + pub _3: MetricsTree_Distribution_UtxoCohorts_Epoch_3, + pub _4: MetricsTree_Distribution_UtxoCohorts_Epoch_4, } impl MetricsTree_Distribution_UtxoCohorts_Epoch { pub fn new(client: Arc, base_path: String) -> Self { Self { - _0: _0satsPattern2::new(client.clone(), "epoch_0".to_string()), - _1: _0satsPattern2::new(client.clone(), "epoch_1".to_string()), - _2: _0satsPattern2::new(client.clone(), "epoch_2".to_string()), - _3: _0satsPattern2::new(client.clone(), "epoch_3".to_string()), - _4: _0satsPattern2::new(client.clone(), "epoch_4".to_string()), + _0: MetricsTree_Distribution_UtxoCohorts_Epoch_0::new(client.clone(), format!("{base_path}_0")), + _1: MetricsTree_Distribution_UtxoCohorts_Epoch_1::new(client.clone(), format!("{base_path}_1")), + _2: MetricsTree_Distribution_UtxoCohorts_Epoch_2::new(client.clone(), format!("{base_path}_2")), + _3: MetricsTree_Distribution_UtxoCohorts_Epoch_3::new(client.clone(), format!("{base_path}_3")), + _4: MetricsTree_Distribution_UtxoCohorts_Epoch_4::new(client.clone(), format!("{base_path}_4")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Epoch_0 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Epoch_0 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "epoch_0".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "epoch_0".to_string()), + outputs: OutputsPattern::new(client.clone(), "epoch_0_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "epoch_0".to_string()), + relative: RelativePattern4::new(client.clone(), "epoch_0_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "epoch_0_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "epoch_0".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Epoch_1 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Epoch_1 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "epoch_1".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "epoch_1".to_string()), + outputs: OutputsPattern::new(client.clone(), "epoch_1_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "epoch_1".to_string()), + relative: RelativePattern4::new(client.clone(), "epoch_1_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "epoch_1_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "epoch_1".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Epoch_2 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Epoch_2 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "epoch_2".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "epoch_2".to_string()), + outputs: OutputsPattern::new(client.clone(), "epoch_2_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "epoch_2".to_string()), + relative: RelativePattern4::new(client.clone(), "epoch_2_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "epoch_2_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "epoch_2".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Epoch_3 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Epoch_3 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "epoch_3".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "epoch_3".to_string()), + outputs: OutputsPattern::new(client.clone(), "epoch_3_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "epoch_3".to_string()), + relative: RelativePattern4::new(client.clone(), "epoch_3_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "epoch_3_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "epoch_3".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Epoch_4 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Epoch_4 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "epoch_4".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "epoch_4".to_string()), + outputs: OutputsPattern::new(client.clone(), "epoch_4_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "epoch_4".to_string()), + relative: RelativePattern4::new(client.clone(), "epoch_4_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "epoch_4_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "epoch_4".to_string()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount { - pub _100btc: _100btcPattern, - pub _100k_sats: _100btcPattern, - pub _100sats: _100btcPattern, - pub _10btc: _100btcPattern, - pub _10k_btc: _100btcPattern, - pub _10k_sats: _100btcPattern, - pub _10m_sats: _100btcPattern, - pub _10sats: _100btcPattern, - pub _1btc: _100btcPattern, - pub _1k_btc: _100btcPattern, - pub _1k_sats: _100btcPattern, - pub _1m_sats: _100btcPattern, - pub _1sat: _100btcPattern, + pub _100btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_100btc, + pub _100k_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_100kSats, + pub _100sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_100sats, + pub _10btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_10btc, + pub _10k_btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_10kBtc, + pub _10k_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_10kSats, + pub _10m_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_10mSats, + pub _10sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_10sats, + pub _1btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_1btc, + pub _1k_btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_1kBtc, + pub _1k_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_1kSats, + pub _1m_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_1mSats, + pub _1sat: MetricsTree_Distribution_UtxoCohorts_GeAmount_1sat, } impl MetricsTree_Distribution_UtxoCohorts_GeAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _100btc: _100btcPattern::new(client.clone(), "utxos_above_100btc".to_string()), - _100k_sats: _100btcPattern::new(client.clone(), "utxos_above_100k_sats".to_string()), - _100sats: _100btcPattern::new(client.clone(), "utxos_above_100sats".to_string()), - _10btc: _100btcPattern::new(client.clone(), "utxos_above_10btc".to_string()), - _10k_btc: _100btcPattern::new(client.clone(), "utxos_above_10k_btc".to_string()), - _10k_sats: _100btcPattern::new(client.clone(), "utxos_above_10k_sats".to_string()), - _10m_sats: _100btcPattern::new(client.clone(), "utxos_above_10m_sats".to_string()), - _10sats: _100btcPattern::new(client.clone(), "utxos_above_10sats".to_string()), - _1btc: _100btcPattern::new(client.clone(), "utxos_above_1btc".to_string()), - _1k_btc: _100btcPattern::new(client.clone(), "utxos_above_1k_btc".to_string()), - _1k_sats: _100btcPattern::new(client.clone(), "utxos_above_1k_sats".to_string()), - _1m_sats: _100btcPattern::new(client.clone(), "utxos_above_1m_sats".to_string()), - _1sat: _100btcPattern::new(client.clone(), "utxos_above_1sat".to_string()), + _100btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_100btc::new(client.clone(), format!("{base_path}_100btc")), + _100k_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_100kSats::new(client.clone(), format!("{base_path}_100k_sats")), + _100sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_100sats::new(client.clone(), format!("{base_path}_100sats")), + _10btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_10btc::new(client.clone(), format!("{base_path}_10btc")), + _10k_btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_10kBtc::new(client.clone(), format!("{base_path}_10k_btc")), + _10k_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_10kSats::new(client.clone(), format!("{base_path}_10k_sats")), + _10m_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_10mSats::new(client.clone(), format!("{base_path}_10m_sats")), + _10sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_10sats::new(client.clone(), format!("{base_path}_10sats")), + _1btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_1btc::new(client.clone(), format!("{base_path}_1btc")), + _1k_btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_1kBtc::new(client.clone(), format!("{base_path}_1k_btc")), + _1k_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_1kSats::new(client.clone(), format!("{base_path}_1k_sats")), + _1m_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_1mSats::new(client.clone(), format!("{base_path}_1m_sats")), + _1sat: MetricsTree_Distribution_UtxoCohorts_GeAmount_1sat::new(client.clone(), format!("{base_path}_1sat")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_100btc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_100btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_100btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_100btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_100btc".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_100btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_100btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_100btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_100kSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_100k_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_100k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_100k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_100k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_100k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_100k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_100k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_100sats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_100sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_100sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_100sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_100sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_100sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_100sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_100sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_10btc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_10btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_10btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_10btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_10btc".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_10btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_10btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_10btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_10kBtc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_10k_btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_10k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_10k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_10k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_10k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_10k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_10k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_10kSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_10k_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_10k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_10k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_10k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_10k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_10k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_10k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_10mSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_10m_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_10m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_10m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_10m_sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_10m_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_10m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_10m_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_10sats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_10sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_10sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_10sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_10sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_10sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_10sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_10sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_1btc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_1btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_1btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_1btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_1btc".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_1btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_1btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_1btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_1kBtc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_1k_btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_1k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_1k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_1k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_1k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_1k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_1k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_1kSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_1k_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_1k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_1k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_1k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_1k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_1k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_1k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_1mSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_1m_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_1m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_1m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_1m_sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_1m_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_1m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_1m_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount_1sat { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_GeAmount_1sat { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_above_1sat".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_above_1sat".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_above_1sat_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_above_1sat".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_above_1sat".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_above_1sat_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_above_1sat".to_string()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount { - pub _100btc: _100btcPattern, - pub _100k_btc: _100btcPattern, - pub _100k_sats: _100btcPattern, - pub _100sats: _100btcPattern, - pub _10btc: _100btcPattern, - pub _10k_btc: _100btcPattern, - pub _10k_sats: _100btcPattern, - pub _10m_sats: _100btcPattern, - pub _10sats: _100btcPattern, - pub _1btc: _100btcPattern, - pub _1k_btc: _100btcPattern, - pub _1k_sats: _100btcPattern, - pub _1m_sats: _100btcPattern, + pub _100btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_100btc, + pub _100k_btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_100kBtc, + pub _100k_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_100kSats, + pub _100sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_100sats, + pub _10btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_10btc, + pub _10k_btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_10kBtc, + pub _10k_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_10kSats, + pub _10m_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_10mSats, + pub _10sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_10sats, + pub _1btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_1btc, + pub _1k_btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_1kBtc, + pub _1k_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_1kSats, + pub _1m_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_1mSats, } impl MetricsTree_Distribution_UtxoCohorts_LtAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _100btc: _100btcPattern::new(client.clone(), "utxos_under_100btc".to_string()), - _100k_btc: _100btcPattern::new(client.clone(), "utxos_under_100k_btc".to_string()), - _100k_sats: _100btcPattern::new(client.clone(), "utxos_under_100k_sats".to_string()), - _100sats: _100btcPattern::new(client.clone(), "utxos_under_100sats".to_string()), - _10btc: _100btcPattern::new(client.clone(), "utxos_under_10btc".to_string()), - _10k_btc: _100btcPattern::new(client.clone(), "utxos_under_10k_btc".to_string()), - _10k_sats: _100btcPattern::new(client.clone(), "utxos_under_10k_sats".to_string()), - _10m_sats: _100btcPattern::new(client.clone(), "utxos_under_10m_sats".to_string()), - _10sats: _100btcPattern::new(client.clone(), "utxos_under_10sats".to_string()), - _1btc: _100btcPattern::new(client.clone(), "utxos_under_1btc".to_string()), - _1k_btc: _100btcPattern::new(client.clone(), "utxos_under_1k_btc".to_string()), - _1k_sats: _100btcPattern::new(client.clone(), "utxos_under_1k_sats".to_string()), - _1m_sats: _100btcPattern::new(client.clone(), "utxos_under_1m_sats".to_string()), + _100btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_100btc::new(client.clone(), format!("{base_path}_100btc")), + _100k_btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_100kBtc::new(client.clone(), format!("{base_path}_100k_btc")), + _100k_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_100kSats::new(client.clone(), format!("{base_path}_100k_sats")), + _100sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_100sats::new(client.clone(), format!("{base_path}_100sats")), + _10btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_10btc::new(client.clone(), format!("{base_path}_10btc")), + _10k_btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_10kBtc::new(client.clone(), format!("{base_path}_10k_btc")), + _10k_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_10kSats::new(client.clone(), format!("{base_path}_10k_sats")), + _10m_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_10mSats::new(client.clone(), format!("{base_path}_10m_sats")), + _10sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_10sats::new(client.clone(), format!("{base_path}_10sats")), + _1btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_1btc::new(client.clone(), format!("{base_path}_1btc")), + _1k_btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_1kBtc::new(client.clone(), format!("{base_path}_1k_btc")), + _1k_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_1kSats::new(client.clone(), format!("{base_path}_1k_sats")), + _1m_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_1mSats::new(client.clone(), format!("{base_path}_1m_sats")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_100btc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_100btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_100btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_100btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_100btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_100btc".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_100btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_100btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_100btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_100kBtc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_100kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_100k_btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_100k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_100k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_100k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_100k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_100k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_100k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_100kSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_100kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_100k_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_100k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_100k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_100k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_100k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_100k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_100k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_100sats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_100sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_100sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_100sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_100sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_100sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_100sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_100sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_100sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_10btc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_10btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_10btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_10btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_10btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_10btc".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_10btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_10btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_10btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_10kBtc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_10kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_10k_btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_10k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_10k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_10k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_10k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_10k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_10k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_10kSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_10kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_10k_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_10k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_10k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_10k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_10k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_10k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_10k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_10mSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_10mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_10m_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_10m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_10m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_10m_sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_10m_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_10m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_10m_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_10sats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_10sats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_10sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_10sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_10sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_10sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_10sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_10sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_10sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_1btc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_1btc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_1btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_1btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_1btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_1btc".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_1btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_1btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_1btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_1kBtc { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_1kBtc { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_1k_btc".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_1k_btc".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_1k_btc_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_1k_btc".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_1k_btc".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_1k_btc_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_1k_btc".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_1kSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_1kSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_1k_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_1k_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_1k_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_1k_sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_1k_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_1k_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_1k_sats".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount_1mSats { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_LtAmount_1mSats { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_under_1m_sats".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_under_1m_sats".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_under_1m_sats_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_under_1m_sats".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_under_1m_sats".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_under_1m_sats_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_under_1m_sats".to_string()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge { - pub _10y: _10yPattern, - pub _12y: _10yPattern, - pub _15y: _10yPattern, - pub _1m: _10yPattern, - pub _1w: _10yPattern, - pub _1y: _10yPattern, - pub _2m: _10yPattern, - pub _2y: _10yPattern, - pub _3m: _10yPattern, - pub _3y: _10yPattern, - pub _4m: _10yPattern, - pub _4y: _10yPattern, - pub _5m: _10yPattern, - pub _5y: _10yPattern, - pub _6m: _10yPattern, - pub _6y: _10yPattern, - pub _7y: _10yPattern, - pub _8y: _10yPattern, + pub _10y: MetricsTree_Distribution_UtxoCohorts_MaxAge_10y, + pub _12y: MetricsTree_Distribution_UtxoCohorts_MaxAge_12y, + pub _15y: MetricsTree_Distribution_UtxoCohorts_MaxAge_15y, + pub _1m: MetricsTree_Distribution_UtxoCohorts_MaxAge_1m, + pub _1w: MetricsTree_Distribution_UtxoCohorts_MaxAge_1w, + pub _1y: MetricsTree_Distribution_UtxoCohorts_MaxAge_1y, + pub _2m: MetricsTree_Distribution_UtxoCohorts_MaxAge_2m, + pub _2y: MetricsTree_Distribution_UtxoCohorts_MaxAge_2y, + pub _3m: MetricsTree_Distribution_UtxoCohorts_MaxAge_3m, + pub _3y: MetricsTree_Distribution_UtxoCohorts_MaxAge_3y, + pub _4m: MetricsTree_Distribution_UtxoCohorts_MaxAge_4m, + pub _4y: MetricsTree_Distribution_UtxoCohorts_MaxAge_4y, + pub _5m: MetricsTree_Distribution_UtxoCohorts_MaxAge_5m, + pub _5y: MetricsTree_Distribution_UtxoCohorts_MaxAge_5y, + pub _6m: MetricsTree_Distribution_UtxoCohorts_MaxAge_6m, + pub _6y: MetricsTree_Distribution_UtxoCohorts_MaxAge_6y, + pub _7y: MetricsTree_Distribution_UtxoCohorts_MaxAge_7y, + pub _8y: MetricsTree_Distribution_UtxoCohorts_MaxAge_8y, } impl MetricsTree_Distribution_UtxoCohorts_MaxAge { pub fn new(client: Arc, base_path: String) -> Self { Self { - _10y: _10yPattern::new(client.clone(), "utxos_up_to_10y_old".to_string()), - _12y: _10yPattern::new(client.clone(), "utxos_up_to_12y_old".to_string()), - _15y: _10yPattern::new(client.clone(), "utxos_up_to_15y_old".to_string()), - _1m: _10yPattern::new(client.clone(), "utxos_up_to_1m_old".to_string()), - _1w: _10yPattern::new(client.clone(), "utxos_up_to_1w_old".to_string()), - _1y: _10yPattern::new(client.clone(), "utxos_up_to_1y_old".to_string()), - _2m: _10yPattern::new(client.clone(), "utxos_up_to_2m_old".to_string()), - _2y: _10yPattern::new(client.clone(), "utxos_up_to_2y_old".to_string()), - _3m: _10yPattern::new(client.clone(), "utxos_up_to_3m_old".to_string()), - _3y: _10yPattern::new(client.clone(), "utxos_up_to_3y_old".to_string()), - _4m: _10yPattern::new(client.clone(), "utxos_up_to_4m_old".to_string()), - _4y: _10yPattern::new(client.clone(), "utxos_up_to_4y_old".to_string()), - _5m: _10yPattern::new(client.clone(), "utxos_up_to_5m_old".to_string()), - _5y: _10yPattern::new(client.clone(), "utxos_up_to_5y_old".to_string()), - _6m: _10yPattern::new(client.clone(), "utxos_up_to_6m_old".to_string()), - _6y: _10yPattern::new(client.clone(), "utxos_up_to_6y_old".to_string()), - _7y: _10yPattern::new(client.clone(), "utxos_up_to_7y_old".to_string()), - _8y: _10yPattern::new(client.clone(), "utxos_up_to_8y_old".to_string()), + _10y: MetricsTree_Distribution_UtxoCohorts_MaxAge_10y::new(client.clone(), format!("{base_path}_10y")), + _12y: MetricsTree_Distribution_UtxoCohorts_MaxAge_12y::new(client.clone(), format!("{base_path}_12y")), + _15y: MetricsTree_Distribution_UtxoCohorts_MaxAge_15y::new(client.clone(), format!("{base_path}_15y")), + _1m: MetricsTree_Distribution_UtxoCohorts_MaxAge_1m::new(client.clone(), format!("{base_path}_1m")), + _1w: MetricsTree_Distribution_UtxoCohorts_MaxAge_1w::new(client.clone(), format!("{base_path}_1w")), + _1y: MetricsTree_Distribution_UtxoCohorts_MaxAge_1y::new(client.clone(), format!("{base_path}_1y")), + _2m: MetricsTree_Distribution_UtxoCohorts_MaxAge_2m::new(client.clone(), format!("{base_path}_2m")), + _2y: MetricsTree_Distribution_UtxoCohorts_MaxAge_2y::new(client.clone(), format!("{base_path}_2y")), + _3m: MetricsTree_Distribution_UtxoCohorts_MaxAge_3m::new(client.clone(), format!("{base_path}_3m")), + _3y: MetricsTree_Distribution_UtxoCohorts_MaxAge_3y::new(client.clone(), format!("{base_path}_3y")), + _4m: MetricsTree_Distribution_UtxoCohorts_MaxAge_4m::new(client.clone(), format!("{base_path}_4m")), + _4y: MetricsTree_Distribution_UtxoCohorts_MaxAge_4y::new(client.clone(), format!("{base_path}_4y")), + _5m: MetricsTree_Distribution_UtxoCohorts_MaxAge_5m::new(client.clone(), format!("{base_path}_5m")), + _5y: MetricsTree_Distribution_UtxoCohorts_MaxAge_5y::new(client.clone(), format!("{base_path}_5y")), + _6m: MetricsTree_Distribution_UtxoCohorts_MaxAge_6m::new(client.clone(), format!("{base_path}_6m")), + _6y: MetricsTree_Distribution_UtxoCohorts_MaxAge_6y::new(client.clone(), format!("{base_path}_6y")), + _7y: MetricsTree_Distribution_UtxoCohorts_MaxAge_7y::new(client.clone(), format!("{base_path}_7y")), + _8y: MetricsTree_Distribution_UtxoCohorts_MaxAge_8y::new(client.clone(), format!("{base_path}_8y")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_10y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_10y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_10y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_10y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_10y_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_10y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_10y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_10y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_10y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_12y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_12y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_12y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_12y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_12y_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_12y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_12y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_12y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_12y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_15y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_15y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_15y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_15y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_15y_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_15y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_15y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_15y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_15y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_1m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_1m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_1m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_1m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_1m_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_1m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_1m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_1m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_1m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_1w { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_1w { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_1w_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_1w_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_1w_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_1w_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_1w_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_1w_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_1w_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_1y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_1y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_1y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_1y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_1y_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_1y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_1y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_1y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_1y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_2m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_2m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_2m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_2m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_2m_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_2m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_2m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_2m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_2m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_2y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_2y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_2y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_2y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_2y_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_2y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_2y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_2y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_2y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_3m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_3m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_3m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_3m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_3m_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_3m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_3m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_3m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_3m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_3y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_3y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_3y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_3y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_3y_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_3y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_3y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_3y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_3y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_4m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_4m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_4m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_4m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_4m_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_4m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_4m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_4m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_4m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_4y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_4y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_4y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_4y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_4y_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_4y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_4y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_4y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_4y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_5m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_5m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_5m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_5m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_5m_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_5m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_5m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_5m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_5m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_5y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_5y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_5y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_5y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_5y_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_5y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_5y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_5y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_5y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_6m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_6m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_6m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_6m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_6m_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_6m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_6m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_6m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_6m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_6y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_6y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_6y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_6y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_6y_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_6y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_6y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_6y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_6y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_7y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_7y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_7y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_7y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_7y_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_7y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_7y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_7y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_7y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge_8y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern4, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MaxAge_8y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_up_to_8y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_up_to_8y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_up_to_8y_old_utxo_count".to_string()), + realized: RealizedPattern4::new(client.clone(), "utxos_up_to_8y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_up_to_8y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_up_to_8y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_up_to_8y_old".to_string()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_MinAge { - pub _10y: _100btcPattern, - pub _12y: _100btcPattern, - pub _1d: _100btcPattern, - pub _1m: _100btcPattern, - pub _1w: _100btcPattern, - pub _1y: _100btcPattern, - pub _2m: _100btcPattern, - pub _2y: _100btcPattern, - pub _3m: _100btcPattern, - pub _3y: _100btcPattern, - pub _4m: _100btcPattern, - pub _4y: _100btcPattern, - pub _5m: _100btcPattern, - pub _5y: _100btcPattern, - pub _6m: _100btcPattern, - pub _6y: _100btcPattern, - pub _7y: _100btcPattern, - pub _8y: _100btcPattern, + pub _10y: MetricsTree_Distribution_UtxoCohorts_MinAge_10y, + pub _12y: MetricsTree_Distribution_UtxoCohorts_MinAge_12y, + pub _1d: MetricsTree_Distribution_UtxoCohorts_MinAge_1d, + pub _1m: MetricsTree_Distribution_UtxoCohorts_MinAge_1m, + pub _1w: MetricsTree_Distribution_UtxoCohorts_MinAge_1w, + pub _1y: MetricsTree_Distribution_UtxoCohorts_MinAge_1y, + pub _2m: MetricsTree_Distribution_UtxoCohorts_MinAge_2m, + pub _2y: MetricsTree_Distribution_UtxoCohorts_MinAge_2y, + pub _3m: MetricsTree_Distribution_UtxoCohorts_MinAge_3m, + pub _3y: MetricsTree_Distribution_UtxoCohorts_MinAge_3y, + pub _4m: MetricsTree_Distribution_UtxoCohorts_MinAge_4m, + pub _4y: MetricsTree_Distribution_UtxoCohorts_MinAge_4y, + pub _5m: MetricsTree_Distribution_UtxoCohorts_MinAge_5m, + pub _5y: MetricsTree_Distribution_UtxoCohorts_MinAge_5y, + pub _6m: MetricsTree_Distribution_UtxoCohorts_MinAge_6m, + pub _6y: MetricsTree_Distribution_UtxoCohorts_MinAge_6y, + pub _7y: MetricsTree_Distribution_UtxoCohorts_MinAge_7y, + pub _8y: MetricsTree_Distribution_UtxoCohorts_MinAge_8y, } impl MetricsTree_Distribution_UtxoCohorts_MinAge { pub fn new(client: Arc, base_path: String) -> Self { Self { - _10y: _100btcPattern::new(client.clone(), "utxos_at_least_10y_old".to_string()), - _12y: _100btcPattern::new(client.clone(), "utxos_at_least_12y_old".to_string()), - _1d: _100btcPattern::new(client.clone(), "utxos_at_least_1d_old".to_string()), - _1m: _100btcPattern::new(client.clone(), "utxos_at_least_1m_old".to_string()), - _1w: _100btcPattern::new(client.clone(), "utxos_at_least_1w_old".to_string()), - _1y: _100btcPattern::new(client.clone(), "utxos_at_least_1y_old".to_string()), - _2m: _100btcPattern::new(client.clone(), "utxos_at_least_2m_old".to_string()), - _2y: _100btcPattern::new(client.clone(), "utxos_at_least_2y_old".to_string()), - _3m: _100btcPattern::new(client.clone(), "utxos_at_least_3m_old".to_string()), - _3y: _100btcPattern::new(client.clone(), "utxos_at_least_3y_old".to_string()), - _4m: _100btcPattern::new(client.clone(), "utxos_at_least_4m_old".to_string()), - _4y: _100btcPattern::new(client.clone(), "utxos_at_least_4y_old".to_string()), - _5m: _100btcPattern::new(client.clone(), "utxos_at_least_5m_old".to_string()), - _5y: _100btcPattern::new(client.clone(), "utxos_at_least_5y_old".to_string()), - _6m: _100btcPattern::new(client.clone(), "utxos_at_least_6m_old".to_string()), - _6y: _100btcPattern::new(client.clone(), "utxos_at_least_6y_old".to_string()), - _7y: _100btcPattern::new(client.clone(), "utxos_at_least_7y_old".to_string()), - _8y: _100btcPattern::new(client.clone(), "utxos_at_least_8y_old".to_string()), + _10y: MetricsTree_Distribution_UtxoCohorts_MinAge_10y::new(client.clone(), format!("{base_path}_10y")), + _12y: MetricsTree_Distribution_UtxoCohorts_MinAge_12y::new(client.clone(), format!("{base_path}_12y")), + _1d: MetricsTree_Distribution_UtxoCohorts_MinAge_1d::new(client.clone(), format!("{base_path}_1d")), + _1m: MetricsTree_Distribution_UtxoCohorts_MinAge_1m::new(client.clone(), format!("{base_path}_1m")), + _1w: MetricsTree_Distribution_UtxoCohorts_MinAge_1w::new(client.clone(), format!("{base_path}_1w")), + _1y: MetricsTree_Distribution_UtxoCohorts_MinAge_1y::new(client.clone(), format!("{base_path}_1y")), + _2m: MetricsTree_Distribution_UtxoCohorts_MinAge_2m::new(client.clone(), format!("{base_path}_2m")), + _2y: MetricsTree_Distribution_UtxoCohorts_MinAge_2y::new(client.clone(), format!("{base_path}_2y")), + _3m: MetricsTree_Distribution_UtxoCohorts_MinAge_3m::new(client.clone(), format!("{base_path}_3m")), + _3y: MetricsTree_Distribution_UtxoCohorts_MinAge_3y::new(client.clone(), format!("{base_path}_3y")), + _4m: MetricsTree_Distribution_UtxoCohorts_MinAge_4m::new(client.clone(), format!("{base_path}_4m")), + _4y: MetricsTree_Distribution_UtxoCohorts_MinAge_4y::new(client.clone(), format!("{base_path}_4y")), + _5m: MetricsTree_Distribution_UtxoCohorts_MinAge_5m::new(client.clone(), format!("{base_path}_5m")), + _5y: MetricsTree_Distribution_UtxoCohorts_MinAge_5y::new(client.clone(), format!("{base_path}_5y")), + _6m: MetricsTree_Distribution_UtxoCohorts_MinAge_6m::new(client.clone(), format!("{base_path}_6m")), + _6y: MetricsTree_Distribution_UtxoCohorts_MinAge_6y::new(client.clone(), format!("{base_path}_6y")), + _7y: MetricsTree_Distribution_UtxoCohorts_MinAge_7y::new(client.clone(), format!("{base_path}_7y")), + _8y: MetricsTree_Distribution_UtxoCohorts_MinAge_8y::new(client.clone(), format!("{base_path}_8y")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_10y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_10y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_10y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_10y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_10y_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_10y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_10y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_10y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_10y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_12y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_12y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_12y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_12y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_12y_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_12y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_12y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_12y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_12y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_1d { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_1d { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_1d_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_1d_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_1d_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_1d_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_1d_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_1d_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_1d_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_1m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_1m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_1m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_1m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_1m_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_1m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_1m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_1m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_1m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_1w { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_1w { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_1w_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_1w_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_1w_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_1w_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_1w_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_1w_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_1w_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_1y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_1y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_1y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_1y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_1y_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_1y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_1y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_1y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_1y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_2m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_2m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_2m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_2m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_2m_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_2m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_2m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_2m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_2m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_2y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_2y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_2y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_2y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_2y_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_2y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_2y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_2y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_2y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_3m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_3m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_3m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_3m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_3m_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_3m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_3m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_3m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_3m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_3y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_3y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_3y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_3y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_3y_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_3y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_3y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_3y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_3y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_4m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_4m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_4m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_4m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_4m_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_4m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_4m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_4m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_4m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_4y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_4y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_4y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_4y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_4y_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_4y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_4y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_4y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_4y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_5m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_5m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_5m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_5m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_5m_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_5m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_5m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_5m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_5m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_5y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_5y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_5y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_5y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_5y_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_5y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_5y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_5y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_5y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_6m { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_6m { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_6m_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_6m_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_6m_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_6m_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_6m_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_6m_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_6m_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_6y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_6y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_6y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_6y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_6y_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_6y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_6y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_6y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_6y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_7y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_7y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_7y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_7y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_7y_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_7y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_7y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_7y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_7y_old".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_MinAge_8y { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_MinAge_8y { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "utxos_at_least_8y_old".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "utxos_at_least_8y_old".to_string()), + outputs: OutputsPattern::new(client.clone(), "utxos_at_least_8y_old_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "utxos_at_least_8y_old".to_string()), + relative: RelativePattern::new(client.clone(), "utxos_at_least_8y_old".to_string()), + supply: SupplyPattern2::new(client.clone(), "utxos_at_least_8y_old_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "utxos_at_least_8y_old".to_string()), } } } @@ -5720,14 +9231,8 @@ pub struct MetricsTree_Distribution_UtxoCohorts_Term { impl MetricsTree_Distribution_UtxoCohorts_Term { pub fn new(client: Arc, base_path: String) -> Self { Self { - long: MetricsTree_Distribution_UtxoCohorts_Term_Long::new( - client.clone(), - format!("{base_path}_long"), - ), - short: MetricsTree_Distribution_UtxoCohorts_Term_Short::new( - client.clone(), - format!("{base_path}_short"), - ), + long: MetricsTree_Distribution_UtxoCohorts_Term_Long::new(client.clone(), format!("{base_path}_long")), + short: MetricsTree_Distribution_UtxoCohorts_Term_Short::new(client.clone(), format!("{base_path}_short")), } } } @@ -5735,7 +9240,7 @@ impl MetricsTree_Distribution_UtxoCohorts_Term { /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_Term_Long { pub activity: ActivityPattern2, - pub cost_basis: CostBasisPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis, pub outputs: OutputsPattern, pub realized: RealizedPattern2, pub relative: RelativePattern5, @@ -5747,7 +9252,7 @@ impl MetricsTree_Distribution_UtxoCohorts_Term_Long { pub fn new(client: Arc, base_path: String) -> Self { Self { activity: ActivityPattern2::new(client.clone(), "lth".to_string()), - cost_basis: CostBasisPattern2::new(client.clone(), "lth".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), outputs: OutputsPattern::new(client.clone(), "lth_utxo_count".to_string()), realized: RealizedPattern2::new(client.clone(), "lth".to_string()), relative: RelativePattern5::new(client.clone(), "lth".to_string()), @@ -5757,10 +9262,27 @@ impl MetricsTree_Distribution_UtxoCohorts_Term_Long { } } +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "lth_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "lth_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "lth_cost_basis".to_string()), + } + } +} + /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_Term_Short { pub activity: ActivityPattern2, - pub cost_basis: CostBasisPattern2, + pub cost_basis: MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis, pub outputs: OutputsPattern, pub realized: RealizedPattern3, pub relative: RelativePattern5, @@ -5772,7 +9294,7 @@ impl MetricsTree_Distribution_UtxoCohorts_Term_Short { pub fn new(client: Arc, base_path: String) -> Self { Self { activity: ActivityPattern2::new(client.clone(), "sth".to_string()), - cost_basis: CostBasisPattern2::new(client.clone(), "sth".to_string()), + cost_basis: MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), outputs: OutputsPattern::new(client.clone(), "sth_utxo_count".to_string()), realized: RealizedPattern3::new(client.clone(), "sth".to_string()), relative: RelativePattern5::new(client.clone(), "sth".to_string()), @@ -5782,82 +9304,824 @@ impl MetricsTree_Distribution_UtxoCohorts_Term_Short { } } +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), "sth_max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "sth_min_cost_basis".to_string()), + percentiles: PercentilesPattern::new(client.clone(), "sth_cost_basis".to_string()), + } + } +} + /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_Type { - pub empty: _0satsPattern2, - pub p2a: _0satsPattern2, - pub p2ms: _0satsPattern2, - pub p2pk33: _0satsPattern2, - pub p2pk65: _0satsPattern2, - pub p2pkh: _0satsPattern2, - pub p2sh: _0satsPattern2, - pub p2tr: _0satsPattern2, - pub p2wpkh: _0satsPattern2, - pub p2wsh: _0satsPattern2, - pub unknown: _0satsPattern2, + pub empty: MetricsTree_Distribution_UtxoCohorts_Type_Empty, + pub p2a: MetricsTree_Distribution_UtxoCohorts_Type_P2a, + pub p2ms: MetricsTree_Distribution_UtxoCohorts_Type_P2ms, + pub p2pk33: MetricsTree_Distribution_UtxoCohorts_Type_P2pk33, + pub p2pk65: MetricsTree_Distribution_UtxoCohorts_Type_P2pk65, + pub p2pkh: MetricsTree_Distribution_UtxoCohorts_Type_P2pkh, + pub p2sh: MetricsTree_Distribution_UtxoCohorts_Type_P2sh, + pub p2tr: MetricsTree_Distribution_UtxoCohorts_Type_P2tr, + pub p2wpkh: MetricsTree_Distribution_UtxoCohorts_Type_P2wpkh, + pub p2wsh: MetricsTree_Distribution_UtxoCohorts_Type_P2wsh, + pub unknown: MetricsTree_Distribution_UtxoCohorts_Type_Unknown, } impl MetricsTree_Distribution_UtxoCohorts_Type { pub fn new(client: Arc, base_path: String) -> Self { Self { - empty: _0satsPattern2::new(client.clone(), "empty_outputs".to_string()), - p2a: _0satsPattern2::new(client.clone(), "p2a".to_string()), - p2ms: _0satsPattern2::new(client.clone(), "p2ms".to_string()), - p2pk33: _0satsPattern2::new(client.clone(), "p2pk33".to_string()), - p2pk65: _0satsPattern2::new(client.clone(), "p2pk65".to_string()), - p2pkh: _0satsPattern2::new(client.clone(), "p2pkh".to_string()), - p2sh: _0satsPattern2::new(client.clone(), "p2sh".to_string()), - p2tr: _0satsPattern2::new(client.clone(), "p2tr".to_string()), - p2wpkh: _0satsPattern2::new(client.clone(), "p2wpkh".to_string()), - p2wsh: _0satsPattern2::new(client.clone(), "p2wsh".to_string()), - unknown: _0satsPattern2::new(client.clone(), "unknown_outputs".to_string()), + empty: MetricsTree_Distribution_UtxoCohorts_Type_Empty::new(client.clone(), format!("{base_path}_empty")), + p2a: MetricsTree_Distribution_UtxoCohorts_Type_P2a::new(client.clone(), format!("{base_path}_p2a")), + p2ms: MetricsTree_Distribution_UtxoCohorts_Type_P2ms::new(client.clone(), format!("{base_path}_p2ms")), + p2pk33: MetricsTree_Distribution_UtxoCohorts_Type_P2pk33::new(client.clone(), format!("{base_path}_p2pk33")), + p2pk65: MetricsTree_Distribution_UtxoCohorts_Type_P2pk65::new(client.clone(), format!("{base_path}_p2pk65")), + p2pkh: MetricsTree_Distribution_UtxoCohorts_Type_P2pkh::new(client.clone(), format!("{base_path}_p2pkh")), + p2sh: MetricsTree_Distribution_UtxoCohorts_Type_P2sh::new(client.clone(), format!("{base_path}_p2sh")), + p2tr: MetricsTree_Distribution_UtxoCohorts_Type_P2tr::new(client.clone(), format!("{base_path}_p2tr")), + p2wpkh: MetricsTree_Distribution_UtxoCohorts_Type_P2wpkh::new(client.clone(), format!("{base_path}_p2wpkh")), + p2wsh: MetricsTree_Distribution_UtxoCohorts_Type_P2wsh::new(client.clone(), format!("{base_path}_p2wsh")), + unknown: MetricsTree_Distribution_UtxoCohorts_Type_Unknown::new(client.clone(), format!("{base_path}_unknown")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Type_Empty { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Type_Empty { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "empty_outputs".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "empty_outputs".to_string()), + outputs: OutputsPattern::new(client.clone(), "empty_outputs_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "empty_outputs".to_string()), + relative: RelativePattern4::new(client.clone(), "empty_outputs_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "empty_outputs_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "empty_outputs".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Type_P2a { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Type_P2a { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "p2a".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "p2a".to_string()), + outputs: OutputsPattern::new(client.clone(), "p2a_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "p2a".to_string()), + relative: RelativePattern4::new(client.clone(), "p2a_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "p2a_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "p2a".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Type_P2ms { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Type_P2ms { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "p2ms".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "p2ms".to_string()), + outputs: OutputsPattern::new(client.clone(), "p2ms_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "p2ms".to_string()), + relative: RelativePattern4::new(client.clone(), "p2ms_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "p2ms_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "p2ms".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Type_P2pk33 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Type_P2pk33 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "p2pk33".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "p2pk33".to_string()), + outputs: OutputsPattern::new(client.clone(), "p2pk33_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "p2pk33".to_string()), + relative: RelativePattern4::new(client.clone(), "p2pk33_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "p2pk33_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "p2pk33".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Type_P2pk65 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Type_P2pk65 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "p2pk65".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "p2pk65".to_string()), + outputs: OutputsPattern::new(client.clone(), "p2pk65_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "p2pk65".to_string()), + relative: RelativePattern4::new(client.clone(), "p2pk65_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "p2pk65_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "p2pk65".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Type_P2pkh { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Type_P2pkh { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "p2pkh".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "p2pkh".to_string()), + outputs: OutputsPattern::new(client.clone(), "p2pkh_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "p2pkh".to_string()), + relative: RelativePattern4::new(client.clone(), "p2pkh_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "p2pkh_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "p2pkh".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Type_P2sh { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Type_P2sh { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "p2sh".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "p2sh".to_string()), + outputs: OutputsPattern::new(client.clone(), "p2sh_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "p2sh".to_string()), + relative: RelativePattern4::new(client.clone(), "p2sh_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "p2sh_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "p2sh".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Type_P2tr { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Type_P2tr { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "p2tr".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "p2tr".to_string()), + outputs: OutputsPattern::new(client.clone(), "p2tr_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "p2tr".to_string()), + relative: RelativePattern4::new(client.clone(), "p2tr_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "p2tr_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "p2tr".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Type_P2wpkh { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Type_P2wpkh { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "p2wpkh".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "p2wpkh".to_string()), + outputs: OutputsPattern::new(client.clone(), "p2wpkh_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "p2wpkh".to_string()), + relative: RelativePattern4::new(client.clone(), "p2wpkh_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "p2wpkh_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "p2wpkh".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Type_P2wsh { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Type_P2wsh { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "p2wsh".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "p2wsh".to_string()), + outputs: OutputsPattern::new(client.clone(), "p2wsh_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "p2wsh".to_string()), + relative: RelativePattern4::new(client.clone(), "p2wsh_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "p2wsh_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "p2wsh".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Type_Unknown { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Type_Unknown { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "unknown_outputs".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "unknown_outputs".to_string()), + outputs: OutputsPattern::new(client.clone(), "unknown_outputs_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "unknown_outputs".to_string()), + relative: RelativePattern4::new(client.clone(), "unknown_outputs_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "unknown_outputs_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "unknown_outputs".to_string()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_Year { - pub _2009: _0satsPattern2, - pub _2010: _0satsPattern2, - pub _2011: _0satsPattern2, - pub _2012: _0satsPattern2, - pub _2013: _0satsPattern2, - pub _2014: _0satsPattern2, - pub _2015: _0satsPattern2, - pub _2016: _0satsPattern2, - pub _2017: _0satsPattern2, - pub _2018: _0satsPattern2, - pub _2019: _0satsPattern2, - pub _2020: _0satsPattern2, - pub _2021: _0satsPattern2, - pub _2022: _0satsPattern2, - pub _2023: _0satsPattern2, - pub _2024: _0satsPattern2, - pub _2025: _0satsPattern2, - pub _2026: _0satsPattern2, + pub _2009: MetricsTree_Distribution_UtxoCohorts_Year_2009, + pub _2010: MetricsTree_Distribution_UtxoCohorts_Year_2010, + pub _2011: MetricsTree_Distribution_UtxoCohorts_Year_2011, + pub _2012: MetricsTree_Distribution_UtxoCohorts_Year_2012, + pub _2013: MetricsTree_Distribution_UtxoCohorts_Year_2013, + pub _2014: MetricsTree_Distribution_UtxoCohorts_Year_2014, + pub _2015: MetricsTree_Distribution_UtxoCohorts_Year_2015, + pub _2016: MetricsTree_Distribution_UtxoCohorts_Year_2016, + pub _2017: MetricsTree_Distribution_UtxoCohorts_Year_2017, + pub _2018: MetricsTree_Distribution_UtxoCohorts_Year_2018, + pub _2019: MetricsTree_Distribution_UtxoCohorts_Year_2019, + pub _2020: MetricsTree_Distribution_UtxoCohorts_Year_2020, + pub _2021: MetricsTree_Distribution_UtxoCohorts_Year_2021, + pub _2022: MetricsTree_Distribution_UtxoCohorts_Year_2022, + pub _2023: MetricsTree_Distribution_UtxoCohorts_Year_2023, + pub _2024: MetricsTree_Distribution_UtxoCohorts_Year_2024, + pub _2025: MetricsTree_Distribution_UtxoCohorts_Year_2025, + pub _2026: MetricsTree_Distribution_UtxoCohorts_Year_2026, } impl MetricsTree_Distribution_UtxoCohorts_Year { pub fn new(client: Arc, base_path: String) -> Self { Self { - _2009: _0satsPattern2::new(client.clone(), "year_2009".to_string()), - _2010: _0satsPattern2::new(client.clone(), "year_2010".to_string()), - _2011: _0satsPattern2::new(client.clone(), "year_2011".to_string()), - _2012: _0satsPattern2::new(client.clone(), "year_2012".to_string()), - _2013: _0satsPattern2::new(client.clone(), "year_2013".to_string()), - _2014: _0satsPattern2::new(client.clone(), "year_2014".to_string()), - _2015: _0satsPattern2::new(client.clone(), "year_2015".to_string()), - _2016: _0satsPattern2::new(client.clone(), "year_2016".to_string()), - _2017: _0satsPattern2::new(client.clone(), "year_2017".to_string()), - _2018: _0satsPattern2::new(client.clone(), "year_2018".to_string()), - _2019: _0satsPattern2::new(client.clone(), "year_2019".to_string()), - _2020: _0satsPattern2::new(client.clone(), "year_2020".to_string()), - _2021: _0satsPattern2::new(client.clone(), "year_2021".to_string()), - _2022: _0satsPattern2::new(client.clone(), "year_2022".to_string()), - _2023: _0satsPattern2::new(client.clone(), "year_2023".to_string()), - _2024: _0satsPattern2::new(client.clone(), "year_2024".to_string()), - _2025: _0satsPattern2::new(client.clone(), "year_2025".to_string()), - _2026: _0satsPattern2::new(client.clone(), "year_2026".to_string()), + _2009: MetricsTree_Distribution_UtxoCohorts_Year_2009::new(client.clone(), format!("{base_path}_2009")), + _2010: MetricsTree_Distribution_UtxoCohorts_Year_2010::new(client.clone(), format!("{base_path}_2010")), + _2011: MetricsTree_Distribution_UtxoCohorts_Year_2011::new(client.clone(), format!("{base_path}_2011")), + _2012: MetricsTree_Distribution_UtxoCohorts_Year_2012::new(client.clone(), format!("{base_path}_2012")), + _2013: MetricsTree_Distribution_UtxoCohorts_Year_2013::new(client.clone(), format!("{base_path}_2013")), + _2014: MetricsTree_Distribution_UtxoCohorts_Year_2014::new(client.clone(), format!("{base_path}_2014")), + _2015: MetricsTree_Distribution_UtxoCohorts_Year_2015::new(client.clone(), format!("{base_path}_2015")), + _2016: MetricsTree_Distribution_UtxoCohorts_Year_2016::new(client.clone(), format!("{base_path}_2016")), + _2017: MetricsTree_Distribution_UtxoCohorts_Year_2017::new(client.clone(), format!("{base_path}_2017")), + _2018: MetricsTree_Distribution_UtxoCohorts_Year_2018::new(client.clone(), format!("{base_path}_2018")), + _2019: MetricsTree_Distribution_UtxoCohorts_Year_2019::new(client.clone(), format!("{base_path}_2019")), + _2020: MetricsTree_Distribution_UtxoCohorts_Year_2020::new(client.clone(), format!("{base_path}_2020")), + _2021: MetricsTree_Distribution_UtxoCohorts_Year_2021::new(client.clone(), format!("{base_path}_2021")), + _2022: MetricsTree_Distribution_UtxoCohorts_Year_2022::new(client.clone(), format!("{base_path}_2022")), + _2023: MetricsTree_Distribution_UtxoCohorts_Year_2023::new(client.clone(), format!("{base_path}_2023")), + _2024: MetricsTree_Distribution_UtxoCohorts_Year_2024::new(client.clone(), format!("{base_path}_2024")), + _2025: MetricsTree_Distribution_UtxoCohorts_Year_2025::new(client.clone(), format!("{base_path}_2025")), + _2026: MetricsTree_Distribution_UtxoCohorts_Year_2026::new(client.clone(), format!("{base_path}_2026")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2009 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2009 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2009".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2009".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2009_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2009".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2009_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2009_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2009".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2010 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2010 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2010".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2010".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2010_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2010".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2010_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2010_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2010".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2011 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2011 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2011".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2011".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2011_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2011".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2011_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2011_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2011".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2012 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2012 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2012".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2012".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2012_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2012".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2012_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2012_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2012".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2013 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2013 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2013".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2013".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2013_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2013".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2013_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2013_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2013".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2014 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2014 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2014".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2014".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2014_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2014".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2014_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2014_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2014".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2015 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2015 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2015".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2015".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2015_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2015".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2015_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2015_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2015".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2016 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2016 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2016".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2016".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2016_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2016".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2016_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2016_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2016".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2017 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2017 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2017".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2017".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2017_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2017".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2017_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2017_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2017".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2018 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2018 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2018".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2018".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2018_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2018".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2018_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2018_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2018".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2019 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2019 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2019".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2019".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2019_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2019".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2019_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2019_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2019".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2020 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2020 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2020".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2020".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2020_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2020".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2020_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2020_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2020".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2021 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2021 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2021".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2021".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2021_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2021".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2021_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2021_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2021".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2022 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2022 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2022".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2022".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2022_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2022".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2022_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2022_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2022".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2023 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2023 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2023".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2023".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2023_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2023".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2023_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2023_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2023".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2024 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2024 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2024".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2024".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2024_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2024".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2024_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2024_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2024".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2025 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2025 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2025".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2025".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2025_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2025".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2025_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2025_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2025".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Distribution_UtxoCohorts_Year_2026 { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern4, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl MetricsTree_Distribution_UtxoCohorts_Year_2026 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), "year_2026".to_string()), + cost_basis: CostBasisPattern::new(client.clone(), "year_2026".to_string()), + outputs: OutputsPattern::new(client.clone(), "year_2026_utxo_count".to_string()), + realized: RealizedPattern::new(client.clone(), "year_2026".to_string()), + relative: RelativePattern4::new(client.clone(), "year_2026_supply_in".to_string()), + supply: SupplyPattern2::new(client.clone(), "year_2026_supply".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "year_2026".to_string()), } } } @@ -5883,59 +10147,20 @@ pub struct MetricsTree_Indexes { impl MetricsTree_Indexes { pub fn new(client: Arc, base_path: String) -> Self { Self { - address: MetricsTree_Indexes_Address::new( - client.clone(), - format!("{base_path}_address"), - ), - dateindex: MetricsTree_Indexes_Dateindex::new( - client.clone(), - format!("{base_path}_dateindex"), - ), - decadeindex: MetricsTree_Indexes_Decadeindex::new( - client.clone(), - format!("{base_path}_decadeindex"), - ), - difficultyepoch: MetricsTree_Indexes_Difficultyepoch::new( - client.clone(), - format!("{base_path}_difficultyepoch"), - ), - halvingepoch: MetricsTree_Indexes_Halvingepoch::new( - client.clone(), - format!("{base_path}_halvingepoch"), - ), + address: MetricsTree_Indexes_Address::new(client.clone(), format!("{base_path}_address")), + dateindex: MetricsTree_Indexes_Dateindex::new(client.clone(), format!("{base_path}_dateindex")), + decadeindex: MetricsTree_Indexes_Decadeindex::new(client.clone(), format!("{base_path}_decadeindex")), + difficultyepoch: MetricsTree_Indexes_Difficultyepoch::new(client.clone(), format!("{base_path}_difficultyepoch")), + halvingepoch: MetricsTree_Indexes_Halvingepoch::new(client.clone(), format!("{base_path}_halvingepoch")), height: MetricsTree_Indexes_Height::new(client.clone(), format!("{base_path}_height")), - monthindex: MetricsTree_Indexes_Monthindex::new( - client.clone(), - format!("{base_path}_monthindex"), - ), - quarterindex: MetricsTree_Indexes_Quarterindex::new( - client.clone(), - format!("{base_path}_quarterindex"), - ), - semesterindex: MetricsTree_Indexes_Semesterindex::new( - client.clone(), - format!("{base_path}_semesterindex"), - ), - txindex: MetricsTree_Indexes_Txindex::new( - client.clone(), - format!("{base_path}_txindex"), - ), - txinindex: MetricsTree_Indexes_Txinindex::new( - client.clone(), - format!("{base_path}_txinindex"), - ), - txoutindex: MetricsTree_Indexes_Txoutindex::new( - client.clone(), - format!("{base_path}_txoutindex"), - ), - weekindex: MetricsTree_Indexes_Weekindex::new( - client.clone(), - format!("{base_path}_weekindex"), - ), - yearindex: MetricsTree_Indexes_Yearindex::new( - client.clone(), - format!("{base_path}_yearindex"), - ), + monthindex: MetricsTree_Indexes_Monthindex::new(client.clone(), format!("{base_path}_monthindex")), + quarterindex: MetricsTree_Indexes_Quarterindex::new(client.clone(), format!("{base_path}_quarterindex")), + semesterindex: MetricsTree_Indexes_Semesterindex::new(client.clone(), format!("{base_path}_semesterindex")), + txindex: MetricsTree_Indexes_Txindex::new(client.clone(), format!("{base_path}_txindex")), + txinindex: MetricsTree_Indexes_Txinindex::new(client.clone(), format!("{base_path}_txinindex")), + txoutindex: MetricsTree_Indexes_Txoutindex::new(client.clone(), format!("{base_path}_txoutindex")), + weekindex: MetricsTree_Indexes_Weekindex::new(client.clone(), format!("{base_path}_weekindex")), + yearindex: MetricsTree_Indexes_Yearindex::new(client.clone(), format!("{base_path}_yearindex")), } } } @@ -5959,51 +10184,18 @@ pub struct MetricsTree_Indexes_Address { impl MetricsTree_Indexes_Address { pub fn new(client: Arc, base_path: String) -> Self { Self { - empty: MetricsTree_Indexes_Address_Empty::new( - client.clone(), - format!("{base_path}_empty"), - ), - opreturn: MetricsTree_Indexes_Address_Opreturn::new( - client.clone(), - format!("{base_path}_opreturn"), - ), + empty: MetricsTree_Indexes_Address_Empty::new(client.clone(), format!("{base_path}_empty")), + opreturn: MetricsTree_Indexes_Address_Opreturn::new(client.clone(), format!("{base_path}_opreturn")), p2a: MetricsTree_Indexes_Address_P2a::new(client.clone(), format!("{base_path}_p2a")), - p2ms: MetricsTree_Indexes_Address_P2ms::new( - client.clone(), - format!("{base_path}_p2ms"), - ), - p2pk33: MetricsTree_Indexes_Address_P2pk33::new( - client.clone(), - format!("{base_path}_p2pk33"), - ), - p2pk65: MetricsTree_Indexes_Address_P2pk65::new( - client.clone(), - format!("{base_path}_p2pk65"), - ), - p2pkh: MetricsTree_Indexes_Address_P2pkh::new( - client.clone(), - format!("{base_path}_p2pkh"), - ), - p2sh: MetricsTree_Indexes_Address_P2sh::new( - client.clone(), - format!("{base_path}_p2sh"), - ), - p2tr: MetricsTree_Indexes_Address_P2tr::new( - client.clone(), - format!("{base_path}_p2tr"), - ), - p2wpkh: MetricsTree_Indexes_Address_P2wpkh::new( - client.clone(), - format!("{base_path}_p2wpkh"), - ), - p2wsh: MetricsTree_Indexes_Address_P2wsh::new( - client.clone(), - format!("{base_path}_p2wsh"), - ), - unknown: MetricsTree_Indexes_Address_Unknown::new( - client.clone(), - format!("{base_path}_unknown"), - ), + p2ms: MetricsTree_Indexes_Address_P2ms::new(client.clone(), format!("{base_path}_p2ms")), + p2pk33: MetricsTree_Indexes_Address_P2pk33::new(client.clone(), format!("{base_path}_p2pk33")), + p2pk65: MetricsTree_Indexes_Address_P2pk65::new(client.clone(), format!("{base_path}_p2pk65")), + p2pkh: MetricsTree_Indexes_Address_P2pkh::new(client.clone(), format!("{base_path}_p2pkh")), + p2sh: MetricsTree_Indexes_Address_P2sh::new(client.clone(), format!("{base_path}_p2sh")), + p2tr: MetricsTree_Indexes_Address_P2tr::new(client.clone(), format!("{base_path}_p2tr")), + p2wpkh: MetricsTree_Indexes_Address_P2wpkh::new(client.clone(), format!("{base_path}_p2wpkh")), + p2wsh: MetricsTree_Indexes_Address_P2wsh::new(client.clone(), format!("{base_path}_p2wsh")), + unknown: MetricsTree_Indexes_Address_Unknown::new(client.clone(), format!("{base_path}_unknown")), } } } @@ -6462,24 +10654,12 @@ impl MetricsTree_Market { Self { ath: MetricsTree_Market_Ath::new(client.clone(), format!("{base_path}_ath")), dca: MetricsTree_Market_Dca::new(client.clone(), format!("{base_path}_dca")), - indicators: MetricsTree_Market_Indicators::new( - client.clone(), - format!("{base_path}_indicators"), - ), + indicators: MetricsTree_Market_Indicators::new(client.clone(), format!("{base_path}_indicators")), lookback: LookbackPattern::new(client.clone(), "price".to_string()), - moving_average: MetricsTree_Market_MovingAverage::new( - client.clone(), - format!("{base_path}_moving_average"), - ), + moving_average: MetricsTree_Market_MovingAverage::new(client.clone(), format!("{base_path}_moving_average")), range: MetricsTree_Market_Range::new(client.clone(), format!("{base_path}_range")), - returns: MetricsTree_Market_Returns::new( - client.clone(), - format!("{base_path}_returns"), - ), - volatility: MetricsTree_Market_Volatility::new( - client.clone(), - format!("{base_path}_volatility"), - ), + returns: MetricsTree_Market_Returns::new(client.clone(), format!("{base_path}_returns")), + volatility: MetricsTree_Market_Volatility::new(client.clone(), format!("{base_path}_volatility")), } } } @@ -6497,31 +10677,19 @@ pub struct MetricsTree_Market_Ath { impl MetricsTree_Market_Ath { pub fn new(client: Arc, base_path: String) -> Self { Self { - days_since_price_ath: MetricPattern4::new( - client.clone(), - "days_since_price_ath".to_string(), - ), - max_days_between_price_aths: MetricPattern4::new( - client.clone(), - "max_days_between_price_aths".to_string(), - ), - max_years_between_price_aths: MetricPattern4::new( - client.clone(), - "max_years_between_price_aths".to_string(), - ), + days_since_price_ath: MetricPattern4::new(client.clone(), "days_since_price_ath".to_string()), + max_days_between_price_aths: MetricPattern4::new(client.clone(), "max_days_between_price_aths".to_string()), + max_years_between_price_aths: MetricPattern4::new(client.clone(), "max_years_between_price_aths".to_string()), price_ath: MetricPattern1::new(client.clone(), "price_ath".to_string()), price_drawdown: MetricPattern3::new(client.clone(), "price_drawdown".to_string()), - years_since_price_ath: MetricPattern4::new( - client.clone(), - "years_since_price_ath".to_string(), - ), + years_since_price_ath: MetricPattern4::new(client.clone(), "years_since_price_ath".to_string()), } } } /// Metrics tree node. pub struct MetricsTree_Market_Dca { - pub class_average_price: ClassAveragePricePattern, + pub class_average_price: MetricsTree_Market_Dca_ClassAveragePrice, pub class_returns: ClassAveragePricePattern, pub class_stack: MetricsTree_Market_Dca_ClassStack, pub period_average_price: PeriodAveragePricePattern, @@ -6534,33 +10702,51 @@ pub struct MetricsTree_Market_Dca { impl MetricsTree_Market_Dca { pub fn new(client: Arc, base_path: String) -> Self { Self { - class_average_price: ClassAveragePricePattern::new( - client.clone(), - "dca_class".to_string(), - ), + class_average_price: MetricsTree_Market_Dca_ClassAveragePrice::new(client.clone(), format!("{base_path}_class_average_price")), class_returns: ClassAveragePricePattern::new(client.clone(), "dca_class".to_string()), - class_stack: MetricsTree_Market_Dca_ClassStack::new( - client.clone(), - format!("{base_path}_class_stack"), - ), - period_average_price: PeriodAveragePricePattern::new( - client.clone(), - "dca_average_price".to_string(), - ), + class_stack: MetricsTree_Market_Dca_ClassStack::new(client.clone(), format!("{base_path}_class_stack")), + period_average_price: PeriodAveragePricePattern::new(client.clone(), "dca_average_price".to_string()), period_cagr: PeriodCagrPattern::new(client.clone(), "dca_cagr".to_string()), - period_lump_sum_stack: PeriodLumpSumStackPattern::new( - client.clone(), - "lump_sum_stack".to_string(), - ), - period_returns: PeriodAveragePricePattern::new( - client.clone(), - "dca_returns".to_string(), - ), + period_lump_sum_stack: PeriodLumpSumStackPattern::new(client.clone(), "lump_sum_stack".to_string()), + period_returns: PeriodAveragePricePattern::new(client.clone(), "dca_returns".to_string()), period_stack: PeriodLumpSumStackPattern::new(client.clone(), "dca_stack".to_string()), } } } +/// Metrics tree node. +pub struct MetricsTree_Market_Dca_ClassAveragePrice { + 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, +} + +impl MetricsTree_Market_Dca_ClassAveragePrice { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + _2015: MetricPattern4::new(client.clone(), "dca_class_2015_average_price".to_string()), + _2016: MetricPattern4::new(client.clone(), "dca_class_2016_average_price".to_string()), + _2017: MetricPattern4::new(client.clone(), "dca_class_2017_average_price".to_string()), + _2018: MetricPattern4::new(client.clone(), "dca_class_2018_average_price".to_string()), + _2019: MetricPattern4::new(client.clone(), "dca_class_2019_average_price".to_string()), + _2020: MetricPattern4::new(client.clone(), "dca_class_2020_average_price".to_string()), + _2021: MetricPattern4::new(client.clone(), "dca_class_2021_average_price".to_string()), + _2022: MetricPattern4::new(client.clone(), "dca_class_2022_average_price".to_string()), + _2023: MetricPattern4::new(client.clone(), "dca_class_2023_average_price".to_string()), + _2024: MetricPattern4::new(client.clone(), "dca_class_2024_average_price".to_string()), + _2025: MetricPattern4::new(client.clone(), "dca_class_2025_average_price".to_string()), + } + } +} + /// Metrics tree node. pub struct MetricsTree_Market_Dca_ClassStack { pub _2015: _2015Pattern, @@ -6630,14 +10816,8 @@ impl MetricsTree_Market_Indicators { rsi_14d: MetricPattern6::new(client.clone(), "rsi_14d".to_string()), rsi_14d_max: MetricPattern6::new(client.clone(), "rsi_14d_max".to_string()), rsi_14d_min: MetricPattern6::new(client.clone(), "rsi_14d_min".to_string()), - rsi_average_gain_14d: MetricPattern6::new( - client.clone(), - "rsi_average_gain_14d".to_string(), - ), - rsi_average_loss_14d: MetricPattern6::new( - client.clone(), - "rsi_average_loss_14d".to_string(), - ), + rsi_average_gain_14d: MetricPattern6::new(client.clone(), "rsi_average_gain_14d".to_string()), + rsi_average_loss_14d: MetricPattern6::new(client.clone(), "rsi_average_loss_14d".to_string()), rsi_gains: MetricPattern6::new(client.clone(), "rsi_gains".to_string()), rsi_losses: MetricPattern6::new(client.clone(), "rsi_losses".to_string()), stoch_d: MetricPattern6::new(client.clone(), "stoch_d".to_string()), @@ -6651,87 +10831,1713 @@ impl MetricsTree_Market_Indicators { /// Metrics tree node. pub struct MetricsTree_Market_MovingAverage { - pub price_111d_sma: Price111dSmaPattern, - pub price_12d_ema: Price111dSmaPattern, - pub price_13d_ema: Price111dSmaPattern, - pub price_13d_sma: Price111dSmaPattern, - pub price_144d_ema: Price111dSmaPattern, - pub price_144d_sma: Price111dSmaPattern, - pub price_1m_ema: Price111dSmaPattern, - pub price_1m_sma: Price111dSmaPattern, - pub price_1w_ema: Price111dSmaPattern, - pub price_1w_sma: Price111dSmaPattern, - pub price_1y_ema: Price111dSmaPattern, - pub price_1y_sma: Price111dSmaPattern, - pub price_200d_ema: Price111dSmaPattern, - pub price_200d_sma: Price111dSmaPattern, + pub price_111d_sma: MetricsTree_Market_MovingAverage_Price111dSma, + pub price_12d_ema: MetricsTree_Market_MovingAverage_Price12dEma, + pub price_13d_ema: MetricsTree_Market_MovingAverage_Price13dEma, + pub price_13d_sma: MetricsTree_Market_MovingAverage_Price13dSma, + pub price_144d_ema: MetricsTree_Market_MovingAverage_Price144dEma, + pub price_144d_sma: MetricsTree_Market_MovingAverage_Price144dSma, + pub price_1m_ema: MetricsTree_Market_MovingAverage_Price1mEma, + pub price_1m_sma: MetricsTree_Market_MovingAverage_Price1mSma, + pub price_1w_ema: MetricsTree_Market_MovingAverage_Price1wEma, + pub price_1w_sma: MetricsTree_Market_MovingAverage_Price1wSma, + pub price_1y_ema: MetricsTree_Market_MovingAverage_Price1yEma, + pub price_1y_sma: MetricsTree_Market_MovingAverage_Price1ySma, + pub price_200d_ema: MetricsTree_Market_MovingAverage_Price200dEma, + pub price_200d_sma: MetricsTree_Market_MovingAverage_Price200dSma, pub price_200d_sma_x0_8: MetricPattern4, pub price_200d_sma_x2_4: MetricPattern4, - pub price_200w_ema: Price111dSmaPattern, - pub price_200w_sma: Price111dSmaPattern, - pub price_21d_ema: Price111dSmaPattern, - pub price_21d_sma: Price111dSmaPattern, - pub price_26d_ema: Price111dSmaPattern, - pub price_2y_ema: Price111dSmaPattern, - pub price_2y_sma: Price111dSmaPattern, - pub price_34d_ema: Price111dSmaPattern, - pub price_34d_sma: Price111dSmaPattern, - pub price_350d_sma: Price111dSmaPattern, + pub price_200w_ema: MetricsTree_Market_MovingAverage_Price200wEma, + pub price_200w_sma: MetricsTree_Market_MovingAverage_Price200wSma, + pub price_21d_ema: MetricsTree_Market_MovingAverage_Price21dEma, + pub price_21d_sma: MetricsTree_Market_MovingAverage_Price21dSma, + pub price_26d_ema: MetricsTree_Market_MovingAverage_Price26dEma, + pub price_2y_ema: MetricsTree_Market_MovingAverage_Price2yEma, + pub price_2y_sma: MetricsTree_Market_MovingAverage_Price2ySma, + pub price_34d_ema: MetricsTree_Market_MovingAverage_Price34dEma, + pub price_34d_sma: MetricsTree_Market_MovingAverage_Price34dSma, + pub price_350d_sma: MetricsTree_Market_MovingAverage_Price350dSma, pub price_350d_sma_x2: MetricPattern4, - pub price_4y_ema: Price111dSmaPattern, - pub price_4y_sma: Price111dSmaPattern, - pub price_55d_ema: Price111dSmaPattern, - pub price_55d_sma: Price111dSmaPattern, - pub price_89d_ema: Price111dSmaPattern, - pub price_89d_sma: Price111dSmaPattern, - pub price_8d_ema: Price111dSmaPattern, - pub price_8d_sma: Price111dSmaPattern, + pub price_4y_ema: MetricsTree_Market_MovingAverage_Price4yEma, + pub price_4y_sma: MetricsTree_Market_MovingAverage_Price4ySma, + pub price_55d_ema: MetricsTree_Market_MovingAverage_Price55dEma, + pub price_55d_sma: MetricsTree_Market_MovingAverage_Price55dSma, + pub price_89d_ema: MetricsTree_Market_MovingAverage_Price89dEma, + pub price_89d_sma: MetricsTree_Market_MovingAverage_Price89dSma, + pub price_8d_ema: MetricsTree_Market_MovingAverage_Price8dEma, + pub price_8d_sma: MetricsTree_Market_MovingAverage_Price8dSma, } impl MetricsTree_Market_MovingAverage { pub fn new(client: Arc, base_path: String) -> Self { Self { - price_111d_sma: Price111dSmaPattern::new(client.clone(), "price_111d_sma".to_string()), - price_12d_ema: Price111dSmaPattern::new(client.clone(), "price_12d_ema".to_string()), - price_13d_ema: Price111dSmaPattern::new(client.clone(), "price_13d_ema".to_string()), - price_13d_sma: Price111dSmaPattern::new(client.clone(), "price_13d_sma".to_string()), - price_144d_ema: Price111dSmaPattern::new(client.clone(), "price_144d_ema".to_string()), - price_144d_sma: Price111dSmaPattern::new(client.clone(), "price_144d_sma".to_string()), - price_1m_ema: Price111dSmaPattern::new(client.clone(), "price_1m_ema".to_string()), - price_1m_sma: Price111dSmaPattern::new(client.clone(), "price_1m_sma".to_string()), - price_1w_ema: Price111dSmaPattern::new(client.clone(), "price_1w_ema".to_string()), - price_1w_sma: Price111dSmaPattern::new(client.clone(), "price_1w_sma".to_string()), - price_1y_ema: Price111dSmaPattern::new(client.clone(), "price_1y_ema".to_string()), - price_1y_sma: Price111dSmaPattern::new(client.clone(), "price_1y_sma".to_string()), - price_200d_ema: Price111dSmaPattern::new(client.clone(), "price_200d_ema".to_string()), - price_200d_sma: Price111dSmaPattern::new(client.clone(), "price_200d_sma".to_string()), - price_200d_sma_x0_8: MetricPattern4::new( - client.clone(), - "price_200d_sma_x0_8".to_string(), - ), - price_200d_sma_x2_4: MetricPattern4::new( - client.clone(), - "price_200d_sma_x2_4".to_string(), - ), - price_200w_ema: Price111dSmaPattern::new(client.clone(), "price_200w_ema".to_string()), - price_200w_sma: Price111dSmaPattern::new(client.clone(), "price_200w_sma".to_string()), - price_21d_ema: Price111dSmaPattern::new(client.clone(), "price_21d_ema".to_string()), - price_21d_sma: Price111dSmaPattern::new(client.clone(), "price_21d_sma".to_string()), - price_26d_ema: Price111dSmaPattern::new(client.clone(), "price_26d_ema".to_string()), - price_2y_ema: Price111dSmaPattern::new(client.clone(), "price_2y_ema".to_string()), - price_2y_sma: Price111dSmaPattern::new(client.clone(), "price_2y_sma".to_string()), - price_34d_ema: Price111dSmaPattern::new(client.clone(), "price_34d_ema".to_string()), - price_34d_sma: Price111dSmaPattern::new(client.clone(), "price_34d_sma".to_string()), - price_350d_sma: Price111dSmaPattern::new(client.clone(), "price_350d_sma".to_string()), + price_111d_sma: MetricsTree_Market_MovingAverage_Price111dSma::new(client.clone(), format!("{base_path}_price_111d_sma")), + price_12d_ema: MetricsTree_Market_MovingAverage_Price12dEma::new(client.clone(), format!("{base_path}_price_12d_ema")), + price_13d_ema: MetricsTree_Market_MovingAverage_Price13dEma::new(client.clone(), format!("{base_path}_price_13d_ema")), + price_13d_sma: MetricsTree_Market_MovingAverage_Price13dSma::new(client.clone(), format!("{base_path}_price_13d_sma")), + price_144d_ema: MetricsTree_Market_MovingAverage_Price144dEma::new(client.clone(), format!("{base_path}_price_144d_ema")), + price_144d_sma: MetricsTree_Market_MovingAverage_Price144dSma::new(client.clone(), format!("{base_path}_price_144d_sma")), + price_1m_ema: MetricsTree_Market_MovingAverage_Price1mEma::new(client.clone(), format!("{base_path}_price_1m_ema")), + price_1m_sma: MetricsTree_Market_MovingAverage_Price1mSma::new(client.clone(), format!("{base_path}_price_1m_sma")), + price_1w_ema: MetricsTree_Market_MovingAverage_Price1wEma::new(client.clone(), format!("{base_path}_price_1w_ema")), + price_1w_sma: MetricsTree_Market_MovingAverage_Price1wSma::new(client.clone(), format!("{base_path}_price_1w_sma")), + price_1y_ema: MetricsTree_Market_MovingAverage_Price1yEma::new(client.clone(), format!("{base_path}_price_1y_ema")), + price_1y_sma: MetricsTree_Market_MovingAverage_Price1ySma::new(client.clone(), format!("{base_path}_price_1y_sma")), + price_200d_ema: MetricsTree_Market_MovingAverage_Price200dEma::new(client.clone(), format!("{base_path}_price_200d_ema")), + price_200d_sma: MetricsTree_Market_MovingAverage_Price200dSma::new(client.clone(), format!("{base_path}_price_200d_sma")), + price_200d_sma_x0_8: MetricPattern4::new(client.clone(), "price_200d_sma_x0_8".to_string()), + price_200d_sma_x2_4: MetricPattern4::new(client.clone(), "price_200d_sma_x2_4".to_string()), + price_200w_ema: MetricsTree_Market_MovingAverage_Price200wEma::new(client.clone(), format!("{base_path}_price_200w_ema")), + price_200w_sma: MetricsTree_Market_MovingAverage_Price200wSma::new(client.clone(), format!("{base_path}_price_200w_sma")), + price_21d_ema: MetricsTree_Market_MovingAverage_Price21dEma::new(client.clone(), format!("{base_path}_price_21d_ema")), + price_21d_sma: MetricsTree_Market_MovingAverage_Price21dSma::new(client.clone(), format!("{base_path}_price_21d_sma")), + price_26d_ema: MetricsTree_Market_MovingAverage_Price26dEma::new(client.clone(), format!("{base_path}_price_26d_ema")), + price_2y_ema: MetricsTree_Market_MovingAverage_Price2yEma::new(client.clone(), format!("{base_path}_price_2y_ema")), + price_2y_sma: MetricsTree_Market_MovingAverage_Price2ySma::new(client.clone(), format!("{base_path}_price_2y_sma")), + price_34d_ema: MetricsTree_Market_MovingAverage_Price34dEma::new(client.clone(), format!("{base_path}_price_34d_ema")), + price_34d_sma: MetricsTree_Market_MovingAverage_Price34dSma::new(client.clone(), format!("{base_path}_price_34d_sma")), + price_350d_sma: MetricsTree_Market_MovingAverage_Price350dSma::new(client.clone(), format!("{base_path}_price_350d_sma")), price_350d_sma_x2: MetricPattern4::new(client.clone(), "price_350d_sma_x2".to_string()), - price_4y_ema: Price111dSmaPattern::new(client.clone(), "price_4y_ema".to_string()), - price_4y_sma: Price111dSmaPattern::new(client.clone(), "price_4y_sma".to_string()), - price_55d_ema: Price111dSmaPattern::new(client.clone(), "price_55d_ema".to_string()), - price_55d_sma: Price111dSmaPattern::new(client.clone(), "price_55d_sma".to_string()), - price_89d_ema: Price111dSmaPattern::new(client.clone(), "price_89d_ema".to_string()), - price_89d_sma: Price111dSmaPattern::new(client.clone(), "price_89d_sma".to_string()), - price_8d_ema: Price111dSmaPattern::new(client.clone(), "price_8d_ema".to_string()), - price_8d_sma: Price111dSmaPattern::new(client.clone(), "price_8d_sma".to_string()), + price_4y_ema: MetricsTree_Market_MovingAverage_Price4yEma::new(client.clone(), format!("{base_path}_price_4y_ema")), + price_4y_sma: MetricsTree_Market_MovingAverage_Price4ySma::new(client.clone(), format!("{base_path}_price_4y_sma")), + price_55d_ema: MetricsTree_Market_MovingAverage_Price55dEma::new(client.clone(), format!("{base_path}_price_55d_ema")), + price_55d_sma: MetricsTree_Market_MovingAverage_Price55dSma::new(client.clone(), format!("{base_path}_price_55d_sma")), + price_89d_ema: MetricsTree_Market_MovingAverage_Price89dEma::new(client.clone(), format!("{base_path}_price_89d_ema")), + price_89d_sma: MetricsTree_Market_MovingAverage_Price89dSma::new(client.clone(), format!("{base_path}_price_89d_sma")), + price_8d_ema: MetricsTree_Market_MovingAverage_Price8dEma::new(client.clone(), format!("{base_path}_price_8d_ema")), + price_8d_sma: MetricsTree_Market_MovingAverage_Price8dSma::new(client.clone(), format!("{base_path}_price_8d_sma")), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price111dSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price111dSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_111d_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_111d_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_111d_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_111d_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_111d_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_111d_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_111d_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price12dEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price12dEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_12d_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_12d_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_12d_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_12d_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_12d_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_12d_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_12d_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price13dEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price13dEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_13d_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_13d_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_13d_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_13d_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_13d_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_13d_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_13d_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price13dSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price13dSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_13d_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_13d_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_13d_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_13d_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_13d_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_13d_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_13d_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price144dEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price144dEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_144d_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_144d_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_144d_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_144d_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_144d_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_144d_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_144d_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price144dSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price144dSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_144d_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_144d_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_144d_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_144d_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_144d_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_144d_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_144d_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price1mEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price1mEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_1m_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_1m_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_1m_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_1m_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_1m_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_1m_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_1m_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price1mSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price1mSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_1m_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_1m_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_1m_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_1m_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_1m_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_1m_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_1m_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price1wEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price1wEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_1w_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_1w_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_1w_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_1w_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_1w_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_1w_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_1w_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price1wSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price1wSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_1w_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_1w_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_1w_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_1w_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_1w_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_1w_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_1w_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price1yEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price1yEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_1y_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_1y_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_1y_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_1y_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_1y_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_1y_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_1y_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price1ySma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price1ySma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_1y_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_1y_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_1y_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_1y_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_1y_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_1y_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_1y_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price200dEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price200dEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_200d_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_200d_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_200d_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_200d_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_200d_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_200d_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_200d_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price200dSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price200dSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_200d_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_200d_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_200d_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_200d_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_200d_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_200d_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_200d_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price200wEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price200wEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_200w_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_200w_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_200w_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_200w_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_200w_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_200w_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_200w_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price200wSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price200wSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_200w_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_200w_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_200w_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_200w_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_200w_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_200w_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_200w_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price21dEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price21dEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_21d_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_21d_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_21d_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_21d_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_21d_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_21d_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_21d_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price21dSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price21dSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_21d_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_21d_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_21d_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_21d_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_21d_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_21d_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_21d_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price26dEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price26dEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_26d_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_26d_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_26d_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_26d_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_26d_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_26d_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_26d_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price2yEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price2yEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_2y_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_2y_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_2y_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_2y_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_2y_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_2y_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_2y_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price2ySma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price2ySma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_2y_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_2y_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_2y_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_2y_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_2y_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_2y_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_2y_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price34dEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price34dEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_34d_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_34d_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_34d_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_34d_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_34d_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_34d_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_34d_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price34dSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price34dSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_34d_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_34d_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_34d_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_34d_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_34d_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_34d_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_34d_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price350dSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price350dSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_350d_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_350d_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_350d_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_350d_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_350d_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_350d_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_350d_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price4yEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price4yEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_4y_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_4y_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_4y_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_4y_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_4y_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_4y_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_4y_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price4ySma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price4ySma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_4y_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_4y_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_4y_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_4y_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_4y_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_4y_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_4y_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price55dEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price55dEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_55d_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_55d_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_55d_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_55d_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_55d_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_55d_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_55d_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price55dSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price55dSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_55d_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_55d_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_55d_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_55d_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_55d_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_55d_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_55d_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price89dEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price89dEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_89d_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_89d_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_89d_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_89d_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_89d_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_89d_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_89d_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price89dSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price89dSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_89d_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_89d_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_89d_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_89d_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_89d_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_89d_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_89d_sma_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price8dEma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price8dEma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_8d_ema".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_8d_ema_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_8d_ema_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_8d_ema_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_8d_ema_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_8d_ema_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_8d_ema_ratio".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Market_MovingAverage_Price8dSma { + pub price: MetricPattern4, + pub ratio: MetricPattern4, + pub ratio_1m_sma: MetricPattern4, + pub ratio_1w_sma: MetricPattern4, + pub ratio_1y_sd: Ratio1ySdPattern, + pub ratio_2y_sd: Ratio1ySdPattern, + pub ratio_4y_sd: Ratio1ySdPattern, + pub ratio_pct1: MetricPattern4, + pub ratio_pct1_usd: MetricPattern4, + pub ratio_pct2: MetricPattern4, + pub ratio_pct2_usd: MetricPattern4, + pub ratio_pct5: MetricPattern4, + pub ratio_pct5_usd: MetricPattern4, + pub ratio_pct95: MetricPattern4, + pub ratio_pct95_usd: MetricPattern4, + pub ratio_pct98: MetricPattern4, + pub ratio_pct98_usd: MetricPattern4, + pub ratio_pct99: MetricPattern4, + pub ratio_pct99_usd: MetricPattern4, + pub ratio_sd: Ratio1ySdPattern, +} + +impl MetricsTree_Market_MovingAverage_Price8dSma { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + price: MetricPattern4::new(client.clone(), "price_8d_sma".to_string()), + ratio: MetricPattern4::new(client.clone(), "price_8d_sma_ratio".to_string()), + ratio_1m_sma: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_1m_sma".to_string()), + ratio_1w_sma: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_1w_sma".to_string()), + ratio_1y_sd: Ratio1ySdPattern::new(client.clone(), "price_8d_sma_ratio_1y".to_string()), + ratio_2y_sd: Ratio1ySdPattern::new(client.clone(), "price_8d_sma_ratio_2y".to_string()), + ratio_4y_sd: Ratio1ySdPattern::new(client.clone(), "price_8d_sma_ratio_4y".to_string()), + ratio_pct1: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct1".to_string()), + ratio_pct1_usd: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct1_usd".to_string()), + ratio_pct2: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct2".to_string()), + ratio_pct2_usd: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct2_usd".to_string()), + ratio_pct5: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct5".to_string()), + ratio_pct5_usd: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct5_usd".to_string()), + ratio_pct95: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct95".to_string()), + ratio_pct95_usd: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct95_usd".to_string()), + ratio_pct98: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct98".to_string()), + ratio_pct98_usd: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct98_usd".to_string()), + ratio_pct99: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct99".to_string()), + ratio_pct99_usd: MetricPattern4::new(client.clone(), "price_8d_sma_ratio_pct99_usd".to_string()), + ratio_sd: Ratio1ySdPattern::new(client.clone(), "price_8d_sma_ratio".to_string()), } } } @@ -6760,17 +12566,11 @@ impl MetricsTree_Market_Range { price_1w_min: MetricPattern4::new(client.clone(), "price_1w_min".to_string()), price_1y_max: MetricPattern4::new(client.clone(), "price_1y_max".to_string()), price_1y_min: MetricPattern4::new(client.clone(), "price_1y_min".to_string()), - price_2w_choppiness_index: MetricPattern4::new( - client.clone(), - "price_2w_choppiness_index".to_string(), - ), + price_2w_choppiness_index: MetricPattern4::new(client.clone(), "price_2w_choppiness_index".to_string()), price_2w_max: MetricPattern4::new(client.clone(), "price_2w_max".to_string()), price_2w_min: MetricPattern4::new(client.clone(), "price_2w_min".to_string()), price_true_range: MetricPattern6::new(client.clone(), "price_true_range".to_string()), - price_true_range_2w_sum: MetricPattern6::new( - client.clone(), - "price_true_range_2w_sum".to_string(), - ), + price_true_range_2w_sum: MetricPattern6::new(client.clone(), "price_true_range_2w_sum".to_string()), } } } @@ -6791,36 +12591,15 @@ pub struct MetricsTree_Market_Returns { impl MetricsTree_Market_Returns { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1d_returns_1m_sd: _1dReturns1mSdPattern::new( - client.clone(), - "1d_returns_1m_sd".to_string(), - ), - _1d_returns_1w_sd: _1dReturns1mSdPattern::new( - client.clone(), - "1d_returns_1w_sd".to_string(), - ), - _1d_returns_1y_sd: _1dReturns1mSdPattern::new( - client.clone(), - "1d_returns_1y_sd".to_string(), - ), + _1d_returns_1m_sd: _1dReturns1mSdPattern::new(client.clone(), "1d_returns_1m_sd".to_string()), + _1d_returns_1w_sd: _1dReturns1mSdPattern::new(client.clone(), "1d_returns_1w_sd".to_string()), + _1d_returns_1y_sd: _1dReturns1mSdPattern::new(client.clone(), "1d_returns_1y_sd".to_string()), cagr: PeriodCagrPattern::new(client.clone(), "cagr".to_string()), - downside_1m_sd: _1dReturns1mSdPattern::new( - client.clone(), - "downside_1m_sd".to_string(), - ), - downside_1w_sd: _1dReturns1mSdPattern::new( - client.clone(), - "downside_1w_sd".to_string(), - ), - downside_1y_sd: _1dReturns1mSdPattern::new( - client.clone(), - "downside_1y_sd".to_string(), - ), + downside_1m_sd: _1dReturns1mSdPattern::new(client.clone(), "downside_1m_sd".to_string()), + downside_1w_sd: _1dReturns1mSdPattern::new(client.clone(), "downside_1w_sd".to_string()), + downside_1y_sd: _1dReturns1mSdPattern::new(client.clone(), "downside_1y_sd".to_string()), downside_returns: MetricPattern6::new(client.clone(), "downside_returns".to_string()), - price_returns: MetricsTree_Market_Returns_PriceReturns::new( - client.clone(), - format!("{base_path}_price_returns"), - ), + price_returns: MetricsTree_Market_Returns_PriceReturns::new(client.clone(), format!("{base_path}_price_returns")), } } } @@ -6878,18 +12657,9 @@ pub struct MetricsTree_Market_Volatility { impl MetricsTree_Market_Volatility { pub fn new(client: Arc, base_path: String) -> Self { Self { - price_1m_volatility: MetricPattern4::new( - client.clone(), - "price_1m_volatility".to_string(), - ), - price_1w_volatility: MetricPattern4::new( - client.clone(), - "price_1w_volatility".to_string(), - ), - price_1y_volatility: MetricPattern4::new( - client.clone(), - "price_1y_volatility".to_string(), - ), + price_1m_volatility: MetricPattern4::new(client.clone(), "price_1m_volatility".to_string()), + price_1w_volatility: MetricPattern4::new(client.clone(), "price_1w_volatility".to_string()), + price_1y_volatility: MetricPattern4::new(client.clone(), "price_1y_volatility".to_string()), sharpe_1m: MetricPattern6::new(client.clone(), "sharpe_1m".to_string()), sharpe_1w: MetricPattern6::new(client.clone(), "sharpe_1w".to_string()), sharpe_1y: MetricPattern6::new(client.clone(), "sharpe_1y".to_string()), @@ -7144,10 +12914,7 @@ impl MetricsTree_Pools_Vecs { binancepool: AaopoolPattern::new(client.clone(), "binancepool".to_string()), bitalo: AaopoolPattern::new(client.clone(), "bitalo".to_string()), bitclub: AaopoolPattern::new(client.clone(), "bitclub".to_string()), - bitcoinaffiliatenetwork: AaopoolPattern::new( - client.clone(), - "bitcoinaffiliatenetwork".to_string(), - ), + bitcoinaffiliatenetwork: AaopoolPattern::new(client.clone(), "bitcoinaffiliatenetwork".to_string()), bitcoincom: AaopoolPattern::new(client.clone(), "bitcoincom".to_string()), bitcoinindia: AaopoolPattern::new(client.clone(), "bitcoinindia".to_string()), bitcoinrussia: AaopoolPattern::new(client.clone(), "bitcoinrussia".to_string()), @@ -7193,19 +12960,13 @@ impl MetricsTree_Pools_Vecs { ekanembtc: AaopoolPattern::new(client.clone(), "ekanembtc".to_string()), eligius: AaopoolPattern::new(client.clone(), "eligius".to_string()), emcdpool: AaopoolPattern::new(client.clone(), "emcdpool".to_string()), - entrustcharitypool: AaopoolPattern::new( - client.clone(), - "entrustcharitypool".to_string(), - ), + entrustcharitypool: AaopoolPattern::new(client.clone(), "entrustcharitypool".to_string()), eobot: AaopoolPattern::new(client.clone(), "eobot".to_string()), exxbw: AaopoolPattern::new(client.clone(), "exxbw".to_string()), f2pool: AaopoolPattern::new(client.clone(), "f2pool".to_string()), fiftyeightcoin: AaopoolPattern::new(client.clone(), "fiftyeightcoin".to_string()), foundryusa: AaopoolPattern::new(client.clone(), "foundryusa".to_string()), - futurebitapollosolo: AaopoolPattern::new( - client.clone(), - "futurebitapollosolo".to_string(), - ), + futurebitapollosolo: AaopoolPattern::new(client.clone(), "futurebitapollosolo".to_string()), gbminers: AaopoolPattern::new(client.clone(), "gbminers".to_string()), ghashio: AaopoolPattern::new(client.clone(), "ghashio".to_string()), givemecoins: AaopoolPattern::new(client.clone(), "givemecoins".to_string()), @@ -7286,10 +13047,7 @@ impl MetricsTree_Pools_Vecs { tiger: AaopoolPattern::new(client.clone(), "tiger".to_string()), tigerpoolnet: AaopoolPattern::new(client.clone(), "tigerpoolnet".to_string()), titan: AaopoolPattern::new(client.clone(), "titan".to_string()), - transactioncoinmining: AaopoolPattern::new( - client.clone(), - "transactioncoinmining".to_string(), - ), + transactioncoinmining: AaopoolPattern::new(client.clone(), "transactioncoinmining".to_string()), trickysbtcpool: AaopoolPattern::new(client.clone(), "trickysbtcpool".to_string()), triplemining: AaopoolPattern::new(client.clone(), "triplemining".to_string()), twentyoneinc: AaopoolPattern::new(client.clone(), "twentyoneinc".to_string()), @@ -7326,8 +13084,8 @@ impl MetricsTree_Positions { pub struct MetricsTree_Price { pub cents: MetricsTree_Price_Cents, pub oracle: MetricsTree_Price_Oracle, - pub sats: SatsPattern, - pub usd: SatsPattern, + pub sats: MetricsTree_Price_Sats, + pub usd: MetricsTree_Price_Usd, } impl MetricsTree_Price { @@ -7335,8 +13093,8 @@ impl MetricsTree_Price { Self { cents: MetricsTree_Price_Cents::new(client.clone(), format!("{base_path}_cents")), oracle: MetricsTree_Price_Oracle::new(client.clone(), format!("{base_path}_oracle")), - sats: SatsPattern::new(client.clone(), "price".to_string()), - usd: SatsPattern::new(client.clone(), "price".to_string()), + sats: MetricsTree_Price_Sats::new(client.clone(), format!("{base_path}_sats")), + usd: MetricsTree_Price_Usd::new(client.clone(), format!("{base_path}_usd")), } } } @@ -7394,6 +13152,36 @@ impl MetricsTree_Price_Oracle { } } +/// Metrics tree node. +pub struct MetricsTree_Price_Sats { + pub ohlc: MetricPattern1, + pub split: SplitPattern2, +} + +impl MetricsTree_Price_Sats { + 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()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Price_Usd { + pub ohlc: MetricPattern1, + pub split: SplitPattern2, +} + +impl MetricsTree_Price_Usd { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + ohlc: MetricPattern1::new(client.clone(), "price_ohlc".to_string()), + split: SplitPattern2::new(client.clone(), "price".to_string()), + } + } +} + /// Metrics tree node. pub struct MetricsTree_Scripts { pub count: MetricsTree_Scripts_Count, @@ -7413,22 +13201,10 @@ impl MetricsTree_Scripts { Self { count: MetricsTree_Scripts_Count::new(client.clone(), format!("{base_path}_count")), empty_to_txindex: MetricPattern9::new(client.clone(), "txindex".to_string()), - first_emptyoutputindex: MetricPattern11::new( - client.clone(), - "first_emptyoutputindex".to_string(), - ), - first_opreturnindex: MetricPattern11::new( - client.clone(), - "first_opreturnindex".to_string(), - ), - first_p2msoutputindex: MetricPattern11::new( - client.clone(), - "first_p2msoutputindex".to_string(), - ), - first_unknownoutputindex: MetricPattern11::new( - client.clone(), - "first_unknownoutputindex".to_string(), - ), + first_emptyoutputindex: MetricPattern11::new(client.clone(), "first_emptyoutputindex".to_string()), + first_opreturnindex: MetricPattern11::new(client.clone(), "first_opreturnindex".to_string()), + first_p2msoutputindex: MetricPattern11::new(client.clone(), "first_p2msoutputindex".to_string()), + first_unknownoutputindex: MetricPattern11::new(client.clone(), "first_unknownoutputindex".to_string()), opreturn_to_txindex: MetricPattern14::new(client.clone(), "txindex".to_string()), p2ms_to_txindex: MetricPattern17::new(client.clone(), "txindex".to_string()), unknown_to_txindex: MetricPattern28::new(client.clone(), "txindex".to_string()), @@ -7471,14 +13247,8 @@ impl MetricsTree_Scripts_Count { p2wpkh: DollarsPattern::new(client.clone(), "p2wpkh_count".to_string()), p2wsh: DollarsPattern::new(client.clone(), "p2wsh_count".to_string()), segwit: DollarsPattern::new(client.clone(), "segwit_count".to_string()), - segwit_adoption: SegwitAdoptionPattern::new( - client.clone(), - "segwit_adoption".to_string(), - ), - taproot_adoption: SegwitAdoptionPattern::new( - client.clone(), - "taproot_adoption".to_string(), - ), + segwit_adoption: SegwitAdoptionPattern::new(client.clone(), "segwit_adoption".to_string()), + taproot_adoption: SegwitAdoptionPattern::new(client.clone(), "taproot_adoption".to_string()), unknownoutput: DollarsPattern::new(client.clone(), "unknownoutput_count".to_string()), } } @@ -7510,16 +13280,10 @@ impl MetricsTree_Supply { pub fn new(client: Arc, base_path: String) -> Self { Self { burned: MetricsTree_Supply_Burned::new(client.clone(), format!("{base_path}_burned")), - circulating: MetricsTree_Supply_Circulating::new( - client.clone(), - format!("{base_path}_circulating"), - ), + circulating: MetricsTree_Supply_Circulating::new(client.clone(), format!("{base_path}_circulating")), inflation: MetricPattern4::new(client.clone(), "inflation_rate".to_string()), market_cap: MetricPattern1::new(client.clone(), "market_cap".to_string()), - velocity: MetricsTree_Supply_Velocity::new( - client.clone(), - format!("{base_path}_velocity"), - ), + velocity: MetricsTree_Supply_Velocity::new(client.clone(), format!("{base_path}_velocity")), } } } @@ -7534,10 +13298,7 @@ impl MetricsTree_Supply_Burned { pub fn new(client: Arc, base_path: String) -> Self { Self { opreturn: UnclaimedRewardsPattern::new(client.clone(), "opreturn_supply".to_string()), - unspendable: UnclaimedRewardsPattern::new( - client.clone(), - "unspendable_supply".to_string(), - ), + unspendable: UnclaimedRewardsPattern::new(client.clone(), "unspendable_supply".to_string()), } } } @@ -7597,32 +13358,20 @@ impl MetricsTree_Transactions { pub fn new(client: Arc, base_path: String) -> Self { Self { base_size: MetricPattern27::new(client.clone(), "base_size".to_string()), - count: MetricsTree_Transactions_Count::new( - client.clone(), - format!("{base_path}_count"), - ), + count: MetricsTree_Transactions_Count::new(client.clone(), format!("{base_path}_count")), fees: MetricsTree_Transactions_Fees::new(client.clone(), format!("{base_path}_fees")), first_txindex: MetricPattern11::new(client.clone(), "first_txindex".to_string()), first_txinindex: MetricPattern27::new(client.clone(), "first_txinindex".to_string()), first_txoutindex: MetricPattern27::new(client.clone(), "first_txoutindex".to_string()), height: MetricPattern27::new(client.clone(), "height".to_string()), - is_explicitly_rbf: MetricPattern27::new( - client.clone(), - "is_explicitly_rbf".to_string(), - ), + is_explicitly_rbf: MetricPattern27::new(client.clone(), "is_explicitly_rbf".to_string()), rawlocktime: MetricPattern27::new(client.clone(), "rawlocktime".to_string()), size: MetricsTree_Transactions_Size::new(client.clone(), format!("{base_path}_size")), total_size: MetricPattern27::new(client.clone(), "total_size".to_string()), txid: MetricPattern27::new(client.clone(), "txid".to_string()), txversion: MetricPattern27::new(client.clone(), "txversion".to_string()), - versions: MetricsTree_Transactions_Versions::new( - client.clone(), - format!("{base_path}_versions"), - ), - volume: MetricsTree_Transactions_Volume::new( - client.clone(), - format!("{base_path}_volume"), - ), + versions: MetricsTree_Transactions_Versions::new(client.clone(), format!("{base_path}_versions")), + volume: MetricsTree_Transactions_Volume::new(client.clone(), format!("{base_path}_volume")), } } } @@ -7673,10 +13422,7 @@ impl MetricsTree_Transactions_Fees_Fee { pub fn new(client: Arc, base_path: String) -> Self { Self { bitcoin: CountPattern2::new(client.clone(), "fee_btc".to_string()), - dollars: MetricsTree_Transactions_Fees_Fee_Dollars::new( - client.clone(), - format!("{base_path}_dollars"), - ), + dollars: MetricsTree_Transactions_Fees_Fee_Dollars::new(client.clone(), format!("{base_path}_dollars")), sats: CountPattern2::new(client.clone(), "fee".to_string()), txindex: MetricPattern27::new(client.clone(), "fee".to_string()), } @@ -7703,10 +13449,7 @@ impl MetricsTree_Transactions_Fees_Fee_Dollars { Self { average: MetricPattern1::new(client.clone(), "fee_usd_average".to_string()), cumulative: MetricPattern2::new(client.clone(), "fee_usd_cumulative".to_string()), - height_cumulative: MetricPattern11::new( - client.clone(), - "fee_usd_cumulative".to_string(), - ), + height_cumulative: MetricPattern11::new(client.clone(), "fee_usd_cumulative".to_string()), max: MetricPattern1::new(client.clone(), "fee_usd_max".to_string()), median: MetricPattern11::new(client.clone(), "fee_usd_median".to_string()), min: MetricPattern1::new(client.clone(), "fee_usd_min".to_string()), @@ -7812,12 +13555,12 @@ impl BrkClient { /// .last(10) /// .json::()?; /// ``` - pub fn metric( - &self, - metric: impl Into, - index: Index, - ) -> MetricEndpointBuilder { - MetricEndpointBuilder::new(self.base.clone(), Arc::from(metric.into().as_str()), index) + pub fn metric(&self, metric: impl Into, index: Index) -> MetricEndpointBuilder { + MetricEndpointBuilder::new( + self.base.clone(), + Arc::from(metric.into().as_str()), + index, + ) } /// Address information @@ -7838,24 +13581,11 @@ impl BrkClient { /// *[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-transactions)* /// /// Endpoint: `GET /api/address/{address}/txs` - pub fn get_address_txs( - &self, - address: Address, - after_txid: Option<&str>, - limit: Option, - ) -> Result> { + pub fn get_address_txs(&self, address: Address, after_txid: Option<&str>, limit: Option) -> Result> { let mut query = Vec::new(); - if let Some(v) = after_txid { - query.push(format!("after_txid={}", v)); - } - if let Some(v) = limit { - query.push(format!("limit={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; + if let Some(v) = after_txid { query.push(format!("after_txid={}", v)); } + if let Some(v) = limit { query.push(format!("limit={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; let path = format!("/api/address/{address}/txs{}", query_str); self.base.get_json(&path) } @@ -7867,24 +13597,11 @@ impl BrkClient { /// *[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-transactions-chain)* /// /// Endpoint: `GET /api/address/{address}/txs/chain` - pub fn get_address_confirmed_txs( - &self, - address: Address, - after_txid: Option<&str>, - limit: Option, - ) -> Result> { + pub fn get_address_confirmed_txs(&self, address: Address, after_txid: Option<&str>, limit: Option) -> Result> { let mut query = Vec::new(); - if let Some(v) = after_txid { - query.push(format!("after_txid={}", v)); - } - if let Some(v) = limit { - query.push(format!("limit={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; + if let Some(v) = after_txid { query.push(format!("after_txid={}", v)); } + if let Some(v) = limit { query.push(format!("limit={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; let path = format!("/api/address/{address}/txs/chain{}", query_str); self.base.get_json(&path) } @@ -7897,8 +13614,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/address/{address}/txs/mempool` pub fn get_address_mempool_txs(&self, address: Address) -> Result> { - self.base - .get_json(&format!("/api/address/{address}/txs/mempool")) + self.base.get_json(&format!("/api/address/{address}/txs/mempool")) } /// Address UTXOs @@ -7964,8 +13680,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/block/{hash}/txid/{index}` pub fn get_block_txid(&self, hash: BlockHash, index: TxIndex) -> Result { - self.base - .get_json(&format!("/api/block/{hash}/txid/{index}")) + self.base.get_json(&format!("/api/block/{hash}/txid/{index}")) } /// Block transaction IDs @@ -7987,8 +13702,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/block/{hash}/txs/{start_index}` pub fn get_block_txs(&self, hash: BlockHash, start_index: TxIndex) -> Result> { - self.base - .get_json(&format!("/api/block/{hash}/txs/{start_index}")) + self.base.get_json(&format!("/api/block/{hash}/txs/{start_index}")) } /// Recent blocks @@ -8049,38 +13763,14 @@ impl BrkClient { /// 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}` - pub fn get_metric( - &self, - metric: Metric, - index: Index, - start: Option, - end: Option, - limit: Option<&str>, - format: Option, - ) -> Result> { + pub fn get_metric(&self, metric: Metric, index: Index, start: Option, end: Option, limit: Option<&str>, format: Option) -> Result> { let mut query = Vec::new(); - if let Some(v) = start { - query.push(format!("start={}", v)); - } - if let Some(v) = end { - query.push(format!("end={}", v)); - } - if let Some(v) = limit { - query.push(format!("limit={}", v)); - } - if let Some(v) = format { - query.push(format!("format={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; - let path = format!( - "/api/metric/{metric}/{}{}", - index.serialize_long(), - query_str - ); + if let Some(v) = start { query.push(format!("start={}", v)); } + if let Some(v) = end { query.push(format!("end={}", v)); } + if let Some(v) = limit { query.push(format!("limit={}", v)); } + if let Some(v) = format { query.push(format!("format={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; + let path = format!("/api/metric/{metric}/{}{}", index.serialize_long(), query_str); if format == Some(Format::CSV) { self.base.get_text(&path).map(FormatResponse::Csv) } else { @@ -8102,35 +13792,15 @@ impl BrkClient { /// 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` - pub fn get_metrics( - &self, - metrics: Metrics, - index: Index, - start: Option, - end: Option, - limit: Option<&str>, - format: Option, - ) -> Result>> { + pub fn get_metrics(&self, metrics: Metrics, index: Index, start: Option, end: Option, limit: Option<&str>, format: Option) -> Result>> { let mut query = Vec::new(); query.push(format!("metrics={}", metrics)); query.push(format!("index={}", index)); - if let Some(v) = start { - query.push(format!("start={}", v)); - } - if let Some(v) = end { - query.push(format!("end={}", v)); - } - if let Some(v) = limit { - query.push(format!("limit={}", v)); - } - if let Some(v) = format { - query.push(format!("format={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; + if let Some(v) = start { query.push(format!("start={}", v)); } + if let Some(v) = end { query.push(format!("end={}", v)); } + if let Some(v) = limit { query.push(format!("limit={}", v)); } + if let Some(v) = format { query.push(format!("format={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; let path = format!("/api/metrics/bulk{}", query_str); if format == Some(Format::CSV) { self.base.get_text(&path).map(FormatResponse::Csv) @@ -8164,14 +13834,8 @@ impl BrkClient { /// Endpoint: `GET /api/metrics/list` pub fn list_metrics(&self, page: Option) -> Result { let mut query = Vec::new(); - if let Some(v) = page { - query.push(format!("page={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; + if let Some(v) = page { query.push(format!("page={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; let path = format!("/api/metrics/list{}", query_str); self.base.get_json(&path) } @@ -8183,14 +13847,8 @@ impl BrkClient { /// Endpoint: `GET /api/metrics/search/{metric}` pub fn search_metrics(&self, metric: Metric, limit: Option) -> Result> { let mut query = Vec::new(); - if let Some(v) = limit { - query.push(format!("limit={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; + if let Some(v) = limit { query.push(format!("limit={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; let path = format!("/api/metrics/search/{metric}{}", query_str); self.base.get_json(&path) } @@ -8243,8 +13901,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/tx/{txid}/outspend/{vout}` pub fn get_tx_outspend(&self, txid: Txid, vout: Vout) -> Result { - self.base - .get_json(&format!("/api/tx/{txid}/outspend/{vout}")) + self.base.get_json(&format!("/api/tx/{txid}/outspend/{vout}")) } /// All output spend statuses @@ -8277,8 +13934,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/difficulty-adjustment` pub fn get_difficulty_adjustment(&self) -> Result { - self.base - .get_json(&format!("/api/v1/difficulty-adjustment")) + self.base.get_json(&format!("/api/v1/difficulty-adjustment")) } /// Projected mempool blocks @@ -8311,8 +13967,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/blocks/fee-rates/{time_period}` pub fn get_block_fee_rates(&self, time_period: TimePeriod) -> Result { - self.base - .get_json(&format!("/api/v1/mining/blocks/fee-rates/{time_period}")) + self.base.get_json(&format!("/api/v1/mining/blocks/fee-rates/{time_period}")) } /// Block fees @@ -8323,8 +13978,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/blocks/fees/{time_period}` pub fn get_block_fees(&self, time_period: TimePeriod) -> Result> { - self.base - .get_json(&format!("/api/v1/mining/blocks/fees/{time_period}")) + self.base.get_json(&format!("/api/v1/mining/blocks/fees/{time_period}")) } /// Block rewards @@ -8335,8 +13989,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/blocks/rewards/{time_period}` pub fn get_block_rewards(&self, time_period: TimePeriod) -> Result> { - self.base - .get_json(&format!("/api/v1/mining/blocks/rewards/{time_period}")) + self.base.get_json(&format!("/api/v1/mining/blocks/rewards/{time_period}")) } /// Block sizes and weights @@ -8347,9 +14000,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/blocks/sizes-weights/{time_period}` pub fn get_block_sizes_weights(&self, time_period: TimePeriod) -> Result { - self.base.get_json(&format!( - "/api/v1/mining/blocks/sizes-weights/{time_period}" - )) + self.base.get_json(&format!("/api/v1/mining/blocks/sizes-weights/{time_period}")) } /// Block by timestamp @@ -8360,8 +14011,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/blocks/timestamp/{timestamp}` pub fn get_block_by_timestamp(&self, timestamp: Timestamp) -> Result { - self.base - .get_json(&format!("/api/v1/mining/blocks/timestamp/{timestamp}")) + self.base.get_json(&format!("/api/v1/mining/blocks/timestamp/{timestamp}")) } /// Difficulty adjustments (all time) @@ -8372,8 +14022,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/difficulty-adjustments` pub fn get_difficulty_adjustments(&self) -> Result> { - self.base - .get_json(&format!("/api/v1/mining/difficulty-adjustments")) + self.base.get_json(&format!("/api/v1/mining/difficulty-adjustments")) } /// Difficulty adjustments @@ -8383,13 +14032,8 @@ impl BrkClient { /// *[Mempool.space docs](https://mempool.space/docs/api/rest#get-difficulty-adjustments)* /// /// Endpoint: `GET /api/v1/mining/difficulty-adjustments/{time_period}` - pub fn get_difficulty_adjustments_by_period( - &self, - time_period: TimePeriod, - ) -> Result> { - self.base.get_json(&format!( - "/api/v1/mining/difficulty-adjustments/{time_period}" - )) + pub fn get_difficulty_adjustments_by_period(&self, time_period: TimePeriod) -> Result> { + self.base.get_json(&format!("/api/v1/mining/difficulty-adjustments/{time_period}")) } /// Network hashrate (all time) @@ -8411,8 +14055,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/hashrate/{time_period}` pub fn get_hashrate_by_period(&self, time_period: TimePeriod) -> Result { - self.base - .get_json(&format!("/api/v1/mining/hashrate/{time_period}")) + self.base.get_json(&format!("/api/v1/mining/hashrate/{time_period}")) } /// Mining pool details @@ -8445,8 +14088,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/pools/{time_period}` pub fn get_pool_stats(&self, time_period: TimePeriod) -> Result { - self.base - .get_json(&format!("/api/v1/mining/pools/{time_period}")) + self.base.get_json(&format!("/api/v1/mining/pools/{time_period}")) } /// Mining reward statistics @@ -8457,8 +14099,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/reward-stats/{block_count}` pub fn get_reward_stats(&self, block_count: i64) -> Result { - self.base - .get_json(&format!("/api/v1/mining/reward-stats/{block_count}")) + self.base.get_json(&format!("/api/v1/mining/reward-stats/{block_count}")) } /// Validate address @@ -8469,8 +14110,7 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/validate-address/{address}` pub fn validate_address(&self, address: &str) -> Result { - self.base - .get_json(&format!("/api/v1/validate-address/{address}")) + self.base.get_json(&format!("/api/v1/validate-address/{address}")) } /// Health check @@ -8490,4 +14130,5 @@ impl BrkClient { pub fn get_version(&self) -> Result { self.base.get_json(&format!("/version")) } + } diff --git a/modules/brk-client/index.js b/modules/brk-client/index.js index 797f4e2d5..192da0685 100644 --- a/modules/brk-client/index.js +++ b/modules/brk-client/index.js @@ -2902,59 +2902,6 @@ function createPrice111dSmaPattern(client, acc) { }; } -/** - * @typedef {Object} ActivePriceRatioPattern - * @property {MetricPattern4} ratio - * @property {MetricPattern4} ratio1mSma - * @property {MetricPattern4} ratio1wSma - * @property {Ratio1ySdPattern} ratio1ySd - * @property {Ratio1ySdPattern} ratio2ySd - * @property {Ratio1ySdPattern} ratio4ySd - * @property {MetricPattern4} ratioPct1 - * @property {MetricPattern4} ratioPct1Usd - * @property {MetricPattern4} ratioPct2 - * @property {MetricPattern4} ratioPct2Usd - * @property {MetricPattern4} ratioPct5 - * @property {MetricPattern4} ratioPct5Usd - * @property {MetricPattern4} ratioPct95 - * @property {MetricPattern4} ratioPct95Usd - * @property {MetricPattern4} ratioPct98 - * @property {MetricPattern4} ratioPct98Usd - * @property {MetricPattern4} ratioPct99 - * @property {MetricPattern4} ratioPct99Usd - * @property {Ratio1ySdPattern} ratioSd - */ - -/** - * Create a ActivePriceRatioPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {ActivePriceRatioPattern} - */ -function createActivePriceRatioPattern(client, acc) { - return { - ratio: createMetricPattern4(client, acc), - ratio1mSma: createMetricPattern4(client, _m(acc, "1m_sma")), - ratio1wSma: createMetricPattern4(client, _m(acc, "1w_sma")), - ratio1ySd: createRatio1ySdPattern(client, _m(acc, "1y")), - ratio2ySd: createRatio1ySdPattern(client, _m(acc, "2y")), - ratio4ySd: createRatio1ySdPattern(client, _m(acc, "4y")), - ratioPct1: createMetricPattern4(client, _m(acc, "pct1")), - ratioPct1Usd: createMetricPattern4(client, _m(acc, "pct1_usd")), - ratioPct2: createMetricPattern4(client, _m(acc, "pct2")), - ratioPct2Usd: createMetricPattern4(client, _m(acc, "pct2_usd")), - ratioPct5: createMetricPattern4(client, _m(acc, "pct5")), - ratioPct5Usd: createMetricPattern4(client, _m(acc, "pct5_usd")), - ratioPct95: createMetricPattern4(client, _m(acc, "pct95")), - ratioPct95Usd: createMetricPattern4(client, _m(acc, "pct95_usd")), - ratioPct98: createMetricPattern4(client, _m(acc, "pct98")), - ratioPct98Usd: createMetricPattern4(client, _m(acc, "pct98_usd")), - ratioPct99: createMetricPattern4(client, _m(acc, "pct99")), - ratioPct99Usd: createMetricPattern4(client, _m(acc, "pct99_usd")), - ratioSd: createRatio1ySdPattern(client, acc), - }; -} - /** * @typedef {Object} PercentilesPattern * @property {MetricPattern4} pct05 @@ -3008,6 +2955,59 @@ function createPercentilesPattern(client, acc) { }; } +/** + * @typedef {Object} ActivePriceRatioPattern + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * Create a ActivePriceRatioPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {ActivePriceRatioPattern} + */ +function createActivePriceRatioPattern(client, acc) { + return { + ratio: createMetricPattern4(client, acc), + ratio1mSma: createMetricPattern4(client, _m(acc, "1m_sma")), + ratio1wSma: createMetricPattern4(client, _m(acc, "1w_sma")), + ratio1ySd: createRatio1ySdPattern(client, _m(acc, "1y")), + ratio2ySd: createRatio1ySdPattern(client, _m(acc, "2y")), + ratio4ySd: createRatio1ySdPattern(client, _m(acc, "4y")), + ratioPct1: createMetricPattern4(client, _m(acc, "pct1")), + ratioPct1Usd: createMetricPattern4(client, _m(acc, "pct1_usd")), + ratioPct2: createMetricPattern4(client, _m(acc, "pct2")), + ratioPct2Usd: createMetricPattern4(client, _m(acc, "pct2_usd")), + ratioPct5: createMetricPattern4(client, _m(acc, "pct5")), + ratioPct5Usd: createMetricPattern4(client, _m(acc, "pct5_usd")), + ratioPct95: createMetricPattern4(client, _m(acc, "pct95")), + ratioPct95Usd: createMetricPattern4(client, _m(acc, "pct95_usd")), + ratioPct98: createMetricPattern4(client, _m(acc, "pct98")), + ratioPct98Usd: createMetricPattern4(client, _m(acc, "pct98_usd")), + ratioPct99: createMetricPattern4(client, _m(acc, "pct99")), + ratioPct99Usd: createMetricPattern4(client, _m(acc, "pct99_usd")), + ratioSd: createRatio1ySdPattern(client, acc), + }; +} + /** * @typedef {Object} RelativePattern5 * @property {MetricPattern1} negUnrealizedLossRelToMarketCap @@ -3338,17 +3338,17 @@ function createBitcoinPattern(client, acc) { */ function createClassAveragePricePattern(client, acc) { return { - _2015: createMetricPattern4(client, _m(acc, "2015_average_price")), - _2016: createMetricPattern4(client, _m(acc, "2016_average_price")), - _2017: createMetricPattern4(client, _m(acc, "2017_average_price")), - _2018: createMetricPattern4(client, _m(acc, "2018_average_price")), - _2019: createMetricPattern4(client, _m(acc, "2019_average_price")), - _2020: createMetricPattern4(client, _m(acc, "2020_average_price")), - _2021: createMetricPattern4(client, _m(acc, "2021_average_price")), - _2022: createMetricPattern4(client, _m(acc, "2022_average_price")), - _2023: createMetricPattern4(client, _m(acc, "2023_average_price")), - _2024: createMetricPattern4(client, _m(acc, "2024_average_price")), - _2025: createMetricPattern4(client, _m(acc, "2025_average_price")), + _2015: createMetricPattern4(client, _m(acc, "2015_returns")), + _2016: createMetricPattern4(client, _m(acc, "2016_returns")), + _2017: createMetricPattern4(client, _m(acc, "2017_returns")), + _2018: createMetricPattern4(client, _m(acc, "2018_returns")), + _2019: createMetricPattern4(client, _m(acc, "2019_returns")), + _2020: createMetricPattern4(client, _m(acc, "2020_returns")), + _2021: createMetricPattern4(client, _m(acc, "2021_returns")), + _2022: createMetricPattern4(client, _m(acc, "2022_returns")), + _2023: createMetricPattern4(client, _m(acc, "2023_returns")), + _2024: createMetricPattern4(client, _m(acc, "2024_returns")), + _2025: createMetricPattern4(client, _m(acc, "2025_returns")), }; } @@ -3689,6 +3689,122 @@ function create_0satsPattern(client, acc) { }; } +/** + * @typedef {Object} _100btcPattern + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * Create a _100btcPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {_100btcPattern} + */ +function create_100btcPattern(client, acc) { + return { + activity: createActivityPattern2(client, acc), + costBasis: createCostBasisPattern(client, acc), + outputs: createOutputsPattern(client, _m(acc, "utxo_count")), + realized: createRealizedPattern(client, acc), + relative: createRelativePattern(client, acc), + supply: createSupplyPattern2(client, _m(acc, "supply")), + unrealized: createUnrealizedPattern(client, 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} _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} UnrealizedPattern * @property {MetricPattern1} negUnrealizedLoss @@ -3733,35 +3849,6 @@ function createUnrealizedPattern(client, acc) { }; } -/** - * @typedef {Object} _100btcPattern - * @property {ActivityPattern2} activity - * @property {CostBasisPattern} costBasis - * @property {OutputsPattern} outputs - * @property {RealizedPattern} realized - * @property {RelativePattern} relative - * @property {SupplyPattern2} supply - * @property {UnrealizedPattern} unrealized - */ - -/** - * Create a _100btcPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {_100btcPattern} - */ -function create_100btcPattern(client, acc) { - return { - activity: createActivityPattern2(client, acc), - costBasis: createCostBasisPattern(client, acc), - outputs: createOutputsPattern(client, _m(acc, "utxo_count")), - realized: createRealizedPattern(client, acc), - relative: createRelativePattern(client, acc), - supply: createSupplyPattern2(client, _m(acc, "supply")), - unrealized: createUnrealizedPattern(client, acc), - }; -} - /** * @typedef {Object} _10yPattern * @property {ActivityPattern2} activity @@ -3791,93 +3878,6 @@ function create_10yPattern(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} _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} _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} ActivityPattern2 * @property {BlockCountPattern} coinblocksDestroyed @@ -3940,6 +3940,27 @@ function createSplitPattern2(client, acc) { }; } +/** + * @typedef {Object} CoinbasePattern2 + * @property {BlockCountPattern} bitcoin + * @property {BlockCountPattern} dollars + * @property {BlockCountPattern} sats + */ + +/** + * Create a CoinbasePattern2 pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {CoinbasePattern2} + */ +function createCoinbasePattern2(client, acc) { + return { + bitcoin: createBlockCountPattern(client, _m(acc, "btc")), + dollars: createBlockCountPattern(client, _m(acc, "usd")), + sats: createBlockCountPattern(client, acc), + }; +} + /** * @typedef {Object} SegwitAdoptionPattern * @property {MetricPattern11} base @@ -3962,44 +3983,23 @@ function createSegwitAdoptionPattern(client, acc) { } /** - * @typedef {Object} CostBasisPattern2 - * @property {MetricPattern1} max - * @property {MetricPattern1} min - * @property {PercentilesPattern} percentiles + * @typedef {Object} CoinbasePattern + * @property {BitcoinPattern} bitcoin + * @property {DollarsPattern} dollars + * @property {DollarsPattern} sats */ /** - * Create a CostBasisPattern2 pattern node + * Create a CoinbasePattern pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {CostBasisPattern2} + * @returns {CoinbasePattern} */ -function createCostBasisPattern2(client, acc) { +function createCoinbasePattern(client, acc) { return { - max: createMetricPattern1(client, _m(acc, "max_cost_basis")), - min: createMetricPattern1(client, _m(acc, "min_cost_basis")), - percentiles: createPercentilesPattern(client, _m(acc, "cost_basis")), - }; -} - -/** - * @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), + bitcoin: createBitcoinPattern(client, _m(acc, "btc")), + dollars: createDollarsPattern(client, _m(acc, "usd")), + sats: createDollarsPattern(client, acc), }; } @@ -4046,44 +4046,63 @@ function create_2015Pattern(client, acc) { } /** - * @typedef {Object} CoinbasePattern - * @property {BitcoinPattern} bitcoin - * @property {DollarsPattern} dollars - * @property {DollarsPattern} sats + * @typedef {Object} CostBasisPattern2 + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles */ /** - * Create a CoinbasePattern pattern node + * Create a CostBasisPattern2 pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {CoinbasePattern} + * @returns {CostBasisPattern2} */ -function createCoinbasePattern(client, acc) { +function createCostBasisPattern2(client, acc) { return { - bitcoin: createBitcoinPattern(client, _m(acc, "btc")), - dollars: createDollarsPattern(client, _m(acc, "usd")), - sats: createDollarsPattern(client, acc), + max: createMetricPattern1(client, _m(acc, "max_cost_basis")), + min: createMetricPattern1(client, _m(acc, "min_cost_basis")), + percentiles: createPercentilesPattern(client, _m(acc, "cost_basis")), }; } /** - * @typedef {Object} CoinbasePattern2 - * @property {BlockCountPattern} bitcoin - * @property {BlockCountPattern} dollars - * @property {BlockCountPattern} sats + * @typedef {Object} ActiveSupplyPattern + * @property {MetricPattern1} bitcoin + * @property {MetricPattern1} dollars + * @property {MetricPattern1} sats */ /** - * Create a CoinbasePattern2 pattern node + * Create a ActiveSupplyPattern pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {CoinbasePattern2} + * @returns {ActiveSupplyPattern} */ -function createCoinbasePattern2(client, acc) { +function createActiveSupplyPattern(client, acc) { return { - bitcoin: createBlockCountPattern(client, _m(acc, "btc")), - dollars: createBlockCountPattern(client, _m(acc, "usd")), - sats: createBlockCountPattern(client, acc), + bitcoin: createMetricPattern1(client, _m(acc, "btc")), + dollars: createMetricPattern1(client, _m(acc, "usd")), + sats: createMetricPattern1(client, acc), + }; +} + +/** + * @typedef {Object} CostBasisPattern + * @property {MetricPattern1} max + * @property {MetricPattern1} min + */ + +/** + * Create a CostBasisPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {CostBasisPattern} + */ +function createCostBasisPattern(client, acc) { + return { + max: createMetricPattern1(client, _m(acc, "max_cost_basis")), + min: createMetricPattern1(client, _m(acc, "min_cost_basis")), }; } @@ -4113,21 +4132,21 @@ function createRelativePattern4(client, acc) { } /** - * @typedef {Object} CostBasisPattern - * @property {MetricPattern1} max - * @property {MetricPattern1} min + * @typedef {Object} SupplyPattern2 + * @property {ActiveSupplyPattern} halved + * @property {ActiveSupplyPattern} total */ /** - * Create a CostBasisPattern pattern node + * Create a SupplyPattern2 pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {CostBasisPattern} + * @returns {SupplyPattern2} */ -function createCostBasisPattern(client, acc) { +function createSupplyPattern2(client, acc) { return { - max: createMetricPattern1(client, _m(acc, "max_cost_basis")), - min: createMetricPattern1(client, _m(acc, "min_cost_basis")), + halved: createActiveSupplyPattern(client, _m(acc, "halved")), + total: createActiveSupplyPattern(client, acc), }; } @@ -4150,43 +4169,24 @@ function create_1dReturns1mSdPattern(client, acc) { }; } -/** - * @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), - }; -} - /** * @template T - * @typedef {Object} SatsPattern - * @property {MetricPattern1} ohlc - * @property {SplitPattern2} split + * @typedef {Object} BitcoinPattern2 + * @property {MetricPattern2} cumulative + * @property {MetricPattern1} sum */ /** - * Create a SatsPattern pattern node + * Create a BitcoinPattern2 pattern node * @template T * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {SatsPattern} + * @returns {BitcoinPattern2} */ -function createSatsPattern(client, acc) { +function createBitcoinPattern2(client, acc) { return { - ohlc: createMetricPattern1(client, _m(acc, "ohlc_sats")), - split: createSplitPattern2(client, _m(acc, "sats")), + cumulative: createMetricPattern2(client, _m(acc, "cumulative")), + sum: createMetricPattern1(client, acc), }; } @@ -4213,39 +4213,22 @@ function createBlockCountPattern(client, acc) { /** * @template T - * @typedef {Object} BitcoinPattern2 - * @property {MetricPattern2} cumulative - * @property {MetricPattern1} sum + * @typedef {Object} SatsPattern + * @property {MetricPattern1} ohlc + * @property {SplitPattern2} split */ /** - * Create a BitcoinPattern2 pattern node + * Create a SatsPattern pattern node * @template T * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {BitcoinPattern2} + * @returns {SatsPattern} */ -function createBitcoinPattern2(client, acc) { +function createSatsPattern(client, acc) { return { - cumulative: createMetricPattern2(client, _m(acc, "cumulative")), - sum: createMetricPattern1(client, acc), - }; -} - -/** - * @typedef {Object} RealizedPriceExtraPattern - * @property {MetricPattern4} ratio - */ - -/** - * Create a RealizedPriceExtraPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {RealizedPriceExtraPattern} - */ -function createRealizedPriceExtraPattern(client, acc) { - return { - ratio: createMetricPattern4(client, acc), + ohlc: createMetricPattern1(client, _m(acc, "ohlc")), + split: createSplitPattern2(client, acc), }; } @@ -4266,6 +4249,23 @@ function createOutputsPattern(client, acc) { }; } +/** + * @typedef {Object} RealizedPriceExtraPattern + * @property {MetricPattern4} ratio + */ + +/** + * Create a RealizedPriceExtraPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {RealizedPriceExtraPattern} + */ +function createRealizedPriceExtraPattern(client, acc) { + return { + ratio: createMetricPattern4(client, acc), + }; +} + // Catalog tree typedefs /** @@ -4451,13 +4451,105 @@ function createOutputsPattern(client, acc) { /** * @typedef {Object} MetricsTree_Cointime_Pricing * @property {MetricPattern1} activePrice - * @property {ActivePriceRatioPattern} activePriceRatio + * @property {MetricsTree_Cointime_Pricing_ActivePriceRatio} activePriceRatio * @property {MetricPattern1} cointimePrice - * @property {ActivePriceRatioPattern} cointimePriceRatio + * @property {MetricsTree_Cointime_Pricing_CointimePriceRatio} cointimePriceRatio * @property {MetricPattern1} trueMarketMean - * @property {ActivePriceRatioPattern} trueMarketMeanRatio + * @property {MetricsTree_Cointime_Pricing_TrueMarketMeanRatio} trueMarketMeanRatio * @property {MetricPattern1} vaultedPrice - * @property {ActivePriceRatioPattern} vaultedPriceRatio + * @property {MetricsTree_Cointime_Pricing_VaultedPriceRatio} vaultedPriceRatio + */ + +/** + * @typedef {Object} MetricsTree_Cointime_Pricing_ActivePriceRatio + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Cointime_Pricing_CointimePriceRatio + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Cointime_Pricing_TrueMarketMeanRatio + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Cointime_Pricing_VaultedPriceRatio + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd */ /** @@ -4517,55 +4609,547 @@ function createOutputsPattern(client, acc) { /** * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange - * @property {_0satsPattern} _0sats - * @property {_0satsPattern} _100btcTo1kBtc - * @property {_0satsPattern} _100kBtcOrMore - * @property {_0satsPattern} _100kSatsTo1mSats - * @property {_0satsPattern} _100satsTo1kSats - * @property {_0satsPattern} _10btcTo100btc - * @property {_0satsPattern} _10kBtcTo100kBtc - * @property {_0satsPattern} _10kSatsTo100kSats - * @property {_0satsPattern} _10mSatsTo1btc - * @property {_0satsPattern} _10satsTo100sats - * @property {_0satsPattern} _1btcTo10btc - * @property {_0satsPattern} _1kBtcTo10kBtc - * @property {_0satsPattern} _1kSatsTo10kSats - * @property {_0satsPattern} _1mSatsTo10mSats - * @property {_0satsPattern} _1satTo10sats + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_0sats} _0sats + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_100btcTo1kBtc} _100btcTo1kBtc + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_100kBtcOrMore} _100kBtcOrMore + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_100kSatsTo1mSats} _100kSatsTo1mSats + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_100satsTo1kSats} _100satsTo1kSats + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_10btcTo100btc} _10btcTo100btc + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_10kBtcTo100kBtc} _10kBtcTo100kBtc + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_10kSatsTo100kSats} _10kSatsTo100kSats + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_10mSatsTo1btc} _10mSatsTo1btc + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_10satsTo100sats} _10satsTo100sats + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_1btcTo10btc} _1btcTo10btc + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_1kBtcTo10kBtc} _1kBtcTo10kBtc + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_1kSatsTo10kSats} _1kSatsTo10kSats + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_1mSatsTo10mSats} _1mSatsTo10mSats + * @property {MetricsTree_Distribution_AddressCohorts_AmountRange_1satTo10sats} _1satTo10sats + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_0sats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_100btcTo1kBtc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_100kBtcOrMore + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_100kSatsTo1mSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_100satsTo1kSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_10btcTo100btc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_10kBtcTo100kBtc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_10kSatsTo100kSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_10mSatsTo1btc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_10satsTo100sats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_1btcTo10btc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_1kBtcTo10kBtc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_1kSatsTo10kSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_1mSatsTo10mSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange_1satTo10sats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount - * @property {_0satsPattern} _100btc - * @property {_0satsPattern} _100kSats - * @property {_0satsPattern} _100sats - * @property {_0satsPattern} _10btc - * @property {_0satsPattern} _10kBtc - * @property {_0satsPattern} _10kSats - * @property {_0satsPattern} _10mSats - * @property {_0satsPattern} _10sats - * @property {_0satsPattern} _1btc - * @property {_0satsPattern} _1kBtc - * @property {_0satsPattern} _1kSats - * @property {_0satsPattern} _1mSats - * @property {_0satsPattern} _1sat + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_100btc} _100btc + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_100kSats} _100kSats + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_100sats} _100sats + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_10btc} _10btc + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_10kBtc} _10kBtc + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_10kSats} _10kSats + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_10mSats} _10mSats + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_10sats} _10sats + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_1btc} _1btc + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_1kBtc} _1kBtc + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_1kSats} _1kSats + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_1mSats} _1mSats + * @property {MetricsTree_Distribution_AddressCohorts_GeAmount_1sat} _1sat + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_100btc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_100kSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_100sats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_10btc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_10kBtc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_10kSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_10mSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_10sats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_1btc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_1kBtc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_1kSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_1mSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount_1sat + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount - * @property {_0satsPattern} _100btc - * @property {_0satsPattern} _100kBtc - * @property {_0satsPattern} _100kSats - * @property {_0satsPattern} _100sats - * @property {_0satsPattern} _10btc - * @property {_0satsPattern} _10kBtc - * @property {_0satsPattern} _10kSats - * @property {_0satsPattern} _10mSats - * @property {_0satsPattern} _10sats - * @property {_0satsPattern} _1btc - * @property {_0satsPattern} _1kBtc - * @property {_0satsPattern} _1kSats - * @property {_0satsPattern} _1mSats + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_100btc} _100btc + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_100kBtc} _100kBtc + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_100kSats} _100kSats + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_100sats} _100sats + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_10btc} _10btc + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_10kBtc} _10kBtc + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_10kSats} _10kSats + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_10mSats} _10mSats + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_10sats} _10sats + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_1btc} _1btc + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_1kBtc} _1kBtc + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_1kSats} _1kSats + * @property {MetricsTree_Distribution_AddressCohorts_LtAmount_1mSats} _1mSats + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_100btc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_100kBtc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_100kSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_100sats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_10btc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_10kBtc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_10kSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_10mSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_10sats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_1btc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_1kBtc + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_1kSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount_1mSats + * @property {ActivityPattern2} activity + * @property {MetricPattern1} addrCount + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** @@ -4603,27 +5187,405 @@ function createOutputsPattern(client, acc) { /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange - * @property {_10yTo12yPattern} _10yTo12y - * @property {_10yTo12yPattern} _12yTo15y - * @property {_10yTo12yPattern} _1dTo1w - * @property {_10yTo12yPattern} _1hTo1d - * @property {_10yTo12yPattern} _1mTo2m - * @property {_10yTo12yPattern} _1wTo1m - * @property {_10yTo12yPattern} _1yTo2y - * @property {_10yTo12yPattern} _2mTo3m - * @property {_10yTo12yPattern} _2yTo3y - * @property {_10yTo12yPattern} _3mTo4m - * @property {_10yTo12yPattern} _3yTo4y - * @property {_10yTo12yPattern} _4mTo5m - * @property {_10yTo12yPattern} _4yTo5y - * @property {_10yTo12yPattern} _5mTo6m - * @property {_10yTo12yPattern} _5yTo6y - * @property {_10yTo12yPattern} _6mTo1y - * @property {_10yTo12yPattern} _6yTo7y - * @property {_10yTo12yPattern} _7yTo8y - * @property {_10yTo12yPattern} _8yTo10y - * @property {_10yTo12yPattern} from15y - * @property {_10yTo12yPattern} upTo1h + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y} _10yTo12y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y} _12yTo15y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w} _1dTo1w + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d} _1hTo1d + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m} _1mTo2m + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m} _1wTo1m + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y} _1yTo2y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m} _2mTo3m + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y} _2yTo3y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m} _3mTo4m + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y} _3yTo4y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m} _4mTo5m + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y} _4yTo5y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m} _5mTo6m + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y} _5yTo6y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y} _6mTo1y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y} _6yTo7y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y} _7yTo8y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y} _8yTo10y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y} from15y + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h} upTo1h + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h + * @property {ActivityPattern2} activity + * @property {MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h_CostBasis} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern2} realized + * @property {RelativePattern2} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles */ /** @@ -4631,10 +5593,10 @@ function createOutputsPattern(client, acc) { * @property {MetricsTree_Distribution_UtxoCohorts_All_Activity} activity * @property {MetricsTree_Distribution_UtxoCohorts_All_CostBasis} costBasis * @property {OutputsPattern} outputs - * @property {RealizedPattern3} realized + * @property {MetricsTree_Distribution_UtxoCohorts_All_Realized} realized * @property {MetricsTree_Distribution_UtxoCohorts_All_Relative} relative * @property {SupplyPattern2} supply - * @property {UnrealizedPattern} unrealized + * @property {MetricsTree_Distribution_UtxoCohorts_All_Unrealized} unrealized */ /** @@ -4653,6 +5615,65 @@ function createOutputsPattern(client, acc) { * @property {PercentilesPattern} percentiles */ +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_All_Realized + * @property {MetricPattern6} adjustedSopr + * @property {MetricPattern6} adjustedSopr30dEma + * @property {MetricPattern6} adjustedSopr7dEma + * @property {MetricPattern1} adjustedValueCreated + * @property {MetricPattern1} adjustedValueDestroyed + * @property {MetricPattern4} mvrv + * @property {BitcoinPattern2} negRealizedLoss + * @property {BlockCountPattern} netRealizedPnl + * @property {MetricPattern4} netRealizedPnlCumulative30dDelta + * @property {MetricPattern4} netRealizedPnlCumulative30dDeltaRelToMarketCap + * @property {MetricPattern4} netRealizedPnlCumulative30dDeltaRelToRealizedCap + * @property {BlockCountPattern} netRealizedPnlRelToRealizedCap + * @property {MetricPattern1} realizedCap + * @property {MetricPattern4} realizedCap30dDelta + * @property {MetricPattern1} realizedCapRelToOwnMarketCap + * @property {BlockCountPattern} realizedLoss + * @property {BlockCountPattern} realizedLossRelToRealizedCap + * @property {MetricPattern1} realizedPrice + * @property {MetricsTree_Distribution_UtxoCohorts_All_Realized_RealizedPriceExtra} realizedPriceExtra + * @property {BlockCountPattern} realizedProfit + * @property {BlockCountPattern} realizedProfitRelToRealizedCap + * @property {MetricPattern6} realizedProfitToLossRatio + * @property {MetricPattern1} realizedValue + * @property {MetricPattern6} sellSideRiskRatio + * @property {MetricPattern6} sellSideRiskRatio30dEma + * @property {MetricPattern6} sellSideRiskRatio7dEma + * @property {MetricPattern6} sopr + * @property {MetricPattern6} sopr30dEma + * @property {MetricPattern6} sopr7dEma + * @property {MetricPattern1} totalRealizedPnl + * @property {MetricPattern1} valueCreated + * @property {MetricPattern1} valueDestroyed + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_All_Realized_RealizedPriceExtra + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_All_Relative * @property {MetricPattern1} negUnrealizedLossRelToOwnTotalUnrealizedPnl @@ -4663,110 +5684,1023 @@ function createOutputsPattern(client, acc) { * @property {MetricPattern1} unrealizedProfitRelToOwnTotalUnrealizedPnl */ +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_All_Unrealized + * @property {MetricPattern1} negUnrealizedLoss + * @property {MetricPattern1} netUnrealizedPnl + * @property {ActiveSupplyPattern} supplyInLoss + * @property {ActiveSupplyPattern} supplyInProfit + * @property {MetricPattern1} totalUnrealizedPnl + * @property {MetricPattern1} unrealizedLoss + * @property {MetricPattern1} unrealizedProfit + */ + /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange - * @property {_0satsPattern2} _0sats - * @property {_0satsPattern2} _100btcTo1kBtc - * @property {_0satsPattern2} _100kBtcOrMore - * @property {_0satsPattern2} _100kSatsTo1mSats - * @property {_0satsPattern2} _100satsTo1kSats - * @property {_0satsPattern2} _10btcTo100btc - * @property {_0satsPattern2} _10kBtcTo100kBtc - * @property {_0satsPattern2} _10kSatsTo100kSats - * @property {_0satsPattern2} _10mSatsTo1btc - * @property {_0satsPattern2} _10satsTo100sats - * @property {_0satsPattern2} _1btcTo10btc - * @property {_0satsPattern2} _1kBtcTo10kBtc - * @property {_0satsPattern2} _1kSatsTo10kSats - * @property {_0satsPattern2} _1mSatsTo10mSats - * @property {_0satsPattern2} _1satTo10sats + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_0sats} _0sats + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_100btcTo1kBtc} _100btcTo1kBtc + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_100kBtcOrMore} _100kBtcOrMore + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_100kSatsTo1mSats} _100kSatsTo1mSats + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_100satsTo1kSats} _100satsTo1kSats + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_10btcTo100btc} _10btcTo100btc + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_10kBtcTo100kBtc} _10kBtcTo100kBtc + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_10kSatsTo100kSats} _10kSatsTo100kSats + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_10mSatsTo1btc} _10mSatsTo1btc + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_10satsTo100sats} _10satsTo100sats + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_1btcTo10btc} _1btcTo10btc + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_1kBtcTo10kBtc} _1kBtcTo10kBtc + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_1kSatsTo10kSats} _1kSatsTo10kSats + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_1mSatsTo10mSats} _1mSatsTo10mSats + * @property {MetricsTree_Distribution_UtxoCohorts_AmountRange_1satTo10sats} _1satTo10sats + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_0sats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_100btcTo1kBtc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_100kBtcOrMore + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_100kSatsTo1mSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_100satsTo1kSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_10btcTo100btc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_10kBtcTo100kBtc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_10kSatsTo100kSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_10mSatsTo1btc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_10satsTo100sats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_1btcTo10btc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_1kBtcTo10kBtc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_1kSatsTo10kSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_1mSatsTo10mSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AmountRange_1satTo10sats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Epoch - * @property {_0satsPattern2} _0 - * @property {_0satsPattern2} _1 - * @property {_0satsPattern2} _2 - * @property {_0satsPattern2} _3 - * @property {_0satsPattern2} _4 + * @property {MetricsTree_Distribution_UtxoCohorts_Epoch_0} _0 + * @property {MetricsTree_Distribution_UtxoCohorts_Epoch_1} _1 + * @property {MetricsTree_Distribution_UtxoCohorts_Epoch_2} _2 + * @property {MetricsTree_Distribution_UtxoCohorts_Epoch_3} _3 + * @property {MetricsTree_Distribution_UtxoCohorts_Epoch_4} _4 + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Epoch_0 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Epoch_1 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Epoch_2 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Epoch_3 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Epoch_4 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount - * @property {_100btcPattern} _100btc - * @property {_100btcPattern} _100kSats - * @property {_100btcPattern} _100sats - * @property {_100btcPattern} _10btc - * @property {_100btcPattern} _10kBtc - * @property {_100btcPattern} _10kSats - * @property {_100btcPattern} _10mSats - * @property {_100btcPattern} _10sats - * @property {_100btcPattern} _1btc - * @property {_100btcPattern} _1kBtc - * @property {_100btcPattern} _1kSats - * @property {_100btcPattern} _1mSats - * @property {_100btcPattern} _1sat + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_100btc} _100btc + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_100kSats} _100kSats + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_100sats} _100sats + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_10btc} _10btc + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_10kBtc} _10kBtc + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_10kSats} _10kSats + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_10mSats} _10mSats + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_10sats} _10sats + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_1btc} _1btc + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_1kBtc} _1kBtc + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_1kSats} _1kSats + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_1mSats} _1mSats + * @property {MetricsTree_Distribution_UtxoCohorts_GeAmount_1sat} _1sat + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_100btc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_100kSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_100sats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_10btc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_10kBtc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_10kSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_10mSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_10sats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_1btc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_1kBtc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_1kSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_1mSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount_1sat + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount - * @property {_100btcPattern} _100btc - * @property {_100btcPattern} _100kBtc - * @property {_100btcPattern} _100kSats - * @property {_100btcPattern} _100sats - * @property {_100btcPattern} _10btc - * @property {_100btcPattern} _10kBtc - * @property {_100btcPattern} _10kSats - * @property {_100btcPattern} _10mSats - * @property {_100btcPattern} _10sats - * @property {_100btcPattern} _1btc - * @property {_100btcPattern} _1kBtc - * @property {_100btcPattern} _1kSats - * @property {_100btcPattern} _1mSats + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_100btc} _100btc + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_100kBtc} _100kBtc + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_100kSats} _100kSats + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_100sats} _100sats + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_10btc} _10btc + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_10kBtc} _10kBtc + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_10kSats} _10kSats + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_10mSats} _10mSats + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_10sats} _10sats + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_1btc} _1btc + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_1kBtc} _1kBtc + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_1kSats} _1kSats + * @property {MetricsTree_Distribution_UtxoCohorts_LtAmount_1mSats} _1mSats + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_100btc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_100kBtc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_100kSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_100sats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_10btc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_10kBtc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_10kSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_10mSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_10sats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_1btc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_1kBtc + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_1kSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount_1mSats + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge - * @property {_10yPattern} _10y - * @property {_10yPattern} _12y - * @property {_10yPattern} _15y - * @property {_10yPattern} _1m - * @property {_10yPattern} _1w - * @property {_10yPattern} _1y - * @property {_10yPattern} _2m - * @property {_10yPattern} _2y - * @property {_10yPattern} _3m - * @property {_10yPattern} _3y - * @property {_10yPattern} _4m - * @property {_10yPattern} _4y - * @property {_10yPattern} _5m - * @property {_10yPattern} _5y - * @property {_10yPattern} _6m - * @property {_10yPattern} _6y - * @property {_10yPattern} _7y - * @property {_10yPattern} _8y + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_10y} _10y + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_12y} _12y + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_15y} _15y + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_1m} _1m + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_1w} _1w + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_1y} _1y + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_2m} _2m + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_2y} _2y + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_3m} _3m + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_3y} _3y + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_4m} _4m + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_4y} _4y + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_5m} _5m + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_5y} _5y + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_6m} _6m + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_6y} _6y + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_7y} _7y + * @property {MetricsTree_Distribution_UtxoCohorts_MaxAge_8y} _8y + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_10y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_12y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_15y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_1m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_1w + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_1y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_2m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_2y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_3m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_3y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_4m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_4y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_5m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_5y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_6m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_6y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_7y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge_8y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern4} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge - * @property {_100btcPattern} _10y - * @property {_100btcPattern} _12y - * @property {_100btcPattern} _1d - * @property {_100btcPattern} _1m - * @property {_100btcPattern} _1w - * @property {_100btcPattern} _1y - * @property {_100btcPattern} _2m - * @property {_100btcPattern} _2y - * @property {_100btcPattern} _3m - * @property {_100btcPattern} _3y - * @property {_100btcPattern} _4m - * @property {_100btcPattern} _4y - * @property {_100btcPattern} _5m - * @property {_100btcPattern} _5y - * @property {_100btcPattern} _6m - * @property {_100btcPattern} _6y - * @property {_100btcPattern} _7y - * @property {_100btcPattern} _8y + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_10y} _10y + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_12y} _12y + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_1d} _1d + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_1m} _1m + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_1w} _1w + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_1y} _1y + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_2m} _2m + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_2y} _2y + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_3m} _3m + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_3y} _3y + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_4m} _4m + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_4y} _4y + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_5m} _5m + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_5y} _5y + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_6m} _6m + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_6y} _6y + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_7y} _7y + * @property {MetricsTree_Distribution_UtxoCohorts_MinAge_8y} _8y + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_10y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_12y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_1d + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_1m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_1w + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_1y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_2m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_2y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_3m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_3y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_4m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_4y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_5m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_5y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_6m + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_6y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_7y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge_8y + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** @@ -4778,7 +6712,7 @@ function createOutputsPattern(client, acc) { /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Term_Long * @property {ActivityPattern2} activity - * @property {CostBasisPattern2} costBasis + * @property {MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis} costBasis * @property {OutputsPattern} outputs * @property {RealizedPattern2} realized * @property {RelativePattern5} relative @@ -4786,10 +6720,17 @@ function createOutputsPattern(client, acc) { * @property {UnrealizedPattern} unrealized */ +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Term_Short * @property {ActivityPattern2} activity - * @property {CostBasisPattern2} costBasis + * @property {MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis} costBasis * @property {OutputsPattern} outputs * @property {RealizedPattern3} realized * @property {RelativePattern5} relative @@ -4797,41 +6738,367 @@ function createOutputsPattern(client, acc) { * @property {UnrealizedPattern} unrealized */ +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis + * @property {MetricPattern1} max + * @property {MetricPattern1} min + * @property {PercentilesPattern} percentiles + */ + /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type - * @property {_0satsPattern2} empty - * @property {_0satsPattern2} p2a - * @property {_0satsPattern2} p2ms - * @property {_0satsPattern2} p2pk33 - * @property {_0satsPattern2} p2pk65 - * @property {_0satsPattern2} p2pkh - * @property {_0satsPattern2} p2sh - * @property {_0satsPattern2} p2tr - * @property {_0satsPattern2} p2wpkh - * @property {_0satsPattern2} p2wsh - * @property {_0satsPattern2} unknown + * @property {MetricsTree_Distribution_UtxoCohorts_Type_Empty} empty + * @property {MetricsTree_Distribution_UtxoCohorts_Type_P2a} p2a + * @property {MetricsTree_Distribution_UtxoCohorts_Type_P2ms} p2ms + * @property {MetricsTree_Distribution_UtxoCohorts_Type_P2pk33} p2pk33 + * @property {MetricsTree_Distribution_UtxoCohorts_Type_P2pk65} p2pk65 + * @property {MetricsTree_Distribution_UtxoCohorts_Type_P2pkh} p2pkh + * @property {MetricsTree_Distribution_UtxoCohorts_Type_P2sh} p2sh + * @property {MetricsTree_Distribution_UtxoCohorts_Type_P2tr} p2tr + * @property {MetricsTree_Distribution_UtxoCohorts_Type_P2wpkh} p2wpkh + * @property {MetricsTree_Distribution_UtxoCohorts_Type_P2wsh} p2wsh + * @property {MetricsTree_Distribution_UtxoCohorts_Type_Unknown} unknown + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type_Empty + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type_P2a + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type_P2ms + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type_P2pk33 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type_P2pk65 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type_P2pkh + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type_P2sh + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type_P2tr + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type_P2wpkh + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type_P2wsh + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Type_Unknown + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year - * @property {_0satsPattern2} _2009 - * @property {_0satsPattern2} _2010 - * @property {_0satsPattern2} _2011 - * @property {_0satsPattern2} _2012 - * @property {_0satsPattern2} _2013 - * @property {_0satsPattern2} _2014 - * @property {_0satsPattern2} _2015 - * @property {_0satsPattern2} _2016 - * @property {_0satsPattern2} _2017 - * @property {_0satsPattern2} _2018 - * @property {_0satsPattern2} _2019 - * @property {_0satsPattern2} _2020 - * @property {_0satsPattern2} _2021 - * @property {_0satsPattern2} _2022 - * @property {_0satsPattern2} _2023 - * @property {_0satsPattern2} _2024 - * @property {_0satsPattern2} _2025 - * @property {_0satsPattern2} _2026 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2009} _2009 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2010} _2010 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2011} _2011 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2012} _2012 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2013} _2013 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2014} _2014 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2015} _2015 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2016} _2016 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2017} _2017 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2018} _2018 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2019} _2019 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2020} _2020 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2021} _2021 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2022} _2022 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2023} _2023 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2024} _2024 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2025} _2025 + * @property {MetricsTree_Distribution_UtxoCohorts_Year_2026} _2026 + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2009 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2010 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2011 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2012 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2013 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2014 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2015 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2016 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2017 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2018 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2019 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2020 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2021 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2022 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2023 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2024 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2025 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized + */ + +/** + * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year_2026 + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern4} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** @@ -5070,7 +7337,7 @@ function createOutputsPattern(client, acc) { /** * @typedef {Object} MetricsTree_Market_Dca - * @property {ClassAveragePricePattern} classAveragePrice + * @property {MetricsTree_Market_Dca_ClassAveragePrice} classAveragePrice * @property {ClassAveragePricePattern} classReturns * @property {MetricsTree_Market_Dca_ClassStack} classStack * @property {PeriodAveragePricePattern} periodAveragePrice @@ -5080,6 +7347,21 @@ function createOutputsPattern(client, acc) { * @property {PeriodLumpSumStackPattern} periodStack */ +/** + * @typedef {Object} MetricsTree_Market_Dca_ClassAveragePrice + * @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 + */ + /** * @typedef {Object} MetricsTree_Market_Dca_ClassStack * @property {_2015Pattern} _2015 @@ -5120,41 +7402,809 @@ function createOutputsPattern(client, acc) { /** * @typedef {Object} MetricsTree_Market_MovingAverage - * @property {Price111dSmaPattern} price111dSma - * @property {Price111dSmaPattern} price12dEma - * @property {Price111dSmaPattern} price13dEma - * @property {Price111dSmaPattern} price13dSma - * @property {Price111dSmaPattern} price144dEma - * @property {Price111dSmaPattern} price144dSma - * @property {Price111dSmaPattern} price1mEma - * @property {Price111dSmaPattern} price1mSma - * @property {Price111dSmaPattern} price1wEma - * @property {Price111dSmaPattern} price1wSma - * @property {Price111dSmaPattern} price1yEma - * @property {Price111dSmaPattern} price1ySma - * @property {Price111dSmaPattern} price200dEma - * @property {Price111dSmaPattern} price200dSma + * @property {MetricsTree_Market_MovingAverage_Price111dSma} price111dSma + * @property {MetricsTree_Market_MovingAverage_Price12dEma} price12dEma + * @property {MetricsTree_Market_MovingAverage_Price13dEma} price13dEma + * @property {MetricsTree_Market_MovingAverage_Price13dSma} price13dSma + * @property {MetricsTree_Market_MovingAverage_Price144dEma} price144dEma + * @property {MetricsTree_Market_MovingAverage_Price144dSma} price144dSma + * @property {MetricsTree_Market_MovingAverage_Price1mEma} price1mEma + * @property {MetricsTree_Market_MovingAverage_Price1mSma} price1mSma + * @property {MetricsTree_Market_MovingAverage_Price1wEma} price1wEma + * @property {MetricsTree_Market_MovingAverage_Price1wSma} price1wSma + * @property {MetricsTree_Market_MovingAverage_Price1yEma} price1yEma + * @property {MetricsTree_Market_MovingAverage_Price1ySma} price1ySma + * @property {MetricsTree_Market_MovingAverage_Price200dEma} price200dEma + * @property {MetricsTree_Market_MovingAverage_Price200dSma} price200dSma * @property {MetricPattern4} price200dSmaX08 * @property {MetricPattern4} price200dSmaX24 - * @property {Price111dSmaPattern} price200wEma - * @property {Price111dSmaPattern} price200wSma - * @property {Price111dSmaPattern} price21dEma - * @property {Price111dSmaPattern} price21dSma - * @property {Price111dSmaPattern} price26dEma - * @property {Price111dSmaPattern} price2yEma - * @property {Price111dSmaPattern} price2ySma - * @property {Price111dSmaPattern} price34dEma - * @property {Price111dSmaPattern} price34dSma - * @property {Price111dSmaPattern} price350dSma + * @property {MetricsTree_Market_MovingAverage_Price200wEma} price200wEma + * @property {MetricsTree_Market_MovingAverage_Price200wSma} price200wSma + * @property {MetricsTree_Market_MovingAverage_Price21dEma} price21dEma + * @property {MetricsTree_Market_MovingAverage_Price21dSma} price21dSma + * @property {MetricsTree_Market_MovingAverage_Price26dEma} price26dEma + * @property {MetricsTree_Market_MovingAverage_Price2yEma} price2yEma + * @property {MetricsTree_Market_MovingAverage_Price2ySma} price2ySma + * @property {MetricsTree_Market_MovingAverage_Price34dEma} price34dEma + * @property {MetricsTree_Market_MovingAverage_Price34dSma} price34dSma + * @property {MetricsTree_Market_MovingAverage_Price350dSma} price350dSma * @property {MetricPattern4} price350dSmaX2 - * @property {Price111dSmaPattern} price4yEma - * @property {Price111dSmaPattern} price4ySma - * @property {Price111dSmaPattern} price55dEma - * @property {Price111dSmaPattern} price55dSma - * @property {Price111dSmaPattern} price89dEma - * @property {Price111dSmaPattern} price89dSma - * @property {Price111dSmaPattern} price8dEma - * @property {Price111dSmaPattern} price8dSma + * @property {MetricsTree_Market_MovingAverage_Price4yEma} price4yEma + * @property {MetricsTree_Market_MovingAverage_Price4ySma} price4ySma + * @property {MetricsTree_Market_MovingAverage_Price55dEma} price55dEma + * @property {MetricsTree_Market_MovingAverage_Price55dSma} price55dSma + * @property {MetricsTree_Market_MovingAverage_Price89dEma} price89dEma + * @property {MetricsTree_Market_MovingAverage_Price89dSma} price89dSma + * @property {MetricsTree_Market_MovingAverage_Price8dEma} price8dEma + * @property {MetricsTree_Market_MovingAverage_Price8dSma} price8dSma + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price111dSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price12dEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price13dEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price13dSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price144dEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price144dSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price1mEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price1mSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price1wEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price1wSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price1yEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price1ySma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price200dEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price200dSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price200wEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price200wSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price21dEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price21dSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price26dEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price2yEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price2ySma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price34dEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price34dSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price350dSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price4yEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price4ySma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price55dEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price55dSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price89dEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price89dSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price8dEma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd + */ + +/** + * @typedef {Object} MetricsTree_Market_MovingAverage_Price8dSma + * @property {MetricPattern4} price + * @property {MetricPattern4} ratio + * @property {MetricPattern4} ratio1mSma + * @property {MetricPattern4} ratio1wSma + * @property {Ratio1ySdPattern} ratio1ySd + * @property {Ratio1ySdPattern} ratio2ySd + * @property {Ratio1ySdPattern} ratio4ySd + * @property {MetricPattern4} ratioPct1 + * @property {MetricPattern4} ratioPct1Usd + * @property {MetricPattern4} ratioPct2 + * @property {MetricPattern4} ratioPct2Usd + * @property {MetricPattern4} ratioPct5 + * @property {MetricPattern4} ratioPct5Usd + * @property {MetricPattern4} ratioPct95 + * @property {MetricPattern4} ratioPct95Usd + * @property {MetricPattern4} ratioPct98 + * @property {MetricPattern4} ratioPct98Usd + * @property {MetricPattern4} ratioPct99 + * @property {MetricPattern4} ratioPct99Usd + * @property {Ratio1ySdPattern} ratioSd */ /** @@ -5415,8 +8465,8 @@ function createOutputsPattern(client, acc) { * @typedef {Object} MetricsTree_Price * @property {MetricsTree_Price_Cents} cents * @property {MetricsTree_Price_Oracle} oracle - * @property {SatsPattern} sats - * @property {SatsPattern} usd + * @property {MetricsTree_Price_Sats} sats + * @property {MetricsTree_Price_Usd} usd */ /** @@ -5441,6 +8491,18 @@ function createOutputsPattern(client, acc) { * @property {MetricPattern6} txCount */ +/** + * @typedef {Object} MetricsTree_Price_Sats + * @property {MetricPattern1} ohlc + * @property {SplitPattern2} split + */ + +/** + * @typedef {Object} MetricsTree_Price_Usd + * @property {MetricPattern1} ohlc + * @property {SplitPattern2} split + */ + /** * @typedef {Object} MetricsTree_Scripts * @property {MetricsTree_Scripts_Count} count @@ -6676,25 +9738,219 @@ class BrkClient extends BrkClientBase { }, pricing: { activePrice: createMetricPattern1(this, "active_price"), - activePriceRatio: createActivePriceRatioPattern( - this, - "active_price_ratio", - ), + activePriceRatio: { + ratio: createMetricPattern4(this, "active_price_ratio"), + ratio1mSma: createMetricPattern4(this, "active_price_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "active_price_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "active_price_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "active_price_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "active_price_ratio_4y"), + ratioPct1: createMetricPattern4(this, "active_price_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "active_price_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "active_price_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "active_price_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "active_price_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "active_price_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "active_price_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "active_price_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "active_price_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "active_price_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "active_price_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "active_price_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "active_price_ratio"), + }, cointimePrice: createMetricPattern1(this, "cointime_price"), - cointimePriceRatio: createActivePriceRatioPattern( - this, - "cointime_price_ratio", - ), + cointimePriceRatio: { + ratio: createMetricPattern4(this, "cointime_price_ratio"), + ratio1mSma: createMetricPattern4( + this, + "cointime_price_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "cointime_price_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "cointime_price_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "cointime_price_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "cointime_price_ratio_4y"), + ratioPct1: createMetricPattern4(this, "cointime_price_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "cointime_price_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "cointime_price_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "cointime_price_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "cointime_price_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "cointime_price_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4( + this, + "cointime_price_ratio_pct95", + ), + ratioPct95Usd: createMetricPattern4( + this, + "cointime_price_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4( + this, + "cointime_price_ratio_pct98", + ), + ratioPct98Usd: createMetricPattern4( + this, + "cointime_price_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4( + this, + "cointime_price_ratio_pct99", + ), + ratioPct99Usd: createMetricPattern4( + this, + "cointime_price_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "cointime_price_ratio"), + }, trueMarketMean: createMetricPattern1(this, "true_market_mean"), - trueMarketMeanRatio: createActivePriceRatioPattern( - this, - "true_market_mean_ratio", - ), + trueMarketMeanRatio: { + ratio: createMetricPattern4(this, "true_market_mean_ratio"), + ratio1mSma: createMetricPattern4( + this, + "true_market_mean_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "true_market_mean_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern( + this, + "true_market_mean_ratio_1y", + ), + ratio2ySd: createRatio1ySdPattern( + this, + "true_market_mean_ratio_2y", + ), + ratio4ySd: createRatio1ySdPattern( + this, + "true_market_mean_ratio_4y", + ), + ratioPct1: createMetricPattern4( + this, + "true_market_mean_ratio_pct1", + ), + ratioPct1Usd: createMetricPattern4( + this, + "true_market_mean_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4( + this, + "true_market_mean_ratio_pct2", + ), + ratioPct2Usd: createMetricPattern4( + this, + "true_market_mean_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4( + this, + "true_market_mean_ratio_pct5", + ), + ratioPct5Usd: createMetricPattern4( + this, + "true_market_mean_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4( + this, + "true_market_mean_ratio_pct95", + ), + ratioPct95Usd: createMetricPattern4( + this, + "true_market_mean_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4( + this, + "true_market_mean_ratio_pct98", + ), + ratioPct98Usd: createMetricPattern4( + this, + "true_market_mean_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4( + this, + "true_market_mean_ratio_pct99", + ), + ratioPct99Usd: createMetricPattern4( + this, + "true_market_mean_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "true_market_mean_ratio"), + }, vaultedPrice: createMetricPattern1(this, "vaulted_price"), - vaultedPriceRatio: createActivePriceRatioPattern( - this, - "vaulted_price_ratio", - ), + vaultedPriceRatio: { + ratio: createMetricPattern4(this, "vaulted_price_ratio"), + ratio1mSma: createMetricPattern4( + this, + "vaulted_price_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "vaulted_price_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "vaulted_price_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "vaulted_price_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "vaulted_price_ratio_4y"), + ratioPct1: createMetricPattern4(this, "vaulted_price_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "vaulted_price_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "vaulted_price_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "vaulted_price_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "vaulted_price_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "vaulted_price_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "vaulted_price_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "vaulted_price_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "vaulted_price_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "vaulted_price_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "vaulted_price_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "vaulted_price_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "vaulted_price_ratio"), + }, }, supply: { activeSupply: createActiveSupplyPattern(this, "active_supply"), @@ -6739,90 +9995,912 @@ class BrkClient extends BrkClientBase { addrCount: createAddrCountPattern(this, "addr_count"), addressCohorts: { amountRange: { - _0sats: create_0satsPattern(this, "addrs_with_0sats"), - _100btcTo1kBtc: create_0satsPattern( - this, - "addrs_above_100btc_under_1k_btc", - ), - _100kBtcOrMore: create_0satsPattern(this, "addrs_above_100k_btc"), - _100kSatsTo1mSats: create_0satsPattern( - this, - "addrs_above_100k_sats_under_1m_sats", - ), - _100satsTo1kSats: create_0satsPattern( - this, - "addrs_above_100sats_under_1k_sats", - ), - _10btcTo100btc: create_0satsPattern( - this, - "addrs_above_10btc_under_100btc", - ), - _10kBtcTo100kBtc: create_0satsPattern( - this, - "addrs_above_10k_btc_under_100k_btc", - ), - _10kSatsTo100kSats: create_0satsPattern( - this, - "addrs_above_10k_sats_under_100k_sats", - ), - _10mSatsTo1btc: create_0satsPattern( - this, - "addrs_above_10m_sats_under_1btc", - ), - _10satsTo100sats: create_0satsPattern( - this, - "addrs_above_10sats_under_100sats", - ), - _1btcTo10btc: create_0satsPattern( - this, - "addrs_above_1btc_under_10btc", - ), - _1kBtcTo10kBtc: create_0satsPattern( - this, - "addrs_above_1k_btc_under_10k_btc", - ), - _1kSatsTo10kSats: create_0satsPattern( - this, - "addrs_above_1k_sats_under_10k_sats", - ), - _1mSatsTo10mSats: create_0satsPattern( - this, - "addrs_above_1m_sats_under_10m_sats", - ), - _1satTo10sats: create_0satsPattern( - this, - "addrs_above_1sat_under_10sats", - ), + _0sats: { + activity: createActivityPattern2(this, "addrs_with_0sats"), + addrCount: createMetricPattern1( + this, + "addrs_with_0sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_with_0sats"), + outputs: createOutputsPattern( + this, + "addrs_with_0sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_with_0sats"), + relative: createRelativePattern(this, "addrs_with_0sats"), + supply: createSupplyPattern2(this, "addrs_with_0sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_with_0sats"), + }, + _100btcTo1kBtc: { + activity: createActivityPattern2( + this, + "addrs_above_100btc_under_1k_btc", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_100btc_under_1k_btc_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_100btc_under_1k_btc", + ), + outputs: createOutputsPattern( + this, + "addrs_above_100btc_under_1k_btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_100btc_under_1k_btc", + ), + relative: createRelativePattern( + this, + "addrs_above_100btc_under_1k_btc", + ), + supply: createSupplyPattern2( + this, + "addrs_above_100btc_under_1k_btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_100btc_under_1k_btc", + ), + }, + _100kBtcOrMore: { + activity: createActivityPattern2(this, "addrs_above_100k_btc"), + addrCount: createMetricPattern1( + this, + "addrs_above_100k_btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_100k_btc"), + outputs: createOutputsPattern( + this, + "addrs_above_100k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_100k_btc"), + relative: createRelativePattern(this, "addrs_above_100k_btc"), + supply: createSupplyPattern2(this, "addrs_above_100k_btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_100k_btc"), + }, + _100kSatsTo1mSats: { + activity: createActivityPattern2( + this, + "addrs_above_100k_sats_under_1m_sats", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_100k_sats_under_1m_sats_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_100k_sats_under_1m_sats", + ), + outputs: createOutputsPattern( + this, + "addrs_above_100k_sats_under_1m_sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_100k_sats_under_1m_sats", + ), + relative: createRelativePattern( + this, + "addrs_above_100k_sats_under_1m_sats", + ), + supply: createSupplyPattern2( + this, + "addrs_above_100k_sats_under_1m_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_100k_sats_under_1m_sats", + ), + }, + _100satsTo1kSats: { + activity: createActivityPattern2( + this, + "addrs_above_100sats_under_1k_sats", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_100sats_under_1k_sats_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_100sats_under_1k_sats", + ), + outputs: createOutputsPattern( + this, + "addrs_above_100sats_under_1k_sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_100sats_under_1k_sats", + ), + relative: createRelativePattern( + this, + "addrs_above_100sats_under_1k_sats", + ), + supply: createSupplyPattern2( + this, + "addrs_above_100sats_under_1k_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_100sats_under_1k_sats", + ), + }, + _10btcTo100btc: { + activity: createActivityPattern2( + this, + "addrs_above_10btc_under_100btc", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_10btc_under_100btc_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_10btc_under_100btc", + ), + outputs: createOutputsPattern( + this, + "addrs_above_10btc_under_100btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_10btc_under_100btc", + ), + relative: createRelativePattern( + this, + "addrs_above_10btc_under_100btc", + ), + supply: createSupplyPattern2( + this, + "addrs_above_10btc_under_100btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_10btc_under_100btc", + ), + }, + _10kBtcTo100kBtc: { + activity: createActivityPattern2( + this, + "addrs_above_10k_btc_under_100k_btc", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_10k_btc_under_100k_btc_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_10k_btc_under_100k_btc", + ), + outputs: createOutputsPattern( + this, + "addrs_above_10k_btc_under_100k_btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_10k_btc_under_100k_btc", + ), + relative: createRelativePattern( + this, + "addrs_above_10k_btc_under_100k_btc", + ), + supply: createSupplyPattern2( + this, + "addrs_above_10k_btc_under_100k_btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_10k_btc_under_100k_btc", + ), + }, + _10kSatsTo100kSats: { + activity: createActivityPattern2( + this, + "addrs_above_10k_sats_under_100k_sats", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_10k_sats_under_100k_sats_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_10k_sats_under_100k_sats", + ), + outputs: createOutputsPattern( + this, + "addrs_above_10k_sats_under_100k_sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_10k_sats_under_100k_sats", + ), + relative: createRelativePattern( + this, + "addrs_above_10k_sats_under_100k_sats", + ), + supply: createSupplyPattern2( + this, + "addrs_above_10k_sats_under_100k_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_10k_sats_under_100k_sats", + ), + }, + _10mSatsTo1btc: { + activity: createActivityPattern2( + this, + "addrs_above_10m_sats_under_1btc", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_10m_sats_under_1btc_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_10m_sats_under_1btc", + ), + outputs: createOutputsPattern( + this, + "addrs_above_10m_sats_under_1btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_10m_sats_under_1btc", + ), + relative: createRelativePattern( + this, + "addrs_above_10m_sats_under_1btc", + ), + supply: createSupplyPattern2( + this, + "addrs_above_10m_sats_under_1btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_10m_sats_under_1btc", + ), + }, + _10satsTo100sats: { + activity: createActivityPattern2( + this, + "addrs_above_10sats_under_100sats", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_10sats_under_100sats_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_10sats_under_100sats", + ), + outputs: createOutputsPattern( + this, + "addrs_above_10sats_under_100sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_10sats_under_100sats", + ), + relative: createRelativePattern( + this, + "addrs_above_10sats_under_100sats", + ), + supply: createSupplyPattern2( + this, + "addrs_above_10sats_under_100sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_10sats_under_100sats", + ), + }, + _1btcTo10btc: { + activity: createActivityPattern2( + this, + "addrs_above_1btc_under_10btc", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_1btc_under_10btc_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_1btc_under_10btc", + ), + outputs: createOutputsPattern( + this, + "addrs_above_1btc_under_10btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_1btc_under_10btc", + ), + relative: createRelativePattern( + this, + "addrs_above_1btc_under_10btc", + ), + supply: createSupplyPattern2( + this, + "addrs_above_1btc_under_10btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_1btc_under_10btc", + ), + }, + _1kBtcTo10kBtc: { + activity: createActivityPattern2( + this, + "addrs_above_1k_btc_under_10k_btc", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_1k_btc_under_10k_btc_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_1k_btc_under_10k_btc", + ), + outputs: createOutputsPattern( + this, + "addrs_above_1k_btc_under_10k_btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_1k_btc_under_10k_btc", + ), + relative: createRelativePattern( + this, + "addrs_above_1k_btc_under_10k_btc", + ), + supply: createSupplyPattern2( + this, + "addrs_above_1k_btc_under_10k_btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_1k_btc_under_10k_btc", + ), + }, + _1kSatsTo10kSats: { + activity: createActivityPattern2( + this, + "addrs_above_1k_sats_under_10k_sats", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_1k_sats_under_10k_sats_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_1k_sats_under_10k_sats", + ), + outputs: createOutputsPattern( + this, + "addrs_above_1k_sats_under_10k_sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_1k_sats_under_10k_sats", + ), + relative: createRelativePattern( + this, + "addrs_above_1k_sats_under_10k_sats", + ), + supply: createSupplyPattern2( + this, + "addrs_above_1k_sats_under_10k_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_1k_sats_under_10k_sats", + ), + }, + _1mSatsTo10mSats: { + activity: createActivityPattern2( + this, + "addrs_above_1m_sats_under_10m_sats", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_1m_sats_under_10m_sats_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_1m_sats_under_10m_sats", + ), + outputs: createOutputsPattern( + this, + "addrs_above_1m_sats_under_10m_sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_1m_sats_under_10m_sats", + ), + relative: createRelativePattern( + this, + "addrs_above_1m_sats_under_10m_sats", + ), + supply: createSupplyPattern2( + this, + "addrs_above_1m_sats_under_10m_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_1m_sats_under_10m_sats", + ), + }, + _1satTo10sats: { + activity: createActivityPattern2( + this, + "addrs_above_1sat_under_10sats", + ), + addrCount: createMetricPattern1( + this, + "addrs_above_1sat_under_10sats_addr_count", + ), + costBasis: createCostBasisPattern( + this, + "addrs_above_1sat_under_10sats", + ), + outputs: createOutputsPattern( + this, + "addrs_above_1sat_under_10sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "addrs_above_1sat_under_10sats", + ), + relative: createRelativePattern( + this, + "addrs_above_1sat_under_10sats", + ), + supply: createSupplyPattern2( + this, + "addrs_above_1sat_under_10sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_1sat_under_10sats", + ), + }, }, geAmount: { - _100btc: create_0satsPattern(this, "addrs_above_100btc"), - _100kSats: create_0satsPattern(this, "addrs_above_100k_sats"), - _100sats: create_0satsPattern(this, "addrs_above_100sats"), - _10btc: create_0satsPattern(this, "addrs_above_10btc"), - _10kBtc: create_0satsPattern(this, "addrs_above_10k_btc"), - _10kSats: create_0satsPattern(this, "addrs_above_10k_sats"), - _10mSats: create_0satsPattern(this, "addrs_above_10m_sats"), - _10sats: create_0satsPattern(this, "addrs_above_10sats"), - _1btc: create_0satsPattern(this, "addrs_above_1btc"), - _1kBtc: create_0satsPattern(this, "addrs_above_1k_btc"), - _1kSats: create_0satsPattern(this, "addrs_above_1k_sats"), - _1mSats: create_0satsPattern(this, "addrs_above_1m_sats"), - _1sat: create_0satsPattern(this, "addrs_above_1sat"), + _100btc: { + activity: createActivityPattern2(this, "addrs_above_100btc"), + addrCount: createMetricPattern1( + this, + "addrs_above_100btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_100btc"), + outputs: createOutputsPattern( + this, + "addrs_above_100btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_100btc"), + relative: createRelativePattern(this, "addrs_above_100btc"), + supply: createSupplyPattern2(this, "addrs_above_100btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_100btc"), + }, + _100kSats: { + activity: createActivityPattern2(this, "addrs_above_100k_sats"), + addrCount: createMetricPattern1( + this, + "addrs_above_100k_sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_100k_sats"), + outputs: createOutputsPattern( + this, + "addrs_above_100k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_100k_sats"), + relative: createRelativePattern(this, "addrs_above_100k_sats"), + supply: createSupplyPattern2( + this, + "addrs_above_100k_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_above_100k_sats", + ), + }, + _100sats: { + activity: createActivityPattern2(this, "addrs_above_100sats"), + addrCount: createMetricPattern1( + this, + "addrs_above_100sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_100sats"), + outputs: createOutputsPattern( + this, + "addrs_above_100sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_100sats"), + relative: createRelativePattern(this, "addrs_above_100sats"), + supply: createSupplyPattern2(this, "addrs_above_100sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_100sats"), + }, + _10btc: { + activity: createActivityPattern2(this, "addrs_above_10btc"), + addrCount: createMetricPattern1( + this, + "addrs_above_10btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_10btc"), + outputs: createOutputsPattern( + this, + "addrs_above_10btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_10btc"), + relative: createRelativePattern(this, "addrs_above_10btc"), + supply: createSupplyPattern2(this, "addrs_above_10btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_10btc"), + }, + _10kBtc: { + activity: createActivityPattern2(this, "addrs_above_10k_btc"), + addrCount: createMetricPattern1( + this, + "addrs_above_10k_btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_10k_btc"), + outputs: createOutputsPattern( + this, + "addrs_above_10k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_10k_btc"), + relative: createRelativePattern(this, "addrs_above_10k_btc"), + supply: createSupplyPattern2(this, "addrs_above_10k_btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_10k_btc"), + }, + _10kSats: { + activity: createActivityPattern2(this, "addrs_above_10k_sats"), + addrCount: createMetricPattern1( + this, + "addrs_above_10k_sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_10k_sats"), + outputs: createOutputsPattern( + this, + "addrs_above_10k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_10k_sats"), + relative: createRelativePattern(this, "addrs_above_10k_sats"), + supply: createSupplyPattern2(this, "addrs_above_10k_sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_10k_sats"), + }, + _10mSats: { + activity: createActivityPattern2(this, "addrs_above_10m_sats"), + addrCount: createMetricPattern1( + this, + "addrs_above_10m_sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_10m_sats"), + outputs: createOutputsPattern( + this, + "addrs_above_10m_sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_10m_sats"), + relative: createRelativePattern(this, "addrs_above_10m_sats"), + supply: createSupplyPattern2(this, "addrs_above_10m_sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_10m_sats"), + }, + _10sats: { + activity: createActivityPattern2(this, "addrs_above_10sats"), + addrCount: createMetricPattern1( + this, + "addrs_above_10sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_10sats"), + outputs: createOutputsPattern( + this, + "addrs_above_10sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_10sats"), + relative: createRelativePattern(this, "addrs_above_10sats"), + supply: createSupplyPattern2(this, "addrs_above_10sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_10sats"), + }, + _1btc: { + activity: createActivityPattern2(this, "addrs_above_1btc"), + addrCount: createMetricPattern1( + this, + "addrs_above_1btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_1btc"), + outputs: createOutputsPattern( + this, + "addrs_above_1btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_1btc"), + relative: createRelativePattern(this, "addrs_above_1btc"), + supply: createSupplyPattern2(this, "addrs_above_1btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_1btc"), + }, + _1kBtc: { + activity: createActivityPattern2(this, "addrs_above_1k_btc"), + addrCount: createMetricPattern1( + this, + "addrs_above_1k_btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_1k_btc"), + outputs: createOutputsPattern( + this, + "addrs_above_1k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_1k_btc"), + relative: createRelativePattern(this, "addrs_above_1k_btc"), + supply: createSupplyPattern2(this, "addrs_above_1k_btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_1k_btc"), + }, + _1kSats: { + activity: createActivityPattern2(this, "addrs_above_1k_sats"), + addrCount: createMetricPattern1( + this, + "addrs_above_1k_sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_1k_sats"), + outputs: createOutputsPattern( + this, + "addrs_above_1k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_1k_sats"), + relative: createRelativePattern(this, "addrs_above_1k_sats"), + supply: createSupplyPattern2(this, "addrs_above_1k_sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_1k_sats"), + }, + _1mSats: { + activity: createActivityPattern2(this, "addrs_above_1m_sats"), + addrCount: createMetricPattern1( + this, + "addrs_above_1m_sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_1m_sats"), + outputs: createOutputsPattern( + this, + "addrs_above_1m_sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_1m_sats"), + relative: createRelativePattern(this, "addrs_above_1m_sats"), + supply: createSupplyPattern2(this, "addrs_above_1m_sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_1m_sats"), + }, + _1sat: { + activity: createActivityPattern2(this, "addrs_above_1sat"), + addrCount: createMetricPattern1( + this, + "addrs_above_1sat_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_above_1sat"), + outputs: createOutputsPattern( + this, + "addrs_above_1sat_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_above_1sat"), + relative: createRelativePattern(this, "addrs_above_1sat"), + supply: createSupplyPattern2(this, "addrs_above_1sat_supply"), + unrealized: createUnrealizedPattern(this, "addrs_above_1sat"), + }, }, ltAmount: { - _100btc: create_0satsPattern(this, "addrs_under_100btc"), - _100kBtc: create_0satsPattern(this, "addrs_under_100k_btc"), - _100kSats: create_0satsPattern(this, "addrs_under_100k_sats"), - _100sats: create_0satsPattern(this, "addrs_under_100sats"), - _10btc: create_0satsPattern(this, "addrs_under_10btc"), - _10kBtc: create_0satsPattern(this, "addrs_under_10k_btc"), - _10kSats: create_0satsPattern(this, "addrs_under_10k_sats"), - _10mSats: create_0satsPattern(this, "addrs_under_10m_sats"), - _10sats: create_0satsPattern(this, "addrs_under_10sats"), - _1btc: create_0satsPattern(this, "addrs_under_1btc"), - _1kBtc: create_0satsPattern(this, "addrs_under_1k_btc"), - _1kSats: create_0satsPattern(this, "addrs_under_1k_sats"), - _1mSats: create_0satsPattern(this, "addrs_under_1m_sats"), + _100btc: { + activity: createActivityPattern2(this, "addrs_under_100btc"), + addrCount: createMetricPattern1( + this, + "addrs_under_100btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_100btc"), + outputs: createOutputsPattern( + this, + "addrs_under_100btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_100btc"), + relative: createRelativePattern(this, "addrs_under_100btc"), + supply: createSupplyPattern2(this, "addrs_under_100btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_100btc"), + }, + _100kBtc: { + activity: createActivityPattern2(this, "addrs_under_100k_btc"), + addrCount: createMetricPattern1( + this, + "addrs_under_100k_btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_100k_btc"), + outputs: createOutputsPattern( + this, + "addrs_under_100k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_100k_btc"), + relative: createRelativePattern(this, "addrs_under_100k_btc"), + supply: createSupplyPattern2(this, "addrs_under_100k_btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_100k_btc"), + }, + _100kSats: { + activity: createActivityPattern2(this, "addrs_under_100k_sats"), + addrCount: createMetricPattern1( + this, + "addrs_under_100k_sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_100k_sats"), + outputs: createOutputsPattern( + this, + "addrs_under_100k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_100k_sats"), + relative: createRelativePattern(this, "addrs_under_100k_sats"), + supply: createSupplyPattern2( + this, + "addrs_under_100k_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "addrs_under_100k_sats", + ), + }, + _100sats: { + activity: createActivityPattern2(this, "addrs_under_100sats"), + addrCount: createMetricPattern1( + this, + "addrs_under_100sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_100sats"), + outputs: createOutputsPattern( + this, + "addrs_under_100sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_100sats"), + relative: createRelativePattern(this, "addrs_under_100sats"), + supply: createSupplyPattern2(this, "addrs_under_100sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_100sats"), + }, + _10btc: { + activity: createActivityPattern2(this, "addrs_under_10btc"), + addrCount: createMetricPattern1( + this, + "addrs_under_10btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_10btc"), + outputs: createOutputsPattern( + this, + "addrs_under_10btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_10btc"), + relative: createRelativePattern(this, "addrs_under_10btc"), + supply: createSupplyPattern2(this, "addrs_under_10btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_10btc"), + }, + _10kBtc: { + activity: createActivityPattern2(this, "addrs_under_10k_btc"), + addrCount: createMetricPattern1( + this, + "addrs_under_10k_btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_10k_btc"), + outputs: createOutputsPattern( + this, + "addrs_under_10k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_10k_btc"), + relative: createRelativePattern(this, "addrs_under_10k_btc"), + supply: createSupplyPattern2(this, "addrs_under_10k_btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_10k_btc"), + }, + _10kSats: { + activity: createActivityPattern2(this, "addrs_under_10k_sats"), + addrCount: createMetricPattern1( + this, + "addrs_under_10k_sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_10k_sats"), + outputs: createOutputsPattern( + this, + "addrs_under_10k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_10k_sats"), + relative: createRelativePattern(this, "addrs_under_10k_sats"), + supply: createSupplyPattern2(this, "addrs_under_10k_sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_10k_sats"), + }, + _10mSats: { + activity: createActivityPattern2(this, "addrs_under_10m_sats"), + addrCount: createMetricPattern1( + this, + "addrs_under_10m_sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_10m_sats"), + outputs: createOutputsPattern( + this, + "addrs_under_10m_sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_10m_sats"), + relative: createRelativePattern(this, "addrs_under_10m_sats"), + supply: createSupplyPattern2(this, "addrs_under_10m_sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_10m_sats"), + }, + _10sats: { + activity: createActivityPattern2(this, "addrs_under_10sats"), + addrCount: createMetricPattern1( + this, + "addrs_under_10sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_10sats"), + outputs: createOutputsPattern( + this, + "addrs_under_10sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_10sats"), + relative: createRelativePattern(this, "addrs_under_10sats"), + supply: createSupplyPattern2(this, "addrs_under_10sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_10sats"), + }, + _1btc: { + activity: createActivityPattern2(this, "addrs_under_1btc"), + addrCount: createMetricPattern1( + this, + "addrs_under_1btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_1btc"), + outputs: createOutputsPattern( + this, + "addrs_under_1btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_1btc"), + relative: createRelativePattern(this, "addrs_under_1btc"), + supply: createSupplyPattern2(this, "addrs_under_1btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_1btc"), + }, + _1kBtc: { + activity: createActivityPattern2(this, "addrs_under_1k_btc"), + addrCount: createMetricPattern1( + this, + "addrs_under_1k_btc_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_1k_btc"), + outputs: createOutputsPattern( + this, + "addrs_under_1k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_1k_btc"), + relative: createRelativePattern(this, "addrs_under_1k_btc"), + supply: createSupplyPattern2(this, "addrs_under_1k_btc_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_1k_btc"), + }, + _1kSats: { + activity: createActivityPattern2(this, "addrs_under_1k_sats"), + addrCount: createMetricPattern1( + this, + "addrs_under_1k_sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_1k_sats"), + outputs: createOutputsPattern( + this, + "addrs_under_1k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_1k_sats"), + relative: createRelativePattern(this, "addrs_under_1k_sats"), + supply: createSupplyPattern2(this, "addrs_under_1k_sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_1k_sats"), + }, + _1mSats: { + activity: createActivityPattern2(this, "addrs_under_1m_sats"), + addrCount: createMetricPattern1( + this, + "addrs_under_1m_sats_addr_count", + ), + costBasis: createCostBasisPattern(this, "addrs_under_1m_sats"), + outputs: createOutputsPattern( + this, + "addrs_under_1m_sats_utxo_count", + ), + realized: createRealizedPattern(this, "addrs_under_1m_sats"), + relative: createRelativePattern(this, "addrs_under_1m_sats"), + supply: createSupplyPattern2(this, "addrs_under_1m_sats_supply"), + unrealized: createUnrealizedPattern(this, "addrs_under_1m_sats"), + }, }, }, addressesData: { @@ -6845,84 +10923,822 @@ class BrkClient extends BrkClientBase { loadedaddressindex: createMetricPattern31(this, "loadedaddressindex"), utxoCohorts: { ageRange: { - _10yTo12y: create_10yTo12yPattern( - this, - "utxos_at_least_10y_up_to_12y_old", - ), - _12yTo15y: create_10yTo12yPattern( - this, - "utxos_at_least_12y_up_to_15y_old", - ), - _1dTo1w: create_10yTo12yPattern( - this, - "utxos_at_least_1d_up_to_1w_old", - ), - _1hTo1d: create_10yTo12yPattern( - this, - "utxos_at_least_1h_up_to_1d_old", - ), - _1mTo2m: create_10yTo12yPattern( - this, - "utxos_at_least_1m_up_to_2m_old", - ), - _1wTo1m: create_10yTo12yPattern( - this, - "utxos_at_least_1w_up_to_1m_old", - ), - _1yTo2y: create_10yTo12yPattern( - this, - "utxos_at_least_1y_up_to_2y_old", - ), - _2mTo3m: create_10yTo12yPattern( - this, - "utxos_at_least_2m_up_to_3m_old", - ), - _2yTo3y: create_10yTo12yPattern( - this, - "utxos_at_least_2y_up_to_3y_old", - ), - _3mTo4m: create_10yTo12yPattern( - this, - "utxos_at_least_3m_up_to_4m_old", - ), - _3yTo4y: create_10yTo12yPattern( - this, - "utxos_at_least_3y_up_to_4y_old", - ), - _4mTo5m: create_10yTo12yPattern( - this, - "utxos_at_least_4m_up_to_5m_old", - ), - _4yTo5y: create_10yTo12yPattern( - this, - "utxos_at_least_4y_up_to_5y_old", - ), - _5mTo6m: create_10yTo12yPattern( - this, - "utxos_at_least_5m_up_to_6m_old", - ), - _5yTo6y: create_10yTo12yPattern( - this, - "utxos_at_least_5y_up_to_6y_old", - ), - _6mTo1y: create_10yTo12yPattern( - this, - "utxos_at_least_6m_up_to_1y_old", - ), - _6yTo7y: create_10yTo12yPattern( - this, - "utxos_at_least_6y_up_to_7y_old", - ), - _7yTo8y: create_10yTo12yPattern( - this, - "utxos_at_least_7y_up_to_8y_old", - ), - _8yTo10y: create_10yTo12yPattern( - this, - "utxos_at_least_8y_up_to_10y_old", - ), - from15y: create_10yTo12yPattern(this, "utxos_at_least_15y_old"), - upTo1h: create_10yTo12yPattern(this, "utxos_up_to_1h_old"), + _10yTo12y: { + activity: createActivityPattern2( + this, + "utxos_at_least_10y_up_to_12y_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_10y_up_to_12y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_10y_up_to_12y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_10y_up_to_12y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_10y_up_to_12y_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_10y_up_to_12y_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_10y_up_to_12y_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_10y_up_to_12y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_10y_up_to_12y_old", + ), + }, + _12yTo15y: { + activity: createActivityPattern2( + this, + "utxos_at_least_12y_up_to_15y_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_12y_up_to_15y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_12y_up_to_15y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_12y_up_to_15y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_12y_up_to_15y_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_12y_up_to_15y_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_12y_up_to_15y_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_12y_up_to_15y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_12y_up_to_15y_old", + ), + }, + _1dTo1w: { + activity: createActivityPattern2( + this, + "utxos_at_least_1d_up_to_1w_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_1d_up_to_1w_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_1d_up_to_1w_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_1d_up_to_1w_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_1d_up_to_1w_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_1d_up_to_1w_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_1d_up_to_1w_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_1d_up_to_1w_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_1d_up_to_1w_old", + ), + }, + _1hTo1d: { + activity: createActivityPattern2( + this, + "utxos_at_least_1h_up_to_1d_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_1h_up_to_1d_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_1h_up_to_1d_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_1h_up_to_1d_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_1h_up_to_1d_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_1h_up_to_1d_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_1h_up_to_1d_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_1h_up_to_1d_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_1h_up_to_1d_old", + ), + }, + _1mTo2m: { + activity: createActivityPattern2( + this, + "utxos_at_least_1m_up_to_2m_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_1m_up_to_2m_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_1m_up_to_2m_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_1m_up_to_2m_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_1m_up_to_2m_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_1m_up_to_2m_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_1m_up_to_2m_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_1m_up_to_2m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_1m_up_to_2m_old", + ), + }, + _1wTo1m: { + activity: createActivityPattern2( + this, + "utxos_at_least_1w_up_to_1m_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_1w_up_to_1m_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_1w_up_to_1m_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_1w_up_to_1m_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_1w_up_to_1m_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_1w_up_to_1m_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_1w_up_to_1m_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_1w_up_to_1m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_1w_up_to_1m_old", + ), + }, + _1yTo2y: { + activity: createActivityPattern2( + this, + "utxos_at_least_1y_up_to_2y_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_1y_up_to_2y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_1y_up_to_2y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_1y_up_to_2y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_1y_up_to_2y_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_1y_up_to_2y_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_1y_up_to_2y_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_1y_up_to_2y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_1y_up_to_2y_old", + ), + }, + _2mTo3m: { + activity: createActivityPattern2( + this, + "utxos_at_least_2m_up_to_3m_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_2m_up_to_3m_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_2m_up_to_3m_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_2m_up_to_3m_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_2m_up_to_3m_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_2m_up_to_3m_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_2m_up_to_3m_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_2m_up_to_3m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_2m_up_to_3m_old", + ), + }, + _2yTo3y: { + activity: createActivityPattern2( + this, + "utxos_at_least_2y_up_to_3y_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_2y_up_to_3y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_2y_up_to_3y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_2y_up_to_3y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_2y_up_to_3y_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_2y_up_to_3y_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_2y_up_to_3y_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_2y_up_to_3y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_2y_up_to_3y_old", + ), + }, + _3mTo4m: { + activity: createActivityPattern2( + this, + "utxos_at_least_3m_up_to_4m_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_3m_up_to_4m_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_3m_up_to_4m_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_3m_up_to_4m_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_3m_up_to_4m_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_3m_up_to_4m_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_3m_up_to_4m_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_3m_up_to_4m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_3m_up_to_4m_old", + ), + }, + _3yTo4y: { + activity: createActivityPattern2( + this, + "utxos_at_least_3y_up_to_4y_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_3y_up_to_4y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_3y_up_to_4y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_3y_up_to_4y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_3y_up_to_4y_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_3y_up_to_4y_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_3y_up_to_4y_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_3y_up_to_4y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_3y_up_to_4y_old", + ), + }, + _4mTo5m: { + activity: createActivityPattern2( + this, + "utxos_at_least_4m_up_to_5m_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_4m_up_to_5m_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_4m_up_to_5m_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_4m_up_to_5m_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_4m_up_to_5m_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_4m_up_to_5m_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_4m_up_to_5m_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_4m_up_to_5m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_4m_up_to_5m_old", + ), + }, + _4yTo5y: { + activity: createActivityPattern2( + this, + "utxos_at_least_4y_up_to_5y_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_4y_up_to_5y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_4y_up_to_5y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_4y_up_to_5y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_4y_up_to_5y_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_4y_up_to_5y_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_4y_up_to_5y_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_4y_up_to_5y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_4y_up_to_5y_old", + ), + }, + _5mTo6m: { + activity: createActivityPattern2( + this, + "utxos_at_least_5m_up_to_6m_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_5m_up_to_6m_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_5m_up_to_6m_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_5m_up_to_6m_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_5m_up_to_6m_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_5m_up_to_6m_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_5m_up_to_6m_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_5m_up_to_6m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_5m_up_to_6m_old", + ), + }, + _5yTo6y: { + activity: createActivityPattern2( + this, + "utxos_at_least_5y_up_to_6y_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_5y_up_to_6y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_5y_up_to_6y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_5y_up_to_6y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_5y_up_to_6y_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_5y_up_to_6y_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_5y_up_to_6y_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_5y_up_to_6y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_5y_up_to_6y_old", + ), + }, + _6mTo1y: { + activity: createActivityPattern2( + this, + "utxos_at_least_6m_up_to_1y_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_6m_up_to_1y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_6m_up_to_1y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_6m_up_to_1y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_6m_up_to_1y_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_6m_up_to_1y_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_6m_up_to_1y_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_6m_up_to_1y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_6m_up_to_1y_old", + ), + }, + _6yTo7y: { + activity: createActivityPattern2( + this, + "utxos_at_least_6y_up_to_7y_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_6y_up_to_7y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_6y_up_to_7y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_6y_up_to_7y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_6y_up_to_7y_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_6y_up_to_7y_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_6y_up_to_7y_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_6y_up_to_7y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_6y_up_to_7y_old", + ), + }, + _7yTo8y: { + activity: createActivityPattern2( + this, + "utxos_at_least_7y_up_to_8y_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_7y_up_to_8y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_7y_up_to_8y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_7y_up_to_8y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_7y_up_to_8y_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_7y_up_to_8y_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_7y_up_to_8y_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_7y_up_to_8y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_7y_up_to_8y_old", + ), + }, + _8yTo10y: { + activity: createActivityPattern2( + this, + "utxos_at_least_8y_up_to_10y_old", + ), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_8y_up_to_10y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_8y_up_to_10y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_8y_up_to_10y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_8y_up_to_10y_old_utxo_count", + ), + realized: createRealizedPattern2( + this, + "utxos_at_least_8y_up_to_10y_old", + ), + relative: createRelativePattern2( + this, + "utxos_at_least_8y_up_to_10y_old", + ), + supply: createSupplyPattern2( + this, + "utxos_at_least_8y_up_to_10y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_8y_up_to_10y_old", + ), + }, + from15y: { + activity: createActivityPattern2(this, "utxos_at_least_15y_old"), + costBasis: { + max: createMetricPattern1( + this, + "utxos_at_least_15y_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_at_least_15y_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_at_least_15y_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_at_least_15y_old_utxo_count", + ), + realized: createRealizedPattern2(this, "utxos_at_least_15y_old"), + relative: createRelativePattern2(this, "utxos_at_least_15y_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_15y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_15y_old", + ), + }, + upTo1h: { + activity: createActivityPattern2(this, "utxos_up_to_1h_old"), + costBasis: { + max: createMetricPattern1( + this, + "utxos_up_to_1h_old_max_cost_basis", + ), + min: createMetricPattern1( + this, + "utxos_up_to_1h_old_min_cost_basis", + ), + percentiles: createPercentilesPattern( + this, + "utxos_up_to_1h_old_cost_basis", + ), + }, + outputs: createOutputsPattern( + this, + "utxos_up_to_1h_old_utxo_count", + ), + realized: createRealizedPattern2(this, "utxos_up_to_1h_old"), + relative: createRelativePattern2(this, "utxos_up_to_1h_old"), + supply: createSupplyPattern2(this, "utxos_up_to_1h_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_1h_old"), + }, }, all: { activity: { @@ -6950,7 +11766,164 @@ class BrkClient extends BrkClientBase { percentiles: createPercentilesPattern(this, "cost_basis"), }, outputs: createOutputsPattern(this, "utxo_count"), - realized: createRealizedPattern3(this, ""), + realized: { + adjustedSopr: createMetricPattern6(this, "adjusted_sopr"), + adjustedSopr30dEma: createMetricPattern6( + this, + "adjusted_sopr_30d_ema", + ), + adjustedSopr7dEma: createMetricPattern6( + this, + "adjusted_sopr_7d_ema", + ), + adjustedValueCreated: createMetricPattern1( + this, + "adjusted_value_created", + ), + adjustedValueDestroyed: createMetricPattern1( + this, + "adjusted_value_destroyed", + ), + mvrv: createMetricPattern4(this, "mvrv"), + negRealizedLoss: createBitcoinPattern2(this, "neg_realized_loss"), + netRealizedPnl: createBlockCountPattern(this, "net_realized_pnl"), + netRealizedPnlCumulative30dDelta: createMetricPattern4( + this, + "net_realized_pnl_cumulative_30d_delta", + ), + netRealizedPnlCumulative30dDeltaRelToMarketCap: + createMetricPattern4( + this, + "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", + ), + netRealizedPnlCumulative30dDeltaRelToRealizedCap: + createMetricPattern4( + this, + "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", + ), + netRealizedPnlRelToRealizedCap: createBlockCountPattern( + this, + "net_realized_pnl_rel_to_realized_cap", + ), + realizedCap: createMetricPattern1(this, "realized_cap"), + realizedCap30dDelta: createMetricPattern4( + this, + "realized_cap_30d_delta", + ), + realizedCapRelToOwnMarketCap: createMetricPattern1( + this, + "realized_cap_rel_to_own_market_cap", + ), + realizedLoss: createBlockCountPattern(this, "realized_loss"), + realizedLossRelToRealizedCap: createBlockCountPattern( + this, + "realized_loss_rel_to_realized_cap", + ), + realizedPrice: createMetricPattern1(this, "realized_price"), + realizedPriceExtra: { + ratio: createMetricPattern4(this, "realized_price_ratio"), + ratio1mSma: createMetricPattern4( + this, + "realized_price_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "realized_price_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern( + this, + "realized_price_ratio_1y", + ), + ratio2ySd: createRatio1ySdPattern( + this, + "realized_price_ratio_2y", + ), + ratio4ySd: createRatio1ySdPattern( + this, + "realized_price_ratio_4y", + ), + ratioPct1: createMetricPattern4( + this, + "realized_price_ratio_pct1", + ), + ratioPct1Usd: createMetricPattern4( + this, + "realized_price_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4( + this, + "realized_price_ratio_pct2", + ), + ratioPct2Usd: createMetricPattern4( + this, + "realized_price_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4( + this, + "realized_price_ratio_pct5", + ), + ratioPct5Usd: createMetricPattern4( + this, + "realized_price_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4( + this, + "realized_price_ratio_pct95", + ), + ratioPct95Usd: createMetricPattern4( + this, + "realized_price_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4( + this, + "realized_price_ratio_pct98", + ), + ratioPct98Usd: createMetricPattern4( + this, + "realized_price_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4( + this, + "realized_price_ratio_pct99", + ), + ratioPct99Usd: createMetricPattern4( + this, + "realized_price_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "realized_price_ratio"), + }, + realizedProfit: createBlockCountPattern(this, "realized_profit"), + realizedProfitRelToRealizedCap: createBlockCountPattern( + this, + "realized_profit_rel_to_realized_cap", + ), + realizedProfitToLossRatio: createMetricPattern6( + this, + "realized_profit_to_loss_ratio", + ), + realizedValue: createMetricPattern1(this, "realized_value"), + sellSideRiskRatio: createMetricPattern6( + this, + "sell_side_risk_ratio", + ), + sellSideRiskRatio30dEma: createMetricPattern6( + this, + "sell_side_risk_ratio_30d_ema", + ), + sellSideRiskRatio7dEma: createMetricPattern6( + this, + "sell_side_risk_ratio_7d_ema", + ), + sopr: createMetricPattern6(this, "sopr"), + sopr30dEma: createMetricPattern6(this, "sopr_30d_ema"), + sopr7dEma: createMetricPattern6(this, "sopr_7d_ema"), + totalRealizedPnl: createMetricPattern1( + this, + "total_realized_pnl", + ), + valueCreated: createMetricPattern1(this, "value_created"), + valueDestroyed: createMetricPattern1(this, "value_destroyed"), + }, relative: { negUnrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1( this, @@ -6978,145 +11951,1377 @@ class BrkClient extends BrkClientBase { ), }, supply: createSupplyPattern2(this, "supply"), - unrealized: createUnrealizedPattern(this, ""), + unrealized: { + negUnrealizedLoss: createMetricPattern1( + this, + "neg_unrealized_loss", + ), + netUnrealizedPnl: createMetricPattern1( + this, + "net_unrealized_pnl", + ), + supplyInLoss: createActiveSupplyPattern(this, "supply_in_loss"), + supplyInProfit: createActiveSupplyPattern( + this, + "supply_in_profit", + ), + totalUnrealizedPnl: createMetricPattern1( + this, + "total_unrealized_pnl", + ), + unrealizedLoss: createMetricPattern1(this, "unrealized_loss"), + unrealizedProfit: createMetricPattern1(this, "unrealized_profit"), + }, }, amountRange: { - _0sats: create_0satsPattern2(this, "utxos_with_0sats"), - _100btcTo1kBtc: create_0satsPattern2( - this, - "utxos_above_100btc_under_1k_btc", - ), - _100kBtcOrMore: create_0satsPattern2(this, "utxos_above_100k_btc"), - _100kSatsTo1mSats: create_0satsPattern2( - this, - "utxos_above_100k_sats_under_1m_sats", - ), - _100satsTo1kSats: create_0satsPattern2( - this, - "utxos_above_100sats_under_1k_sats", - ), - _10btcTo100btc: create_0satsPattern2( - this, - "utxos_above_10btc_under_100btc", - ), - _10kBtcTo100kBtc: create_0satsPattern2( - this, - "utxos_above_10k_btc_under_100k_btc", - ), - _10kSatsTo100kSats: create_0satsPattern2( - this, - "utxos_above_10k_sats_under_100k_sats", - ), - _10mSatsTo1btc: create_0satsPattern2( - this, - "utxos_above_10m_sats_under_1btc", - ), - _10satsTo100sats: create_0satsPattern2( - this, - "utxos_above_10sats_under_100sats", - ), - _1btcTo10btc: create_0satsPattern2( - this, - "utxos_above_1btc_under_10btc", - ), - _1kBtcTo10kBtc: create_0satsPattern2( - this, - "utxos_above_1k_btc_under_10k_btc", - ), - _1kSatsTo10kSats: create_0satsPattern2( - this, - "utxos_above_1k_sats_under_10k_sats", - ), - _1mSatsTo10mSats: create_0satsPattern2( - this, - "utxos_above_1m_sats_under_10m_sats", - ), - _1satTo10sats: create_0satsPattern2( - this, - "utxos_above_1sat_under_10sats", - ), + _0sats: { + activity: createActivityPattern2(this, "utxos_with_0sats"), + costBasis: createCostBasisPattern(this, "utxos_with_0sats"), + outputs: createOutputsPattern( + this, + "utxos_with_0sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_with_0sats"), + relative: createRelativePattern4( + this, + "utxos_with_0sats_supply_in", + ), + supply: createSupplyPattern2(this, "utxos_with_0sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_with_0sats"), + }, + _100btcTo1kBtc: { + activity: createActivityPattern2( + this, + "utxos_above_100btc_under_1k_btc", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_100btc_under_1k_btc", + ), + outputs: createOutputsPattern( + this, + "utxos_above_100btc_under_1k_btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_100btc_under_1k_btc", + ), + relative: createRelativePattern4( + this, + "utxos_above_100btc_under_1k_btc_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_100btc_under_1k_btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_100btc_under_1k_btc", + ), + }, + _100kBtcOrMore: { + activity: createActivityPattern2(this, "utxos_above_100k_btc"), + costBasis: createCostBasisPattern(this, "utxos_above_100k_btc"), + outputs: createOutputsPattern( + this, + "utxos_above_100k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_100k_btc"), + relative: createRelativePattern4( + this, + "utxos_above_100k_btc_supply_in", + ), + supply: createSupplyPattern2(this, "utxos_above_100k_btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_100k_btc"), + }, + _100kSatsTo1mSats: { + activity: createActivityPattern2( + this, + "utxos_above_100k_sats_under_1m_sats", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_100k_sats_under_1m_sats", + ), + outputs: createOutputsPattern( + this, + "utxos_above_100k_sats_under_1m_sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_100k_sats_under_1m_sats", + ), + relative: createRelativePattern4( + this, + "utxos_above_100k_sats_under_1m_sats_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_100k_sats_under_1m_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_100k_sats_under_1m_sats", + ), + }, + _100satsTo1kSats: { + activity: createActivityPattern2( + this, + "utxos_above_100sats_under_1k_sats", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_100sats_under_1k_sats", + ), + outputs: createOutputsPattern( + this, + "utxos_above_100sats_under_1k_sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_100sats_under_1k_sats", + ), + relative: createRelativePattern4( + this, + "utxos_above_100sats_under_1k_sats_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_100sats_under_1k_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_100sats_under_1k_sats", + ), + }, + _10btcTo100btc: { + activity: createActivityPattern2( + this, + "utxos_above_10btc_under_100btc", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_10btc_under_100btc", + ), + outputs: createOutputsPattern( + this, + "utxos_above_10btc_under_100btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_10btc_under_100btc", + ), + relative: createRelativePattern4( + this, + "utxos_above_10btc_under_100btc_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_10btc_under_100btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_10btc_under_100btc", + ), + }, + _10kBtcTo100kBtc: { + activity: createActivityPattern2( + this, + "utxos_above_10k_btc_under_100k_btc", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_10k_btc_under_100k_btc", + ), + outputs: createOutputsPattern( + this, + "utxos_above_10k_btc_under_100k_btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_10k_btc_under_100k_btc", + ), + relative: createRelativePattern4( + this, + "utxos_above_10k_btc_under_100k_btc_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_10k_btc_under_100k_btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_10k_btc_under_100k_btc", + ), + }, + _10kSatsTo100kSats: { + activity: createActivityPattern2( + this, + "utxos_above_10k_sats_under_100k_sats", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_10k_sats_under_100k_sats", + ), + outputs: createOutputsPattern( + this, + "utxos_above_10k_sats_under_100k_sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_10k_sats_under_100k_sats", + ), + relative: createRelativePattern4( + this, + "utxos_above_10k_sats_under_100k_sats_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_10k_sats_under_100k_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_10k_sats_under_100k_sats", + ), + }, + _10mSatsTo1btc: { + activity: createActivityPattern2( + this, + "utxos_above_10m_sats_under_1btc", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_10m_sats_under_1btc", + ), + outputs: createOutputsPattern( + this, + "utxos_above_10m_sats_under_1btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_10m_sats_under_1btc", + ), + relative: createRelativePattern4( + this, + "utxos_above_10m_sats_under_1btc_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_10m_sats_under_1btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_10m_sats_under_1btc", + ), + }, + _10satsTo100sats: { + activity: createActivityPattern2( + this, + "utxos_above_10sats_under_100sats", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_10sats_under_100sats", + ), + outputs: createOutputsPattern( + this, + "utxos_above_10sats_under_100sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_10sats_under_100sats", + ), + relative: createRelativePattern4( + this, + "utxos_above_10sats_under_100sats_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_10sats_under_100sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_10sats_under_100sats", + ), + }, + _1btcTo10btc: { + activity: createActivityPattern2( + this, + "utxos_above_1btc_under_10btc", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_1btc_under_10btc", + ), + outputs: createOutputsPattern( + this, + "utxos_above_1btc_under_10btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_1btc_under_10btc", + ), + relative: createRelativePattern4( + this, + "utxos_above_1btc_under_10btc_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_1btc_under_10btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_1btc_under_10btc", + ), + }, + _1kBtcTo10kBtc: { + activity: createActivityPattern2( + this, + "utxos_above_1k_btc_under_10k_btc", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_1k_btc_under_10k_btc", + ), + outputs: createOutputsPattern( + this, + "utxos_above_1k_btc_under_10k_btc_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_1k_btc_under_10k_btc", + ), + relative: createRelativePattern4( + this, + "utxos_above_1k_btc_under_10k_btc_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_1k_btc_under_10k_btc_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_1k_btc_under_10k_btc", + ), + }, + _1kSatsTo10kSats: { + activity: createActivityPattern2( + this, + "utxos_above_1k_sats_under_10k_sats", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_1k_sats_under_10k_sats", + ), + outputs: createOutputsPattern( + this, + "utxos_above_1k_sats_under_10k_sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_1k_sats_under_10k_sats", + ), + relative: createRelativePattern4( + this, + "utxos_above_1k_sats_under_10k_sats_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_1k_sats_under_10k_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_1k_sats_under_10k_sats", + ), + }, + _1mSatsTo10mSats: { + activity: createActivityPattern2( + this, + "utxos_above_1m_sats_under_10m_sats", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_1m_sats_under_10m_sats", + ), + outputs: createOutputsPattern( + this, + "utxos_above_1m_sats_under_10m_sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_1m_sats_under_10m_sats", + ), + relative: createRelativePattern4( + this, + "utxos_above_1m_sats_under_10m_sats_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_1m_sats_under_10m_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_1m_sats_under_10m_sats", + ), + }, + _1satTo10sats: { + activity: createActivityPattern2( + this, + "utxos_above_1sat_under_10sats", + ), + costBasis: createCostBasisPattern( + this, + "utxos_above_1sat_under_10sats", + ), + outputs: createOutputsPattern( + this, + "utxos_above_1sat_under_10sats_utxo_count", + ), + realized: createRealizedPattern( + this, + "utxos_above_1sat_under_10sats", + ), + relative: createRelativePattern4( + this, + "utxos_above_1sat_under_10sats_supply_in", + ), + supply: createSupplyPattern2( + this, + "utxos_above_1sat_under_10sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_1sat_under_10sats", + ), + }, }, epoch: { - _0: create_0satsPattern2(this, "epoch_0"), - _1: create_0satsPattern2(this, "epoch_1"), - _2: create_0satsPattern2(this, "epoch_2"), - _3: create_0satsPattern2(this, "epoch_3"), - _4: create_0satsPattern2(this, "epoch_4"), + _0: { + activity: createActivityPattern2(this, "epoch_0"), + costBasis: createCostBasisPattern(this, "epoch_0"), + outputs: createOutputsPattern(this, "epoch_0_utxo_count"), + realized: createRealizedPattern(this, "epoch_0"), + relative: createRelativePattern4(this, "epoch_0_supply_in"), + supply: createSupplyPattern2(this, "epoch_0_supply"), + unrealized: createUnrealizedPattern(this, "epoch_0"), + }, + _1: { + activity: createActivityPattern2(this, "epoch_1"), + costBasis: createCostBasisPattern(this, "epoch_1"), + outputs: createOutputsPattern(this, "epoch_1_utxo_count"), + realized: createRealizedPattern(this, "epoch_1"), + relative: createRelativePattern4(this, "epoch_1_supply_in"), + supply: createSupplyPattern2(this, "epoch_1_supply"), + unrealized: createUnrealizedPattern(this, "epoch_1"), + }, + _2: { + activity: createActivityPattern2(this, "epoch_2"), + costBasis: createCostBasisPattern(this, "epoch_2"), + outputs: createOutputsPattern(this, "epoch_2_utxo_count"), + realized: createRealizedPattern(this, "epoch_2"), + relative: createRelativePattern4(this, "epoch_2_supply_in"), + supply: createSupplyPattern2(this, "epoch_2_supply"), + unrealized: createUnrealizedPattern(this, "epoch_2"), + }, + _3: { + activity: createActivityPattern2(this, "epoch_3"), + costBasis: createCostBasisPattern(this, "epoch_3"), + outputs: createOutputsPattern(this, "epoch_3_utxo_count"), + realized: createRealizedPattern(this, "epoch_3"), + relative: createRelativePattern4(this, "epoch_3_supply_in"), + supply: createSupplyPattern2(this, "epoch_3_supply"), + unrealized: createUnrealizedPattern(this, "epoch_3"), + }, + _4: { + activity: createActivityPattern2(this, "epoch_4"), + costBasis: createCostBasisPattern(this, "epoch_4"), + outputs: createOutputsPattern(this, "epoch_4_utxo_count"), + realized: createRealizedPattern(this, "epoch_4"), + relative: createRelativePattern4(this, "epoch_4_supply_in"), + supply: createSupplyPattern2(this, "epoch_4_supply"), + unrealized: createUnrealizedPattern(this, "epoch_4"), + }, }, geAmount: { - _100btc: create_100btcPattern(this, "utxos_above_100btc"), - _100kSats: create_100btcPattern(this, "utxos_above_100k_sats"), - _100sats: create_100btcPattern(this, "utxos_above_100sats"), - _10btc: create_100btcPattern(this, "utxos_above_10btc"), - _10kBtc: create_100btcPattern(this, "utxos_above_10k_btc"), - _10kSats: create_100btcPattern(this, "utxos_above_10k_sats"), - _10mSats: create_100btcPattern(this, "utxos_above_10m_sats"), - _10sats: create_100btcPattern(this, "utxos_above_10sats"), - _1btc: create_100btcPattern(this, "utxos_above_1btc"), - _1kBtc: create_100btcPattern(this, "utxos_above_1k_btc"), - _1kSats: create_100btcPattern(this, "utxos_above_1k_sats"), - _1mSats: create_100btcPattern(this, "utxos_above_1m_sats"), - _1sat: create_100btcPattern(this, "utxos_above_1sat"), + _100btc: { + activity: createActivityPattern2(this, "utxos_above_100btc"), + costBasis: createCostBasisPattern(this, "utxos_above_100btc"), + outputs: createOutputsPattern( + this, + "utxos_above_100btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_100btc"), + relative: createRelativePattern(this, "utxos_above_100btc"), + supply: createSupplyPattern2(this, "utxos_above_100btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_100btc"), + }, + _100kSats: { + activity: createActivityPattern2(this, "utxos_above_100k_sats"), + costBasis: createCostBasisPattern(this, "utxos_above_100k_sats"), + outputs: createOutputsPattern( + this, + "utxos_above_100k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_100k_sats"), + relative: createRelativePattern(this, "utxos_above_100k_sats"), + supply: createSupplyPattern2( + this, + "utxos_above_100k_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_above_100k_sats", + ), + }, + _100sats: { + activity: createActivityPattern2(this, "utxos_above_100sats"), + costBasis: createCostBasisPattern(this, "utxos_above_100sats"), + outputs: createOutputsPattern( + this, + "utxos_above_100sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_100sats"), + relative: createRelativePattern(this, "utxos_above_100sats"), + supply: createSupplyPattern2(this, "utxos_above_100sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_100sats"), + }, + _10btc: { + activity: createActivityPattern2(this, "utxos_above_10btc"), + costBasis: createCostBasisPattern(this, "utxos_above_10btc"), + outputs: createOutputsPattern( + this, + "utxos_above_10btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_10btc"), + relative: createRelativePattern(this, "utxos_above_10btc"), + supply: createSupplyPattern2(this, "utxos_above_10btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_10btc"), + }, + _10kBtc: { + activity: createActivityPattern2(this, "utxos_above_10k_btc"), + costBasis: createCostBasisPattern(this, "utxos_above_10k_btc"), + outputs: createOutputsPattern( + this, + "utxos_above_10k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_10k_btc"), + relative: createRelativePattern(this, "utxos_above_10k_btc"), + supply: createSupplyPattern2(this, "utxos_above_10k_btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_10k_btc"), + }, + _10kSats: { + activity: createActivityPattern2(this, "utxos_above_10k_sats"), + costBasis: createCostBasisPattern(this, "utxos_above_10k_sats"), + outputs: createOutputsPattern( + this, + "utxos_above_10k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_10k_sats"), + relative: createRelativePattern(this, "utxos_above_10k_sats"), + supply: createSupplyPattern2(this, "utxos_above_10k_sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_10k_sats"), + }, + _10mSats: { + activity: createActivityPattern2(this, "utxos_above_10m_sats"), + costBasis: createCostBasisPattern(this, "utxos_above_10m_sats"), + outputs: createOutputsPattern( + this, + "utxos_above_10m_sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_10m_sats"), + relative: createRelativePattern(this, "utxos_above_10m_sats"), + supply: createSupplyPattern2(this, "utxos_above_10m_sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_10m_sats"), + }, + _10sats: { + activity: createActivityPattern2(this, "utxos_above_10sats"), + costBasis: createCostBasisPattern(this, "utxos_above_10sats"), + outputs: createOutputsPattern( + this, + "utxos_above_10sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_10sats"), + relative: createRelativePattern(this, "utxos_above_10sats"), + supply: createSupplyPattern2(this, "utxos_above_10sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_10sats"), + }, + _1btc: { + activity: createActivityPattern2(this, "utxos_above_1btc"), + costBasis: createCostBasisPattern(this, "utxos_above_1btc"), + outputs: createOutputsPattern( + this, + "utxos_above_1btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_1btc"), + relative: createRelativePattern(this, "utxos_above_1btc"), + supply: createSupplyPattern2(this, "utxos_above_1btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_1btc"), + }, + _1kBtc: { + activity: createActivityPattern2(this, "utxos_above_1k_btc"), + costBasis: createCostBasisPattern(this, "utxos_above_1k_btc"), + outputs: createOutputsPattern( + this, + "utxos_above_1k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_1k_btc"), + relative: createRelativePattern(this, "utxos_above_1k_btc"), + supply: createSupplyPattern2(this, "utxos_above_1k_btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_1k_btc"), + }, + _1kSats: { + activity: createActivityPattern2(this, "utxos_above_1k_sats"), + costBasis: createCostBasisPattern(this, "utxos_above_1k_sats"), + outputs: createOutputsPattern( + this, + "utxos_above_1k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_1k_sats"), + relative: createRelativePattern(this, "utxos_above_1k_sats"), + supply: createSupplyPattern2(this, "utxos_above_1k_sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_1k_sats"), + }, + _1mSats: { + activity: createActivityPattern2(this, "utxos_above_1m_sats"), + costBasis: createCostBasisPattern(this, "utxos_above_1m_sats"), + outputs: createOutputsPattern( + this, + "utxos_above_1m_sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_1m_sats"), + relative: createRelativePattern(this, "utxos_above_1m_sats"), + supply: createSupplyPattern2(this, "utxos_above_1m_sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_1m_sats"), + }, + _1sat: { + activity: createActivityPattern2(this, "utxos_above_1sat"), + costBasis: createCostBasisPattern(this, "utxos_above_1sat"), + outputs: createOutputsPattern( + this, + "utxos_above_1sat_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_above_1sat"), + relative: createRelativePattern(this, "utxos_above_1sat"), + supply: createSupplyPattern2(this, "utxos_above_1sat_supply"), + unrealized: createUnrealizedPattern(this, "utxos_above_1sat"), + }, }, ltAmount: { - _100btc: create_100btcPattern(this, "utxos_under_100btc"), - _100kBtc: create_100btcPattern(this, "utxos_under_100k_btc"), - _100kSats: create_100btcPattern(this, "utxos_under_100k_sats"), - _100sats: create_100btcPattern(this, "utxos_under_100sats"), - _10btc: create_100btcPattern(this, "utxos_under_10btc"), - _10kBtc: create_100btcPattern(this, "utxos_under_10k_btc"), - _10kSats: create_100btcPattern(this, "utxos_under_10k_sats"), - _10mSats: create_100btcPattern(this, "utxos_under_10m_sats"), - _10sats: create_100btcPattern(this, "utxos_under_10sats"), - _1btc: create_100btcPattern(this, "utxos_under_1btc"), - _1kBtc: create_100btcPattern(this, "utxos_under_1k_btc"), - _1kSats: create_100btcPattern(this, "utxos_under_1k_sats"), - _1mSats: create_100btcPattern(this, "utxos_under_1m_sats"), + _100btc: { + activity: createActivityPattern2(this, "utxos_under_100btc"), + costBasis: createCostBasisPattern(this, "utxos_under_100btc"), + outputs: createOutputsPattern( + this, + "utxos_under_100btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_100btc"), + relative: createRelativePattern(this, "utxos_under_100btc"), + supply: createSupplyPattern2(this, "utxos_under_100btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_100btc"), + }, + _100kBtc: { + activity: createActivityPattern2(this, "utxos_under_100k_btc"), + costBasis: createCostBasisPattern(this, "utxos_under_100k_btc"), + outputs: createOutputsPattern( + this, + "utxos_under_100k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_100k_btc"), + relative: createRelativePattern(this, "utxos_under_100k_btc"), + supply: createSupplyPattern2(this, "utxos_under_100k_btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_100k_btc"), + }, + _100kSats: { + activity: createActivityPattern2(this, "utxos_under_100k_sats"), + costBasis: createCostBasisPattern(this, "utxos_under_100k_sats"), + outputs: createOutputsPattern( + this, + "utxos_under_100k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_100k_sats"), + relative: createRelativePattern(this, "utxos_under_100k_sats"), + supply: createSupplyPattern2( + this, + "utxos_under_100k_sats_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_under_100k_sats", + ), + }, + _100sats: { + activity: createActivityPattern2(this, "utxos_under_100sats"), + costBasis: createCostBasisPattern(this, "utxos_under_100sats"), + outputs: createOutputsPattern( + this, + "utxos_under_100sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_100sats"), + relative: createRelativePattern(this, "utxos_under_100sats"), + supply: createSupplyPattern2(this, "utxos_under_100sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_100sats"), + }, + _10btc: { + activity: createActivityPattern2(this, "utxos_under_10btc"), + costBasis: createCostBasisPattern(this, "utxos_under_10btc"), + outputs: createOutputsPattern( + this, + "utxos_under_10btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_10btc"), + relative: createRelativePattern(this, "utxos_under_10btc"), + supply: createSupplyPattern2(this, "utxos_under_10btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_10btc"), + }, + _10kBtc: { + activity: createActivityPattern2(this, "utxos_under_10k_btc"), + costBasis: createCostBasisPattern(this, "utxos_under_10k_btc"), + outputs: createOutputsPattern( + this, + "utxos_under_10k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_10k_btc"), + relative: createRelativePattern(this, "utxos_under_10k_btc"), + supply: createSupplyPattern2(this, "utxos_under_10k_btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_10k_btc"), + }, + _10kSats: { + activity: createActivityPattern2(this, "utxos_under_10k_sats"), + costBasis: createCostBasisPattern(this, "utxos_under_10k_sats"), + outputs: createOutputsPattern( + this, + "utxos_under_10k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_10k_sats"), + relative: createRelativePattern(this, "utxos_under_10k_sats"), + supply: createSupplyPattern2(this, "utxos_under_10k_sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_10k_sats"), + }, + _10mSats: { + activity: createActivityPattern2(this, "utxos_under_10m_sats"), + costBasis: createCostBasisPattern(this, "utxos_under_10m_sats"), + outputs: createOutputsPattern( + this, + "utxos_under_10m_sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_10m_sats"), + relative: createRelativePattern(this, "utxos_under_10m_sats"), + supply: createSupplyPattern2(this, "utxos_under_10m_sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_10m_sats"), + }, + _10sats: { + activity: createActivityPattern2(this, "utxos_under_10sats"), + costBasis: createCostBasisPattern(this, "utxos_under_10sats"), + outputs: createOutputsPattern( + this, + "utxos_under_10sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_10sats"), + relative: createRelativePattern(this, "utxos_under_10sats"), + supply: createSupplyPattern2(this, "utxos_under_10sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_10sats"), + }, + _1btc: { + activity: createActivityPattern2(this, "utxos_under_1btc"), + costBasis: createCostBasisPattern(this, "utxos_under_1btc"), + outputs: createOutputsPattern( + this, + "utxos_under_1btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_1btc"), + relative: createRelativePattern(this, "utxos_under_1btc"), + supply: createSupplyPattern2(this, "utxos_under_1btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_1btc"), + }, + _1kBtc: { + activity: createActivityPattern2(this, "utxos_under_1k_btc"), + costBasis: createCostBasisPattern(this, "utxos_under_1k_btc"), + outputs: createOutputsPattern( + this, + "utxos_under_1k_btc_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_1k_btc"), + relative: createRelativePattern(this, "utxos_under_1k_btc"), + supply: createSupplyPattern2(this, "utxos_under_1k_btc_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_1k_btc"), + }, + _1kSats: { + activity: createActivityPattern2(this, "utxos_under_1k_sats"), + costBasis: createCostBasisPattern(this, "utxos_under_1k_sats"), + outputs: createOutputsPattern( + this, + "utxos_under_1k_sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_1k_sats"), + relative: createRelativePattern(this, "utxos_under_1k_sats"), + supply: createSupplyPattern2(this, "utxos_under_1k_sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_1k_sats"), + }, + _1mSats: { + activity: createActivityPattern2(this, "utxos_under_1m_sats"), + costBasis: createCostBasisPattern(this, "utxos_under_1m_sats"), + outputs: createOutputsPattern( + this, + "utxos_under_1m_sats_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_under_1m_sats"), + relative: createRelativePattern(this, "utxos_under_1m_sats"), + supply: createSupplyPattern2(this, "utxos_under_1m_sats_supply"), + unrealized: createUnrealizedPattern(this, "utxos_under_1m_sats"), + }, }, maxAge: { - _10y: create_10yPattern(this, "utxos_up_to_10y_old"), - _12y: create_10yPattern(this, "utxos_up_to_12y_old"), - _15y: create_10yPattern(this, "utxos_up_to_15y_old"), - _1m: create_10yPattern(this, "utxos_up_to_1m_old"), - _1w: create_10yPattern(this, "utxos_up_to_1w_old"), - _1y: create_10yPattern(this, "utxos_up_to_1y_old"), - _2m: create_10yPattern(this, "utxos_up_to_2m_old"), - _2y: create_10yPattern(this, "utxos_up_to_2y_old"), - _3m: create_10yPattern(this, "utxos_up_to_3m_old"), - _3y: create_10yPattern(this, "utxos_up_to_3y_old"), - _4m: create_10yPattern(this, "utxos_up_to_4m_old"), - _4y: create_10yPattern(this, "utxos_up_to_4y_old"), - _5m: create_10yPattern(this, "utxos_up_to_5m_old"), - _5y: create_10yPattern(this, "utxos_up_to_5y_old"), - _6m: create_10yPattern(this, "utxos_up_to_6m_old"), - _6y: create_10yPattern(this, "utxos_up_to_6y_old"), - _7y: create_10yPattern(this, "utxos_up_to_7y_old"), - _8y: create_10yPattern(this, "utxos_up_to_8y_old"), + _10y: { + activity: createActivityPattern2(this, "utxos_up_to_10y_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_10y_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_10y_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_10y_old"), + relative: createRelativePattern(this, "utxos_up_to_10y_old"), + supply: createSupplyPattern2(this, "utxos_up_to_10y_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_10y_old"), + }, + _12y: { + activity: createActivityPattern2(this, "utxos_up_to_12y_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_12y_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_12y_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_12y_old"), + relative: createRelativePattern(this, "utxos_up_to_12y_old"), + supply: createSupplyPattern2(this, "utxos_up_to_12y_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_12y_old"), + }, + _15y: { + activity: createActivityPattern2(this, "utxos_up_to_15y_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_15y_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_15y_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_15y_old"), + relative: createRelativePattern(this, "utxos_up_to_15y_old"), + supply: createSupplyPattern2(this, "utxos_up_to_15y_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_15y_old"), + }, + _1m: { + activity: createActivityPattern2(this, "utxos_up_to_1m_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_1m_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_1m_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_1m_old"), + relative: createRelativePattern(this, "utxos_up_to_1m_old"), + supply: createSupplyPattern2(this, "utxos_up_to_1m_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_1m_old"), + }, + _1w: { + activity: createActivityPattern2(this, "utxos_up_to_1w_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_1w_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_1w_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_1w_old"), + relative: createRelativePattern(this, "utxos_up_to_1w_old"), + supply: createSupplyPattern2(this, "utxos_up_to_1w_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_1w_old"), + }, + _1y: { + activity: createActivityPattern2(this, "utxos_up_to_1y_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_1y_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_1y_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_1y_old"), + relative: createRelativePattern(this, "utxos_up_to_1y_old"), + supply: createSupplyPattern2(this, "utxos_up_to_1y_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_1y_old"), + }, + _2m: { + activity: createActivityPattern2(this, "utxos_up_to_2m_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_2m_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_2m_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_2m_old"), + relative: createRelativePattern(this, "utxos_up_to_2m_old"), + supply: createSupplyPattern2(this, "utxos_up_to_2m_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_2m_old"), + }, + _2y: { + activity: createActivityPattern2(this, "utxos_up_to_2y_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_2y_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_2y_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_2y_old"), + relative: createRelativePattern(this, "utxos_up_to_2y_old"), + supply: createSupplyPattern2(this, "utxos_up_to_2y_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_2y_old"), + }, + _3m: { + activity: createActivityPattern2(this, "utxos_up_to_3m_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_3m_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_3m_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_3m_old"), + relative: createRelativePattern(this, "utxos_up_to_3m_old"), + supply: createSupplyPattern2(this, "utxos_up_to_3m_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_3m_old"), + }, + _3y: { + activity: createActivityPattern2(this, "utxos_up_to_3y_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_3y_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_3y_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_3y_old"), + relative: createRelativePattern(this, "utxos_up_to_3y_old"), + supply: createSupplyPattern2(this, "utxos_up_to_3y_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_3y_old"), + }, + _4m: { + activity: createActivityPattern2(this, "utxos_up_to_4m_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_4m_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_4m_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_4m_old"), + relative: createRelativePattern(this, "utxos_up_to_4m_old"), + supply: createSupplyPattern2(this, "utxos_up_to_4m_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_4m_old"), + }, + _4y: { + activity: createActivityPattern2(this, "utxos_up_to_4y_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_4y_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_4y_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_4y_old"), + relative: createRelativePattern(this, "utxos_up_to_4y_old"), + supply: createSupplyPattern2(this, "utxos_up_to_4y_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_4y_old"), + }, + _5m: { + activity: createActivityPattern2(this, "utxos_up_to_5m_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_5m_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_5m_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_5m_old"), + relative: createRelativePattern(this, "utxos_up_to_5m_old"), + supply: createSupplyPattern2(this, "utxos_up_to_5m_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_5m_old"), + }, + _5y: { + activity: createActivityPattern2(this, "utxos_up_to_5y_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_5y_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_5y_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_5y_old"), + relative: createRelativePattern(this, "utxos_up_to_5y_old"), + supply: createSupplyPattern2(this, "utxos_up_to_5y_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_5y_old"), + }, + _6m: { + activity: createActivityPattern2(this, "utxos_up_to_6m_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_6m_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_6m_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_6m_old"), + relative: createRelativePattern(this, "utxos_up_to_6m_old"), + supply: createSupplyPattern2(this, "utxos_up_to_6m_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_6m_old"), + }, + _6y: { + activity: createActivityPattern2(this, "utxos_up_to_6y_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_6y_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_6y_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_6y_old"), + relative: createRelativePattern(this, "utxos_up_to_6y_old"), + supply: createSupplyPattern2(this, "utxos_up_to_6y_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_6y_old"), + }, + _7y: { + activity: createActivityPattern2(this, "utxos_up_to_7y_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_7y_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_7y_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_7y_old"), + relative: createRelativePattern(this, "utxos_up_to_7y_old"), + supply: createSupplyPattern2(this, "utxos_up_to_7y_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_7y_old"), + }, + _8y: { + activity: createActivityPattern2(this, "utxos_up_to_8y_old"), + costBasis: createCostBasisPattern(this, "utxos_up_to_8y_old"), + outputs: createOutputsPattern( + this, + "utxos_up_to_8y_old_utxo_count", + ), + realized: createRealizedPattern4(this, "utxos_up_to_8y_old"), + relative: createRelativePattern(this, "utxos_up_to_8y_old"), + supply: createSupplyPattern2(this, "utxos_up_to_8y_old_supply"), + unrealized: createUnrealizedPattern(this, "utxos_up_to_8y_old"), + }, }, minAge: { - _10y: create_100btcPattern(this, "utxos_at_least_10y_old"), - _12y: create_100btcPattern(this, "utxos_at_least_12y_old"), - _1d: create_100btcPattern(this, "utxos_at_least_1d_old"), - _1m: create_100btcPattern(this, "utxos_at_least_1m_old"), - _1w: create_100btcPattern(this, "utxos_at_least_1w_old"), - _1y: create_100btcPattern(this, "utxos_at_least_1y_old"), - _2m: create_100btcPattern(this, "utxos_at_least_2m_old"), - _2y: create_100btcPattern(this, "utxos_at_least_2y_old"), - _3m: create_100btcPattern(this, "utxos_at_least_3m_old"), - _3y: create_100btcPattern(this, "utxos_at_least_3y_old"), - _4m: create_100btcPattern(this, "utxos_at_least_4m_old"), - _4y: create_100btcPattern(this, "utxos_at_least_4y_old"), - _5m: create_100btcPattern(this, "utxos_at_least_5m_old"), - _5y: create_100btcPattern(this, "utxos_at_least_5y_old"), - _6m: create_100btcPattern(this, "utxos_at_least_6m_old"), - _6y: create_100btcPattern(this, "utxos_at_least_6y_old"), - _7y: create_100btcPattern(this, "utxos_at_least_7y_old"), - _8y: create_100btcPattern(this, "utxos_at_least_8y_old"), + _10y: { + activity: createActivityPattern2(this, "utxos_at_least_10y_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_10y_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_10y_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_10y_old"), + relative: createRelativePattern(this, "utxos_at_least_10y_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_10y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_10y_old", + ), + }, + _12y: { + activity: createActivityPattern2(this, "utxos_at_least_12y_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_12y_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_12y_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_12y_old"), + relative: createRelativePattern(this, "utxos_at_least_12y_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_12y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_12y_old", + ), + }, + _1d: { + activity: createActivityPattern2(this, "utxos_at_least_1d_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_1d_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_1d_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_1d_old"), + relative: createRelativePattern(this, "utxos_at_least_1d_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_1d_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_1d_old", + ), + }, + _1m: { + activity: createActivityPattern2(this, "utxos_at_least_1m_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_1m_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_1m_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_1m_old"), + relative: createRelativePattern(this, "utxos_at_least_1m_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_1m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_1m_old", + ), + }, + _1w: { + activity: createActivityPattern2(this, "utxos_at_least_1w_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_1w_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_1w_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_1w_old"), + relative: createRelativePattern(this, "utxos_at_least_1w_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_1w_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_1w_old", + ), + }, + _1y: { + activity: createActivityPattern2(this, "utxos_at_least_1y_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_1y_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_1y_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_1y_old"), + relative: createRelativePattern(this, "utxos_at_least_1y_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_1y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_1y_old", + ), + }, + _2m: { + activity: createActivityPattern2(this, "utxos_at_least_2m_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_2m_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_2m_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_2m_old"), + relative: createRelativePattern(this, "utxos_at_least_2m_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_2m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_2m_old", + ), + }, + _2y: { + activity: createActivityPattern2(this, "utxos_at_least_2y_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_2y_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_2y_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_2y_old"), + relative: createRelativePattern(this, "utxos_at_least_2y_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_2y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_2y_old", + ), + }, + _3m: { + activity: createActivityPattern2(this, "utxos_at_least_3m_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_3m_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_3m_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_3m_old"), + relative: createRelativePattern(this, "utxos_at_least_3m_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_3m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_3m_old", + ), + }, + _3y: { + activity: createActivityPattern2(this, "utxos_at_least_3y_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_3y_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_3y_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_3y_old"), + relative: createRelativePattern(this, "utxos_at_least_3y_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_3y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_3y_old", + ), + }, + _4m: { + activity: createActivityPattern2(this, "utxos_at_least_4m_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_4m_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_4m_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_4m_old"), + relative: createRelativePattern(this, "utxos_at_least_4m_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_4m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_4m_old", + ), + }, + _4y: { + activity: createActivityPattern2(this, "utxos_at_least_4y_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_4y_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_4y_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_4y_old"), + relative: createRelativePattern(this, "utxos_at_least_4y_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_4y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_4y_old", + ), + }, + _5m: { + activity: createActivityPattern2(this, "utxos_at_least_5m_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_5m_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_5m_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_5m_old"), + relative: createRelativePattern(this, "utxos_at_least_5m_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_5m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_5m_old", + ), + }, + _5y: { + activity: createActivityPattern2(this, "utxos_at_least_5y_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_5y_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_5y_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_5y_old"), + relative: createRelativePattern(this, "utxos_at_least_5y_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_5y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_5y_old", + ), + }, + _6m: { + activity: createActivityPattern2(this, "utxos_at_least_6m_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_6m_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_6m_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_6m_old"), + relative: createRelativePattern(this, "utxos_at_least_6m_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_6m_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_6m_old", + ), + }, + _6y: { + activity: createActivityPattern2(this, "utxos_at_least_6y_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_6y_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_6y_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_6y_old"), + relative: createRelativePattern(this, "utxos_at_least_6y_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_6y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_6y_old", + ), + }, + _7y: { + activity: createActivityPattern2(this, "utxos_at_least_7y_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_7y_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_7y_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_7y_old"), + relative: createRelativePattern(this, "utxos_at_least_7y_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_7y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_7y_old", + ), + }, + _8y: { + activity: createActivityPattern2(this, "utxos_at_least_8y_old"), + costBasis: createCostBasisPattern(this, "utxos_at_least_8y_old"), + outputs: createOutputsPattern( + this, + "utxos_at_least_8y_old_utxo_count", + ), + realized: createRealizedPattern(this, "utxos_at_least_8y_old"), + relative: createRelativePattern(this, "utxos_at_least_8y_old"), + supply: createSupplyPattern2( + this, + "utxos_at_least_8y_old_supply", + ), + unrealized: createUnrealizedPattern( + this, + "utxos_at_least_8y_old", + ), + }, }, term: { long: { activity: createActivityPattern2(this, "lth"), - costBasis: createCostBasisPattern2(this, "lth"), + costBasis: { + max: createMetricPattern1(this, "lth_max_cost_basis"), + min: createMetricPattern1(this, "lth_min_cost_basis"), + percentiles: createPercentilesPattern(this, "lth_cost_basis"), + }, outputs: createOutputsPattern(this, "lth_utxo_count"), realized: createRealizedPattern2(this, "lth"), relative: createRelativePattern5(this, "lth"), @@ -7125,7 +13330,11 @@ class BrkClient extends BrkClientBase { }, short: { activity: createActivityPattern2(this, "sth"), - costBasis: createCostBasisPattern2(this, "sth"), + costBasis: { + max: createMetricPattern1(this, "sth_max_cost_basis"), + min: createMetricPattern1(this, "sth_min_cost_basis"), + percentiles: createPercentilesPattern(this, "sth_cost_basis"), + }, outputs: createOutputsPattern(this, "sth_utxo_count"), realized: createRealizedPattern3(this, "sth"), relative: createRelativePattern5(this, "sth"), @@ -7134,37 +13343,272 @@ class BrkClient extends BrkClientBase { }, }, type: { - empty: create_0satsPattern2(this, "empty_outputs"), - p2a: create_0satsPattern2(this, "p2a"), - p2ms: create_0satsPattern2(this, "p2ms"), - p2pk33: create_0satsPattern2(this, "p2pk33"), - p2pk65: create_0satsPattern2(this, "p2pk65"), - p2pkh: create_0satsPattern2(this, "p2pkh"), - p2sh: create_0satsPattern2(this, "p2sh"), - p2tr: create_0satsPattern2(this, "p2tr"), - p2wpkh: create_0satsPattern2(this, "p2wpkh"), - p2wsh: create_0satsPattern2(this, "p2wsh"), - unknown: create_0satsPattern2(this, "unknown_outputs"), + empty: { + activity: createActivityPattern2(this, "empty_outputs"), + costBasis: createCostBasisPattern(this, "empty_outputs"), + outputs: createOutputsPattern(this, "empty_outputs_utxo_count"), + realized: createRealizedPattern(this, "empty_outputs"), + relative: createRelativePattern4(this, "empty_outputs_supply_in"), + supply: createSupplyPattern2(this, "empty_outputs_supply"), + unrealized: createUnrealizedPattern(this, "empty_outputs"), + }, + p2a: { + activity: createActivityPattern2(this, "p2a"), + costBasis: createCostBasisPattern(this, "p2a"), + outputs: createOutputsPattern(this, "p2a_utxo_count"), + realized: createRealizedPattern(this, "p2a"), + relative: createRelativePattern4(this, "p2a_supply_in"), + supply: createSupplyPattern2(this, "p2a_supply"), + unrealized: createUnrealizedPattern(this, "p2a"), + }, + p2ms: { + activity: createActivityPattern2(this, "p2ms"), + costBasis: createCostBasisPattern(this, "p2ms"), + outputs: createOutputsPattern(this, "p2ms_utxo_count"), + realized: createRealizedPattern(this, "p2ms"), + relative: createRelativePattern4(this, "p2ms_supply_in"), + supply: createSupplyPattern2(this, "p2ms_supply"), + unrealized: createUnrealizedPattern(this, "p2ms"), + }, + p2pk33: { + activity: createActivityPattern2(this, "p2pk33"), + costBasis: createCostBasisPattern(this, "p2pk33"), + outputs: createOutputsPattern(this, "p2pk33_utxo_count"), + realized: createRealizedPattern(this, "p2pk33"), + relative: createRelativePattern4(this, "p2pk33_supply_in"), + supply: createSupplyPattern2(this, "p2pk33_supply"), + unrealized: createUnrealizedPattern(this, "p2pk33"), + }, + p2pk65: { + activity: createActivityPattern2(this, "p2pk65"), + costBasis: createCostBasisPattern(this, "p2pk65"), + outputs: createOutputsPattern(this, "p2pk65_utxo_count"), + realized: createRealizedPattern(this, "p2pk65"), + relative: createRelativePattern4(this, "p2pk65_supply_in"), + supply: createSupplyPattern2(this, "p2pk65_supply"), + unrealized: createUnrealizedPattern(this, "p2pk65"), + }, + p2pkh: { + activity: createActivityPattern2(this, "p2pkh"), + costBasis: createCostBasisPattern(this, "p2pkh"), + outputs: createOutputsPattern(this, "p2pkh_utxo_count"), + realized: createRealizedPattern(this, "p2pkh"), + relative: createRelativePattern4(this, "p2pkh_supply_in"), + supply: createSupplyPattern2(this, "p2pkh_supply"), + unrealized: createUnrealizedPattern(this, "p2pkh"), + }, + p2sh: { + activity: createActivityPattern2(this, "p2sh"), + costBasis: createCostBasisPattern(this, "p2sh"), + outputs: createOutputsPattern(this, "p2sh_utxo_count"), + realized: createRealizedPattern(this, "p2sh"), + relative: createRelativePattern4(this, "p2sh_supply_in"), + supply: createSupplyPattern2(this, "p2sh_supply"), + unrealized: createUnrealizedPattern(this, "p2sh"), + }, + p2tr: { + activity: createActivityPattern2(this, "p2tr"), + costBasis: createCostBasisPattern(this, "p2tr"), + outputs: createOutputsPattern(this, "p2tr_utxo_count"), + realized: createRealizedPattern(this, "p2tr"), + relative: createRelativePattern4(this, "p2tr_supply_in"), + supply: createSupplyPattern2(this, "p2tr_supply"), + unrealized: createUnrealizedPattern(this, "p2tr"), + }, + p2wpkh: { + activity: createActivityPattern2(this, "p2wpkh"), + costBasis: createCostBasisPattern(this, "p2wpkh"), + outputs: createOutputsPattern(this, "p2wpkh_utxo_count"), + realized: createRealizedPattern(this, "p2wpkh"), + relative: createRelativePattern4(this, "p2wpkh_supply_in"), + supply: createSupplyPattern2(this, "p2wpkh_supply"), + unrealized: createUnrealizedPattern(this, "p2wpkh"), + }, + p2wsh: { + activity: createActivityPattern2(this, "p2wsh"), + costBasis: createCostBasisPattern(this, "p2wsh"), + outputs: createOutputsPattern(this, "p2wsh_utxo_count"), + realized: createRealizedPattern(this, "p2wsh"), + relative: createRelativePattern4(this, "p2wsh_supply_in"), + supply: createSupplyPattern2(this, "p2wsh_supply"), + unrealized: createUnrealizedPattern(this, "p2wsh"), + }, + unknown: { + activity: createActivityPattern2(this, "unknown_outputs"), + costBasis: createCostBasisPattern(this, "unknown_outputs"), + outputs: createOutputsPattern(this, "unknown_outputs_utxo_count"), + realized: createRealizedPattern(this, "unknown_outputs"), + relative: createRelativePattern4( + this, + "unknown_outputs_supply_in", + ), + supply: createSupplyPattern2(this, "unknown_outputs_supply"), + unrealized: createUnrealizedPattern(this, "unknown_outputs"), + }, }, year: { - _2009: create_0satsPattern2(this, "year_2009"), - _2010: create_0satsPattern2(this, "year_2010"), - _2011: create_0satsPattern2(this, "year_2011"), - _2012: create_0satsPattern2(this, "year_2012"), - _2013: create_0satsPattern2(this, "year_2013"), - _2014: create_0satsPattern2(this, "year_2014"), - _2015: create_0satsPattern2(this, "year_2015"), - _2016: create_0satsPattern2(this, "year_2016"), - _2017: create_0satsPattern2(this, "year_2017"), - _2018: create_0satsPattern2(this, "year_2018"), - _2019: create_0satsPattern2(this, "year_2019"), - _2020: create_0satsPattern2(this, "year_2020"), - _2021: create_0satsPattern2(this, "year_2021"), - _2022: create_0satsPattern2(this, "year_2022"), - _2023: create_0satsPattern2(this, "year_2023"), - _2024: create_0satsPattern2(this, "year_2024"), - _2025: create_0satsPattern2(this, "year_2025"), - _2026: create_0satsPattern2(this, "year_2026"), + _2009: { + activity: createActivityPattern2(this, "year_2009"), + costBasis: createCostBasisPattern(this, "year_2009"), + outputs: createOutputsPattern(this, "year_2009_utxo_count"), + realized: createRealizedPattern(this, "year_2009"), + relative: createRelativePattern4(this, "year_2009_supply_in"), + supply: createSupplyPattern2(this, "year_2009_supply"), + unrealized: createUnrealizedPattern(this, "year_2009"), + }, + _2010: { + activity: createActivityPattern2(this, "year_2010"), + costBasis: createCostBasisPattern(this, "year_2010"), + outputs: createOutputsPattern(this, "year_2010_utxo_count"), + realized: createRealizedPattern(this, "year_2010"), + relative: createRelativePattern4(this, "year_2010_supply_in"), + supply: createSupplyPattern2(this, "year_2010_supply"), + unrealized: createUnrealizedPattern(this, "year_2010"), + }, + _2011: { + activity: createActivityPattern2(this, "year_2011"), + costBasis: createCostBasisPattern(this, "year_2011"), + outputs: createOutputsPattern(this, "year_2011_utxo_count"), + realized: createRealizedPattern(this, "year_2011"), + relative: createRelativePattern4(this, "year_2011_supply_in"), + supply: createSupplyPattern2(this, "year_2011_supply"), + unrealized: createUnrealizedPattern(this, "year_2011"), + }, + _2012: { + activity: createActivityPattern2(this, "year_2012"), + costBasis: createCostBasisPattern(this, "year_2012"), + outputs: createOutputsPattern(this, "year_2012_utxo_count"), + realized: createRealizedPattern(this, "year_2012"), + relative: createRelativePattern4(this, "year_2012_supply_in"), + supply: createSupplyPattern2(this, "year_2012_supply"), + unrealized: createUnrealizedPattern(this, "year_2012"), + }, + _2013: { + activity: createActivityPattern2(this, "year_2013"), + costBasis: createCostBasisPattern(this, "year_2013"), + outputs: createOutputsPattern(this, "year_2013_utxo_count"), + realized: createRealizedPattern(this, "year_2013"), + relative: createRelativePattern4(this, "year_2013_supply_in"), + supply: createSupplyPattern2(this, "year_2013_supply"), + unrealized: createUnrealizedPattern(this, "year_2013"), + }, + _2014: { + activity: createActivityPattern2(this, "year_2014"), + costBasis: createCostBasisPattern(this, "year_2014"), + outputs: createOutputsPattern(this, "year_2014_utxo_count"), + realized: createRealizedPattern(this, "year_2014"), + relative: createRelativePattern4(this, "year_2014_supply_in"), + supply: createSupplyPattern2(this, "year_2014_supply"), + unrealized: createUnrealizedPattern(this, "year_2014"), + }, + _2015: { + activity: createActivityPattern2(this, "year_2015"), + costBasis: createCostBasisPattern(this, "year_2015"), + outputs: createOutputsPattern(this, "year_2015_utxo_count"), + realized: createRealizedPattern(this, "year_2015"), + relative: createRelativePattern4(this, "year_2015_supply_in"), + supply: createSupplyPattern2(this, "year_2015_supply"), + unrealized: createUnrealizedPattern(this, "year_2015"), + }, + _2016: { + activity: createActivityPattern2(this, "year_2016"), + costBasis: createCostBasisPattern(this, "year_2016"), + outputs: createOutputsPattern(this, "year_2016_utxo_count"), + realized: createRealizedPattern(this, "year_2016"), + relative: createRelativePattern4(this, "year_2016_supply_in"), + supply: createSupplyPattern2(this, "year_2016_supply"), + unrealized: createUnrealizedPattern(this, "year_2016"), + }, + _2017: { + activity: createActivityPattern2(this, "year_2017"), + costBasis: createCostBasisPattern(this, "year_2017"), + outputs: createOutputsPattern(this, "year_2017_utxo_count"), + realized: createRealizedPattern(this, "year_2017"), + relative: createRelativePattern4(this, "year_2017_supply_in"), + supply: createSupplyPattern2(this, "year_2017_supply"), + unrealized: createUnrealizedPattern(this, "year_2017"), + }, + _2018: { + activity: createActivityPattern2(this, "year_2018"), + costBasis: createCostBasisPattern(this, "year_2018"), + outputs: createOutputsPattern(this, "year_2018_utxo_count"), + realized: createRealizedPattern(this, "year_2018"), + relative: createRelativePattern4(this, "year_2018_supply_in"), + supply: createSupplyPattern2(this, "year_2018_supply"), + unrealized: createUnrealizedPattern(this, "year_2018"), + }, + _2019: { + activity: createActivityPattern2(this, "year_2019"), + costBasis: createCostBasisPattern(this, "year_2019"), + outputs: createOutputsPattern(this, "year_2019_utxo_count"), + realized: createRealizedPattern(this, "year_2019"), + relative: createRelativePattern4(this, "year_2019_supply_in"), + supply: createSupplyPattern2(this, "year_2019_supply"), + unrealized: createUnrealizedPattern(this, "year_2019"), + }, + _2020: { + activity: createActivityPattern2(this, "year_2020"), + costBasis: createCostBasisPattern(this, "year_2020"), + outputs: createOutputsPattern(this, "year_2020_utxo_count"), + realized: createRealizedPattern(this, "year_2020"), + relative: createRelativePattern4(this, "year_2020_supply_in"), + supply: createSupplyPattern2(this, "year_2020_supply"), + unrealized: createUnrealizedPattern(this, "year_2020"), + }, + _2021: { + activity: createActivityPattern2(this, "year_2021"), + costBasis: createCostBasisPattern(this, "year_2021"), + outputs: createOutputsPattern(this, "year_2021_utxo_count"), + realized: createRealizedPattern(this, "year_2021"), + relative: createRelativePattern4(this, "year_2021_supply_in"), + supply: createSupplyPattern2(this, "year_2021_supply"), + unrealized: createUnrealizedPattern(this, "year_2021"), + }, + _2022: { + activity: createActivityPattern2(this, "year_2022"), + costBasis: createCostBasisPattern(this, "year_2022"), + outputs: createOutputsPattern(this, "year_2022_utxo_count"), + realized: createRealizedPattern(this, "year_2022"), + relative: createRelativePattern4(this, "year_2022_supply_in"), + supply: createSupplyPattern2(this, "year_2022_supply"), + unrealized: createUnrealizedPattern(this, "year_2022"), + }, + _2023: { + activity: createActivityPattern2(this, "year_2023"), + costBasis: createCostBasisPattern(this, "year_2023"), + outputs: createOutputsPattern(this, "year_2023_utxo_count"), + realized: createRealizedPattern(this, "year_2023"), + relative: createRelativePattern4(this, "year_2023_supply_in"), + supply: createSupplyPattern2(this, "year_2023_supply"), + unrealized: createUnrealizedPattern(this, "year_2023"), + }, + _2024: { + activity: createActivityPattern2(this, "year_2024"), + costBasis: createCostBasisPattern(this, "year_2024"), + outputs: createOutputsPattern(this, "year_2024_utxo_count"), + realized: createRealizedPattern(this, "year_2024"), + relative: createRelativePattern4(this, "year_2024_supply_in"), + supply: createSupplyPattern2(this, "year_2024_supply"), + unrealized: createUnrealizedPattern(this, "year_2024"), + }, + _2025: { + activity: createActivityPattern2(this, "year_2025"), + costBasis: createCostBasisPattern(this, "year_2025"), + outputs: createOutputsPattern(this, "year_2025_utxo_count"), + realized: createRealizedPattern(this, "year_2025"), + relative: createRelativePattern4(this, "year_2025_supply_in"), + supply: createSupplyPattern2(this, "year_2025_supply"), + unrealized: createUnrealizedPattern(this, "year_2025"), + }, + _2026: { + activity: createActivityPattern2(this, "year_2026"), + costBasis: createCostBasisPattern(this, "year_2026"), + outputs: createOutputsPattern(this, "year_2026_utxo_count"), + realized: createRealizedPattern(this, "year_2026"), + relative: createRelativePattern4(this, "year_2026_supply_in"), + supply: createSupplyPattern2(this, "year_2026_supply"), + unrealized: createUnrealizedPattern(this, "year_2026"), + }, }, }, }, @@ -7314,7 +13758,19 @@ class BrkClient extends BrkClientBase { ), }, dca: { - classAveragePrice: createClassAveragePricePattern(this, "dca_class"), + classAveragePrice: { + _2015: createMetricPattern4(this, "dca_class_2015_average_price"), + _2016: createMetricPattern4(this, "dca_class_2016_average_price"), + _2017: createMetricPattern4(this, "dca_class_2017_average_price"), + _2018: createMetricPattern4(this, "dca_class_2018_average_price"), + _2019: createMetricPattern4(this, "dca_class_2019_average_price"), + _2020: createMetricPattern4(this, "dca_class_2020_average_price"), + _2021: createMetricPattern4(this, "dca_class_2021_average_price"), + _2022: createMetricPattern4(this, "dca_class_2022_average_price"), + _2023: createMetricPattern4(this, "dca_class_2023_average_price"), + _2024: createMetricPattern4(this, "dca_class_2024_average_price"), + _2025: createMetricPattern4(this, "dca_class_2025_average_price"), + }, classReturns: createClassAveragePricePattern(this, "dca_class"), classStack: { _2015: create_2015Pattern(this, "dca_class_2015_stack"), @@ -7364,41 +13820,1481 @@ class BrkClient extends BrkClientBase { }, lookback: createLookbackPattern(this, "price"), movingAverage: { - price111dSma: createPrice111dSmaPattern(this, "price_111d_sma"), - price12dEma: createPrice111dSmaPattern(this, "price_12d_ema"), - price13dEma: createPrice111dSmaPattern(this, "price_13d_ema"), - price13dSma: createPrice111dSmaPattern(this, "price_13d_sma"), - price144dEma: createPrice111dSmaPattern(this, "price_144d_ema"), - price144dSma: createPrice111dSmaPattern(this, "price_144d_sma"), - price1mEma: createPrice111dSmaPattern(this, "price_1m_ema"), - price1mSma: createPrice111dSmaPattern(this, "price_1m_sma"), - price1wEma: createPrice111dSmaPattern(this, "price_1w_ema"), - price1wSma: createPrice111dSmaPattern(this, "price_1w_sma"), - price1yEma: createPrice111dSmaPattern(this, "price_1y_ema"), - price1ySma: createPrice111dSmaPattern(this, "price_1y_sma"), - price200dEma: createPrice111dSmaPattern(this, "price_200d_ema"), - price200dSma: createPrice111dSmaPattern(this, "price_200d_sma"), + price111dSma: { + price: createMetricPattern4(this, "price_111d_sma"), + ratio: createMetricPattern4(this, "price_111d_sma_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_111d_sma_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_111d_sma_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_111d_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_111d_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_111d_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_111d_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_111d_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_111d_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_111d_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_111d_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_111d_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4( + this, + "price_111d_sma_ratio_pct95", + ), + ratioPct95Usd: createMetricPattern4( + this, + "price_111d_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4( + this, + "price_111d_sma_ratio_pct98", + ), + ratioPct98Usd: createMetricPattern4( + this, + "price_111d_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4( + this, + "price_111d_sma_ratio_pct99", + ), + ratioPct99Usd: createMetricPattern4( + this, + "price_111d_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_111d_sma_ratio"), + }, + price12dEma: { + price: createMetricPattern4(this, "price_12d_ema"), + ratio: createMetricPattern4(this, "price_12d_ema_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_12d_ema_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_12d_ema_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_12d_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_12d_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_12d_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_12d_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_12d_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_12d_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_12d_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_12d_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_12d_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_12d_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_12d_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_12d_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_12d_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_12d_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_12d_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_12d_ema_ratio"), + }, + price13dEma: { + price: createMetricPattern4(this, "price_13d_ema"), + ratio: createMetricPattern4(this, "price_13d_ema_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_13d_ema_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_13d_ema_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_13d_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_13d_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_13d_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_13d_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_13d_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_13d_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_13d_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_13d_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_13d_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_13d_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_13d_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_13d_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_13d_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_13d_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_13d_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_13d_ema_ratio"), + }, + price13dSma: { + price: createMetricPattern4(this, "price_13d_sma"), + ratio: createMetricPattern4(this, "price_13d_sma_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_13d_sma_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_13d_sma_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_13d_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_13d_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_13d_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_13d_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_13d_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_13d_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_13d_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_13d_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_13d_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_13d_sma_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_13d_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_13d_sma_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_13d_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_13d_sma_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_13d_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_13d_sma_ratio"), + }, + price144dEma: { + price: createMetricPattern4(this, "price_144d_ema"), + ratio: createMetricPattern4(this, "price_144d_ema_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_144d_ema_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_144d_ema_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_144d_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_144d_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_144d_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_144d_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_144d_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_144d_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_144d_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_144d_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_144d_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4( + this, + "price_144d_ema_ratio_pct95", + ), + ratioPct95Usd: createMetricPattern4( + this, + "price_144d_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4( + this, + "price_144d_ema_ratio_pct98", + ), + ratioPct98Usd: createMetricPattern4( + this, + "price_144d_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4( + this, + "price_144d_ema_ratio_pct99", + ), + ratioPct99Usd: createMetricPattern4( + this, + "price_144d_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_144d_ema_ratio"), + }, + price144dSma: { + price: createMetricPattern4(this, "price_144d_sma"), + ratio: createMetricPattern4(this, "price_144d_sma_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_144d_sma_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_144d_sma_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_144d_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_144d_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_144d_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_144d_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_144d_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_144d_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_144d_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_144d_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_144d_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4( + this, + "price_144d_sma_ratio_pct95", + ), + ratioPct95Usd: createMetricPattern4( + this, + "price_144d_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4( + this, + "price_144d_sma_ratio_pct98", + ), + ratioPct98Usd: createMetricPattern4( + this, + "price_144d_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4( + this, + "price_144d_sma_ratio_pct99", + ), + ratioPct99Usd: createMetricPattern4( + this, + "price_144d_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_144d_sma_ratio"), + }, + price1mEma: { + price: createMetricPattern4(this, "price_1m_ema"), + ratio: createMetricPattern4(this, "price_1m_ema_ratio"), + ratio1mSma: createMetricPattern4(this, "price_1m_ema_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_1m_ema_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_1m_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_1m_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_1m_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_1m_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_1m_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_1m_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_1m_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_1m_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_1m_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_1m_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_1m_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_1m_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_1m_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_1m_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_1m_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_1m_ema_ratio"), + }, + price1mSma: { + price: createMetricPattern4(this, "price_1m_sma"), + ratio: createMetricPattern4(this, "price_1m_sma_ratio"), + ratio1mSma: createMetricPattern4(this, "price_1m_sma_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_1m_sma_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_1m_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_1m_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_1m_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_1m_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_1m_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_1m_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_1m_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_1m_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_1m_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_1m_sma_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_1m_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_1m_sma_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_1m_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_1m_sma_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_1m_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_1m_sma_ratio"), + }, + price1wEma: { + price: createMetricPattern4(this, "price_1w_ema"), + ratio: createMetricPattern4(this, "price_1w_ema_ratio"), + ratio1mSma: createMetricPattern4(this, "price_1w_ema_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_1w_ema_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_1w_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_1w_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_1w_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_1w_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_1w_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_1w_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_1w_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_1w_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_1w_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_1w_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_1w_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_1w_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_1w_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_1w_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_1w_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_1w_ema_ratio"), + }, + price1wSma: { + price: createMetricPattern4(this, "price_1w_sma"), + ratio: createMetricPattern4(this, "price_1w_sma_ratio"), + ratio1mSma: createMetricPattern4(this, "price_1w_sma_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_1w_sma_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_1w_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_1w_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_1w_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_1w_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_1w_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_1w_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_1w_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_1w_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_1w_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_1w_sma_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_1w_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_1w_sma_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_1w_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_1w_sma_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_1w_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_1w_sma_ratio"), + }, + price1yEma: { + price: createMetricPattern4(this, "price_1y_ema"), + ratio: createMetricPattern4(this, "price_1y_ema_ratio"), + ratio1mSma: createMetricPattern4(this, "price_1y_ema_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_1y_ema_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_1y_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_1y_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_1y_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_1y_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_1y_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_1y_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_1y_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_1y_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_1y_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_1y_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_1y_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_1y_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_1y_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_1y_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_1y_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_1y_ema_ratio"), + }, + price1ySma: { + price: createMetricPattern4(this, "price_1y_sma"), + ratio: createMetricPattern4(this, "price_1y_sma_ratio"), + ratio1mSma: createMetricPattern4(this, "price_1y_sma_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_1y_sma_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_1y_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_1y_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_1y_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_1y_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_1y_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_1y_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_1y_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_1y_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_1y_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_1y_sma_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_1y_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_1y_sma_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_1y_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_1y_sma_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_1y_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_1y_sma_ratio"), + }, + price200dEma: { + price: createMetricPattern4(this, "price_200d_ema"), + ratio: createMetricPattern4(this, "price_200d_ema_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_200d_ema_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_200d_ema_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_200d_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_200d_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_200d_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_200d_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_200d_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_200d_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_200d_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_200d_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_200d_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4( + this, + "price_200d_ema_ratio_pct95", + ), + ratioPct95Usd: createMetricPattern4( + this, + "price_200d_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4( + this, + "price_200d_ema_ratio_pct98", + ), + ratioPct98Usd: createMetricPattern4( + this, + "price_200d_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4( + this, + "price_200d_ema_ratio_pct99", + ), + ratioPct99Usd: createMetricPattern4( + this, + "price_200d_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_200d_ema_ratio"), + }, + price200dSma: { + price: createMetricPattern4(this, "price_200d_sma"), + ratio: createMetricPattern4(this, "price_200d_sma_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_200d_sma_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_200d_sma_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_200d_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_200d_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_200d_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_200d_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_200d_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_200d_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_200d_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_200d_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_200d_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4( + this, + "price_200d_sma_ratio_pct95", + ), + ratioPct95Usd: createMetricPattern4( + this, + "price_200d_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4( + this, + "price_200d_sma_ratio_pct98", + ), + ratioPct98Usd: createMetricPattern4( + this, + "price_200d_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4( + this, + "price_200d_sma_ratio_pct99", + ), + ratioPct99Usd: createMetricPattern4( + this, + "price_200d_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_200d_sma_ratio"), + }, price200dSmaX08: createMetricPattern4(this, "price_200d_sma_x0_8"), price200dSmaX24: createMetricPattern4(this, "price_200d_sma_x2_4"), - price200wEma: createPrice111dSmaPattern(this, "price_200w_ema"), - price200wSma: createPrice111dSmaPattern(this, "price_200w_sma"), - price21dEma: createPrice111dSmaPattern(this, "price_21d_ema"), - price21dSma: createPrice111dSmaPattern(this, "price_21d_sma"), - price26dEma: createPrice111dSmaPattern(this, "price_26d_ema"), - price2yEma: createPrice111dSmaPattern(this, "price_2y_ema"), - price2ySma: createPrice111dSmaPattern(this, "price_2y_sma"), - price34dEma: createPrice111dSmaPattern(this, "price_34d_ema"), - price34dSma: createPrice111dSmaPattern(this, "price_34d_sma"), - price350dSma: createPrice111dSmaPattern(this, "price_350d_sma"), + price200wEma: { + price: createMetricPattern4(this, "price_200w_ema"), + ratio: createMetricPattern4(this, "price_200w_ema_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_200w_ema_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_200w_ema_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_200w_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_200w_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_200w_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_200w_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_200w_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_200w_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_200w_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_200w_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_200w_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4( + this, + "price_200w_ema_ratio_pct95", + ), + ratioPct95Usd: createMetricPattern4( + this, + "price_200w_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4( + this, + "price_200w_ema_ratio_pct98", + ), + ratioPct98Usd: createMetricPattern4( + this, + "price_200w_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4( + this, + "price_200w_ema_ratio_pct99", + ), + ratioPct99Usd: createMetricPattern4( + this, + "price_200w_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_200w_ema_ratio"), + }, + price200wSma: { + price: createMetricPattern4(this, "price_200w_sma"), + ratio: createMetricPattern4(this, "price_200w_sma_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_200w_sma_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_200w_sma_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_200w_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_200w_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_200w_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_200w_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_200w_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_200w_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_200w_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_200w_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_200w_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4( + this, + "price_200w_sma_ratio_pct95", + ), + ratioPct95Usd: createMetricPattern4( + this, + "price_200w_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4( + this, + "price_200w_sma_ratio_pct98", + ), + ratioPct98Usd: createMetricPattern4( + this, + "price_200w_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4( + this, + "price_200w_sma_ratio_pct99", + ), + ratioPct99Usd: createMetricPattern4( + this, + "price_200w_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_200w_sma_ratio"), + }, + price21dEma: { + price: createMetricPattern4(this, "price_21d_ema"), + ratio: createMetricPattern4(this, "price_21d_ema_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_21d_ema_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_21d_ema_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_21d_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_21d_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_21d_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_21d_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_21d_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_21d_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_21d_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_21d_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_21d_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_21d_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_21d_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_21d_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_21d_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_21d_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_21d_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_21d_ema_ratio"), + }, + price21dSma: { + price: createMetricPattern4(this, "price_21d_sma"), + ratio: createMetricPattern4(this, "price_21d_sma_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_21d_sma_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_21d_sma_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_21d_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_21d_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_21d_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_21d_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_21d_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_21d_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_21d_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_21d_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_21d_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_21d_sma_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_21d_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_21d_sma_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_21d_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_21d_sma_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_21d_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_21d_sma_ratio"), + }, + price26dEma: { + price: createMetricPattern4(this, "price_26d_ema"), + ratio: createMetricPattern4(this, "price_26d_ema_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_26d_ema_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_26d_ema_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_26d_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_26d_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_26d_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_26d_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_26d_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_26d_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_26d_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_26d_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_26d_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_26d_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_26d_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_26d_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_26d_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_26d_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_26d_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_26d_ema_ratio"), + }, + price2yEma: { + price: createMetricPattern4(this, "price_2y_ema"), + ratio: createMetricPattern4(this, "price_2y_ema_ratio"), + ratio1mSma: createMetricPattern4(this, "price_2y_ema_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_2y_ema_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_2y_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_2y_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_2y_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_2y_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_2y_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_2y_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_2y_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_2y_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_2y_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_2y_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_2y_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_2y_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_2y_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_2y_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_2y_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_2y_ema_ratio"), + }, + price2ySma: { + price: createMetricPattern4(this, "price_2y_sma"), + ratio: createMetricPattern4(this, "price_2y_sma_ratio"), + ratio1mSma: createMetricPattern4(this, "price_2y_sma_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_2y_sma_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_2y_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_2y_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_2y_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_2y_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_2y_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_2y_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_2y_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_2y_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_2y_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_2y_sma_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_2y_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_2y_sma_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_2y_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_2y_sma_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_2y_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_2y_sma_ratio"), + }, + price34dEma: { + price: createMetricPattern4(this, "price_34d_ema"), + ratio: createMetricPattern4(this, "price_34d_ema_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_34d_ema_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_34d_ema_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_34d_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_34d_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_34d_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_34d_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_34d_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_34d_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_34d_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_34d_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_34d_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_34d_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_34d_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_34d_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_34d_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_34d_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_34d_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_34d_ema_ratio"), + }, + price34dSma: { + price: createMetricPattern4(this, "price_34d_sma"), + ratio: createMetricPattern4(this, "price_34d_sma_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_34d_sma_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_34d_sma_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_34d_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_34d_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_34d_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_34d_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_34d_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_34d_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_34d_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_34d_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_34d_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_34d_sma_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_34d_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_34d_sma_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_34d_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_34d_sma_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_34d_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_34d_sma_ratio"), + }, + price350dSma: { + price: createMetricPattern4(this, "price_350d_sma"), + ratio: createMetricPattern4(this, "price_350d_sma_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_350d_sma_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_350d_sma_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_350d_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_350d_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_350d_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_350d_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_350d_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_350d_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_350d_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_350d_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_350d_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4( + this, + "price_350d_sma_ratio_pct95", + ), + ratioPct95Usd: createMetricPattern4( + this, + "price_350d_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4( + this, + "price_350d_sma_ratio_pct98", + ), + ratioPct98Usd: createMetricPattern4( + this, + "price_350d_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4( + this, + "price_350d_sma_ratio_pct99", + ), + ratioPct99Usd: createMetricPattern4( + this, + "price_350d_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_350d_sma_ratio"), + }, price350dSmaX2: createMetricPattern4(this, "price_350d_sma_x2"), - price4yEma: createPrice111dSmaPattern(this, "price_4y_ema"), - price4ySma: createPrice111dSmaPattern(this, "price_4y_sma"), - price55dEma: createPrice111dSmaPattern(this, "price_55d_ema"), - price55dSma: createPrice111dSmaPattern(this, "price_55d_sma"), - price89dEma: createPrice111dSmaPattern(this, "price_89d_ema"), - price89dSma: createPrice111dSmaPattern(this, "price_89d_sma"), - price8dEma: createPrice111dSmaPattern(this, "price_8d_ema"), - price8dSma: createPrice111dSmaPattern(this, "price_8d_sma"), + price4yEma: { + price: createMetricPattern4(this, "price_4y_ema"), + ratio: createMetricPattern4(this, "price_4y_ema_ratio"), + ratio1mSma: createMetricPattern4(this, "price_4y_ema_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_4y_ema_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_4y_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_4y_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_4y_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_4y_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_4y_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_4y_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_4y_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_4y_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_4y_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_4y_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_4y_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_4y_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_4y_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_4y_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_4y_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_4y_ema_ratio"), + }, + price4ySma: { + price: createMetricPattern4(this, "price_4y_sma"), + ratio: createMetricPattern4(this, "price_4y_sma_ratio"), + ratio1mSma: createMetricPattern4(this, "price_4y_sma_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_4y_sma_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_4y_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_4y_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_4y_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_4y_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_4y_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_4y_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_4y_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_4y_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_4y_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_4y_sma_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_4y_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_4y_sma_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_4y_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_4y_sma_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_4y_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_4y_sma_ratio"), + }, + price55dEma: { + price: createMetricPattern4(this, "price_55d_ema"), + ratio: createMetricPattern4(this, "price_55d_ema_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_55d_ema_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_55d_ema_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_55d_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_55d_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_55d_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_55d_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_55d_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_55d_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_55d_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_55d_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_55d_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_55d_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_55d_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_55d_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_55d_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_55d_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_55d_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_55d_ema_ratio"), + }, + price55dSma: { + price: createMetricPattern4(this, "price_55d_sma"), + ratio: createMetricPattern4(this, "price_55d_sma_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_55d_sma_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_55d_sma_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_55d_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_55d_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_55d_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_55d_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_55d_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_55d_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_55d_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_55d_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_55d_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_55d_sma_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_55d_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_55d_sma_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_55d_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_55d_sma_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_55d_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_55d_sma_ratio"), + }, + price89dEma: { + price: createMetricPattern4(this, "price_89d_ema"), + ratio: createMetricPattern4(this, "price_89d_ema_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_89d_ema_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_89d_ema_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_89d_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_89d_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_89d_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_89d_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_89d_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_89d_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_89d_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_89d_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_89d_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_89d_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_89d_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_89d_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_89d_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_89d_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_89d_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_89d_ema_ratio"), + }, + price89dSma: { + price: createMetricPattern4(this, "price_89d_sma"), + ratio: createMetricPattern4(this, "price_89d_sma_ratio"), + ratio1mSma: createMetricPattern4( + this, + "price_89d_sma_ratio_1m_sma", + ), + ratio1wSma: createMetricPattern4( + this, + "price_89d_sma_ratio_1w_sma", + ), + ratio1ySd: createRatio1ySdPattern(this, "price_89d_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_89d_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_89d_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_89d_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_89d_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_89d_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_89d_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_89d_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_89d_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_89d_sma_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_89d_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_89d_sma_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_89d_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_89d_sma_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_89d_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_89d_sma_ratio"), + }, + price8dEma: { + price: createMetricPattern4(this, "price_8d_ema"), + ratio: createMetricPattern4(this, "price_8d_ema_ratio"), + ratio1mSma: createMetricPattern4(this, "price_8d_ema_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_8d_ema_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_8d_ema_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_8d_ema_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_8d_ema_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_8d_ema_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_8d_ema_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_8d_ema_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_8d_ema_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_8d_ema_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_8d_ema_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_8d_ema_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_8d_ema_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_8d_ema_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_8d_ema_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_8d_ema_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_8d_ema_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_8d_ema_ratio"), + }, + price8dSma: { + price: createMetricPattern4(this, "price_8d_sma"), + ratio: createMetricPattern4(this, "price_8d_sma_ratio"), + ratio1mSma: createMetricPattern4(this, "price_8d_sma_ratio_1m_sma"), + ratio1wSma: createMetricPattern4(this, "price_8d_sma_ratio_1w_sma"), + ratio1ySd: createRatio1ySdPattern(this, "price_8d_sma_ratio_1y"), + ratio2ySd: createRatio1ySdPattern(this, "price_8d_sma_ratio_2y"), + ratio4ySd: createRatio1ySdPattern(this, "price_8d_sma_ratio_4y"), + ratioPct1: createMetricPattern4(this, "price_8d_sma_ratio_pct1"), + ratioPct1Usd: createMetricPattern4( + this, + "price_8d_sma_ratio_pct1_usd", + ), + ratioPct2: createMetricPattern4(this, "price_8d_sma_ratio_pct2"), + ratioPct2Usd: createMetricPattern4( + this, + "price_8d_sma_ratio_pct2_usd", + ), + ratioPct5: createMetricPattern4(this, "price_8d_sma_ratio_pct5"), + ratioPct5Usd: createMetricPattern4( + this, + "price_8d_sma_ratio_pct5_usd", + ), + ratioPct95: createMetricPattern4(this, "price_8d_sma_ratio_pct95"), + ratioPct95Usd: createMetricPattern4( + this, + "price_8d_sma_ratio_pct95_usd", + ), + ratioPct98: createMetricPattern4(this, "price_8d_sma_ratio_pct98"), + ratioPct98Usd: createMetricPattern4( + this, + "price_8d_sma_ratio_pct98_usd", + ), + ratioPct99: createMetricPattern4(this, "price_8d_sma_ratio_pct99"), + ratioPct99Usd: createMetricPattern4( + this, + "price_8d_sma_ratio_pct99_usd", + ), + ratioSd: createRatio1ySdPattern(this, "price_8d_sma_ratio"), + }, }, range: { price1mMax: createMetricPattern4(this, "price_1m_max"), @@ -7662,8 +15558,14 @@ class BrkClient extends BrkClientBase { priceCents: createMetricPattern11(this, "orange_price_cents"), txCount: createMetricPattern6(this, "oracle_tx_count"), }, - sats: createSatsPattern(this, "price"), - usd: createSatsPattern(this, "price"), + sats: { + ohlc: createMetricPattern1(this, "price_ohlc_sats"), + split: createSplitPattern2(this, "price_sats"), + }, + usd: { + ohlc: createMetricPattern1(this, "price_ohlc"), + split: createSplitPattern2(this, "price"), + }, }, scripts: { count: { diff --git a/packages/brk_client/brk_client/__init__.py b/packages/brk_client/brk_client/__init__.py index 9c35e9d45..daab0ac03 100644 --- a/packages/brk_client/brk_client/__init__.py +++ b/packages/brk_client/brk_client/__init__.py @@ -3423,6 +3423,32 @@ class Price111dSmaPattern: 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: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct05")) + self.pct10: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct10")) + self.pct15: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct15")) + self.pct20: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct20")) + self.pct25: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct25")) + self.pct30: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct30")) + self.pct35: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct35")) + self.pct40: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct40")) + self.pct45: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct45")) + self.pct50: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct50")) + self.pct55: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct55")) + self.pct60: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct60")) + self.pct65: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct65")) + self.pct70: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct70")) + self.pct75: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct75")) + self.pct80: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct80")) + self.pct85: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct85")) + self.pct90: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct90")) + self.pct95: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct95")) + + class ActivePriceRatioPattern: """Pattern struct for repeated tree structure.""" @@ -3477,32 +3503,6 @@ class ActivePriceRatioPattern: self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, acc) -class PercentilesPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.pct05: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct05")) - self.pct10: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct10")) - self.pct15: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct15")) - self.pct20: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct20")) - self.pct25: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct25")) - self.pct30: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct30")) - self.pct35: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct35")) - self.pct40: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct40")) - self.pct45: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct45")) - self.pct50: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct50")) - self.pct55: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct55")) - self.pct60: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct60")) - self.pct65: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct65")) - self.pct70: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct70")) - self.pct75: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct75")) - self.pct80: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct80")) - self.pct85: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct85")) - self.pct90: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct90")) - self.pct95: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "pct95")) - - class RelativePattern5: """Pattern struct for repeated tree structure.""" @@ -3704,39 +3704,17 @@ class ClassAveragePricePattern(Generic[T]): def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._2015: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2015_average_price") - ) - self._2016: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2016_average_price") - ) - self._2017: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2017_average_price") - ) - self._2018: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2018_average_price") - ) - self._2019: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2019_average_price") - ) - self._2020: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2020_average_price") - ) - self._2021: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2021_average_price") - ) - self._2022: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2022_average_price") - ) - self._2023: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2023_average_price") - ) - self._2024: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2024_average_price") - ) - self._2025: MetricPattern4[T] = MetricPattern4( - client, _m(acc, "2025_average_price") - ) + self._2015: MetricPattern4[T] = MetricPattern4(client, _m(acc, "2015_returns")) + self._2016: MetricPattern4[T] = MetricPattern4(client, _m(acc, "2016_returns")) + self._2017: MetricPattern4[T] = MetricPattern4(client, _m(acc, "2017_returns")) + self._2018: MetricPattern4[T] = MetricPattern4(client, _m(acc, "2018_returns")) + self._2019: MetricPattern4[T] = MetricPattern4(client, _m(acc, "2019_returns")) + self._2020: MetricPattern4[T] = MetricPattern4(client, _m(acc, "2020_returns")) + self._2021: MetricPattern4[T] = MetricPattern4(client, _m(acc, "2021_returns")) + self._2022: MetricPattern4[T] = MetricPattern4(client, _m(acc, "2022_returns")) + self._2023: MetricPattern4[T] = MetricPattern4(client, _m(acc, "2023_returns")) + self._2024: MetricPattern4[T] = MetricPattern4(client, _m(acc, "2024_returns")) + self._2025: MetricPattern4[T] = MetricPattern4(client, _m(acc, "2025_returns")) class DollarsPattern(Generic[T]): @@ -3931,6 +3909,62 @@ class _0satsPattern: 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 _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.realized: RealizedPattern2 = RealizedPattern2(client, acc) + self.relative: RelativePattern2 = RelativePattern2(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.realized: RealizedPattern = RealizedPattern(client, acc) + self.relative: RelativePattern4 = RelativePattern4(client, _m(acc, "supply_in")) + self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) + + +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)) + + class UnrealizedPattern: """Pattern struct for repeated tree structure.""" @@ -3959,20 +3993,6 @@ class UnrealizedPattern: ) -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.""" @@ -3987,48 +4007,6 @@ class _10yPattern: self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) -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)) - - -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.realized: RealizedPattern = RealizedPattern(client, acc) - self.relative: RelativePattern4 = RelativePattern4(client, _m(acc, "supply_in")) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, 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.realized: RealizedPattern2 = RealizedPattern2(client, acc) - self.relative: RelativePattern2 = RelativePattern2(client, acc) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) - - class ActivityPattern2: """Pattern struct for repeated tree structure.""" @@ -4062,6 +4040,20 @@ class SplitPattern2(Generic[T]): self.open: MetricPattern1[T] = MetricPattern1(client, _m(acc, "open")) +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.""" @@ -4074,6 +4066,38 @@ class SegwitAdoptionPattern: self.sum: MetricPattern2[StoredF32] = MetricPattern2(client, _m(acc, "sum")) +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 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.sats: BlockCountPattern[Sats] = BlockCountPattern(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.sats: MetricPattern4[Sats] = MetricPattern4(client, acc) + + class CostBasisPattern2: """Pattern struct for repeated tree structure.""" @@ -4100,50 +4124,17 @@ class ActiveSupplyPattern: self.sats: MetricPattern1[Sats] = MetricPattern1(client, acc) -class UnclaimedRewardsPattern: +class CostBasisPattern: """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.max: MetricPattern1[Dollars] = MetricPattern1( + client, _m(acc, "max_cost_basis") ) - self.sats: BlockCountPattern[Sats] = BlockCountPattern(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.sats: MetricPattern4[Sats] = MetricPattern4(client, acc) - - -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 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.min: MetricPattern1[Dollars] = MetricPattern1( + client, _m(acc, "min_cost_basis") ) - self.dollars: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "usd") - ) - self.sats: BlockCountPattern[Sats] = BlockCountPattern(client, acc) class RelativePattern4: @@ -4159,28 +4150,6 @@ class RelativePattern4: ) -class CostBasisPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.max: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "max_cost_basis") - ) - self.min: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "min_cost_basis") - ) - - -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.""" @@ -4192,24 +4161,13 @@ class SupplyPattern2: self.total: ActiveSupplyPattern = ActiveSupplyPattern(client, acc) -class SatsPattern(Generic[T]): +class _1dReturns1mSdPattern: """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 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.sum: MetricPattern1[T] = MetricPattern1(client, acc) + self.sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "sd")) + self.sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "sma")) class BitcoinPattern2(Generic[T]): @@ -4223,12 +4181,24 @@ class BitcoinPattern2(Generic[T]): self.sum: MetricPattern1[T] = MetricPattern1(client, acc) -class RealizedPriceExtraPattern: +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.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, acc) + 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 OutputsPattern: @@ -4239,6 +4209,14 @@ class OutputsPattern: 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 @@ -4567,6 +4545,256 @@ class MetricsTree_Cointime_Cap: ) +class MetricsTree_Cointime_Pricing_ActivePriceRatio: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "active_price_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "active_price_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "active_price_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "active_price_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "active_price_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "active_price_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "active_price_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "active_price_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "active_price_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "active_price_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "active_price_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "active_price_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "active_price_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "active_price_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "active_price_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "active_price_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "active_price_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "active_price_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "active_price_ratio") + + +class MetricsTree_Cointime_Pricing_CointimePriceRatio: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "cointime_price_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "cointime_price_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "cointime_price_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "cointime_price_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "cointime_price_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "cointime_price_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "cointime_price_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "cointime_price_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "cointime_price_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "cointime_price_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "cointime_price_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "cointime_price_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "cointime_price_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "cointime_price_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "cointime_price_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "cointime_price_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "cointime_price_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "cointime_price_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "cointime_price_ratio" + ) + + +class MetricsTree_Cointime_Pricing_TrueMarketMeanRatio: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "true_market_mean_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "true_market_mean_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "true_market_mean_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "true_market_mean_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "true_market_mean_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "true_market_mean_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "true_market_mean_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "true_market_mean_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "true_market_mean_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "true_market_mean_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "true_market_mean_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "true_market_mean_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "true_market_mean_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "true_market_mean_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "true_market_mean_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "true_market_mean_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "true_market_mean_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "true_market_mean_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "true_market_mean_ratio" + ) + + +class MetricsTree_Cointime_Pricing_VaultedPriceRatio: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "vaulted_price_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "vaulted_price_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "vaulted_price_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "vaulted_price_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "vaulted_price_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "vaulted_price_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "vaulted_price_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "vaulted_price_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "vaulted_price_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "vaulted_price_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "vaulted_price_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "vaulted_price_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "vaulted_price_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "vaulted_price_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "vaulted_price_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "vaulted_price_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "vaulted_price_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "vaulted_price_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "vaulted_price_ratio" + ) + + class MetricsTree_Cointime_Pricing: """Metrics tree node.""" @@ -4574,26 +4802,26 @@ class MetricsTree_Cointime_Pricing: self.active_price: MetricPattern1[Dollars] = MetricPattern1( client, "active_price" ) - self.active_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, "active_price_ratio" + self.active_price_ratio: MetricsTree_Cointime_Pricing_ActivePriceRatio = ( + MetricsTree_Cointime_Pricing_ActivePriceRatio(client) ) self.cointime_price: MetricPattern1[Dollars] = MetricPattern1( client, "cointime_price" ) - self.cointime_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, "cointime_price_ratio" + self.cointime_price_ratio: MetricsTree_Cointime_Pricing_CointimePriceRatio = ( + MetricsTree_Cointime_Pricing_CointimePriceRatio(client) ) self.true_market_mean: MetricPattern1[Dollars] = MetricPattern1( client, "true_market_mean" ) - self.true_market_mean_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, "true_market_mean_ratio" + self.true_market_mean_ratio: MetricsTree_Cointime_Pricing_TrueMarketMeanRatio = MetricsTree_Cointime_Pricing_TrueMarketMeanRatio( + client ) self.vaulted_price: MetricPattern1[Dollars] = MetricPattern1( client, "vaulted_price" ) - self.vaulted_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, "vaulted_price_ratio" + self.vaulted_price_ratio: MetricsTree_Cointime_Pricing_VaultedPriceRatio = ( + MetricsTree_Cointime_Pricing_VaultedPriceRatio(client) ) @@ -4702,52 +4930,810 @@ class MetricsTree_Constants: ) +class MetricsTree_Distribution_AddressCohorts_AmountRange_0sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_with_0sats") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_with_0sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "addrs_with_0sats") + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_with_0sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_with_0sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_with_0sats") + self.supply: SupplyPattern2 = SupplyPattern2(client, "addrs_with_0sats_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_with_0sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_100btcTo1kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_100btc_under_1k_btc" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_100btc_under_1k_btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_100btc_under_1k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_100btc_under_1k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_100btc_under_1k_btc" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_100btc_under_1k_btc" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_100btc_under_1k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_100btc_under_1k_btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_100kBtcOrMore: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_100k_btc" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_100k_btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_100k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_100k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_100k_btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_100k_btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_100k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_100k_btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_100kSatsTo1mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_100k_sats_under_1m_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_100k_sats_under_1m_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_100k_sats_under_1m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_100k_sats_under_1m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_100k_sats_under_1m_sats" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_100k_sats_under_1m_sats" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_100k_sats_under_1m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_100k_sats_under_1m_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_100satsTo1kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_100sats_under_1k_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_100sats_under_1k_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_100sats_under_1k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_100sats_under_1k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_100sats_under_1k_sats" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_100sats_under_1k_sats" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_100sats_under_1k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_100sats_under_1k_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_10btcTo100btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_10btc_under_100btc" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_10btc_under_100btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_10btc_under_100btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_10btc_under_100btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_10btc_under_100btc" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_10btc_under_100btc" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_10btc_under_100btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_10btc_under_100btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_10kBtcTo100kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_10k_btc_under_100k_btc" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_10k_btc_under_100k_btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_10k_btc_under_100k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_10k_btc_under_100k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_10k_btc_under_100k_btc" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_10k_btc_under_100k_btc" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_10k_btc_under_100k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_10k_btc_under_100k_btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_10kSatsTo100kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_10k_sats_under_100k_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_10k_sats_under_100k_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_10k_sats_under_100k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_10k_sats_under_100k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_10k_sats_under_100k_sats" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_10k_sats_under_100k_sats" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_10k_sats_under_100k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_10k_sats_under_100k_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_10mSatsTo1btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_10m_sats_under_1btc" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_10m_sats_under_1btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_10m_sats_under_1btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_10m_sats_under_1btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_10m_sats_under_1btc" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_10m_sats_under_1btc" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_10m_sats_under_1btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_10m_sats_under_1btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_10satsTo100sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_10sats_under_100sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_10sats_under_100sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_10sats_under_100sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_10sats_under_100sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_10sats_under_100sats" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_10sats_under_100sats" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_10sats_under_100sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_10sats_under_100sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_1btcTo10btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_1btc_under_10btc" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_1btc_under_10btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_1btc_under_10btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_1btc_under_10btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_1btc_under_10btc" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_1btc_under_10btc" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_1btc_under_10btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_1btc_under_10btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_1kBtcTo10kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_1k_btc_under_10k_btc" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_1k_btc_under_10k_btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_1k_btc_under_10k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_1k_btc_under_10k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_1k_btc_under_10k_btc" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_1k_btc_under_10k_btc" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_1k_btc_under_10k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_1k_btc_under_10k_btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_1kSatsTo10kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_1k_sats_under_10k_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_1k_sats_under_10k_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_1k_sats_under_10k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_1k_sats_under_10k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_1k_sats_under_10k_sats" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_1k_sats_under_10k_sats" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_1k_sats_under_10k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_1k_sats_under_10k_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_1mSatsTo10mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_1m_sats_under_10m_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_1m_sats_under_10m_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_1m_sats_under_10m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_1m_sats_under_10m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_1m_sats_under_10m_sats" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_1m_sats_under_10m_sats" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_1m_sats_under_10m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_1m_sats_under_10m_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_AmountRange_1satTo10sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_1sat_under_10sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_1sat_under_10sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_1sat_under_10sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_1sat_under_10sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_1sat_under_10sats" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_1sat_under_10sats" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_1sat_under_10sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_1sat_under_10sats" + ) + + 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._0sats: MetricsTree_Distribution_AddressCohorts_AmountRange_0sats = ( + MetricsTree_Distribution_AddressCohorts_AmountRange_0sats(client) ) - self._100k_btc_or_more: _0satsPattern = _0satsPattern( - client, "addrs_above_100k_btc" + self._100btc_to_1k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_100btcTo1kBtc = MetricsTree_Distribution_AddressCohorts_AmountRange_100btcTo1kBtc( + client ) - self._100k_sats_to_1m_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_100k_sats_under_1m_sats" + self._100k_btc_or_more: MetricsTree_Distribution_AddressCohorts_AmountRange_100kBtcOrMore = MetricsTree_Distribution_AddressCohorts_AmountRange_100kBtcOrMore( + client ) - self._100sats_to_1k_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_100sats_under_1k_sats" + self._100k_sats_to_1m_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_100kSatsTo1mSats = MetricsTree_Distribution_AddressCohorts_AmountRange_100kSatsTo1mSats( + client ) - self._10btc_to_100btc: _0satsPattern = _0satsPattern( - client, "addrs_above_10btc_under_100btc" + self._100sats_to_1k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_100satsTo1kSats = MetricsTree_Distribution_AddressCohorts_AmountRange_100satsTo1kSats( + client ) - self._10k_btc_to_100k_btc: _0satsPattern = _0satsPattern( - client, "addrs_above_10k_btc_under_100k_btc" + self._10btc_to_100btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10btcTo100btc = MetricsTree_Distribution_AddressCohorts_AmountRange_10btcTo100btc( + client ) - self._10k_sats_to_100k_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_10k_sats_under_100k_sats" + self._10k_btc_to_100k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10kBtcTo100kBtc = MetricsTree_Distribution_AddressCohorts_AmountRange_10kBtcTo100kBtc( + client ) - self._10m_sats_to_1btc: _0satsPattern = _0satsPattern( - client, "addrs_above_10m_sats_under_1btc" + self._10k_sats_to_100k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_10kSatsTo100kSats = MetricsTree_Distribution_AddressCohorts_AmountRange_10kSatsTo100kSats( + client ) - self._10sats_to_100sats: _0satsPattern = _0satsPattern( - client, "addrs_above_10sats_under_100sats" + self._10m_sats_to_1btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10mSatsTo1btc = MetricsTree_Distribution_AddressCohorts_AmountRange_10mSatsTo1btc( + client ) - self._1btc_to_10btc: _0satsPattern = _0satsPattern( - client, "addrs_above_1btc_under_10btc" + self._10sats_to_100sats: MetricsTree_Distribution_AddressCohorts_AmountRange_10satsTo100sats = MetricsTree_Distribution_AddressCohorts_AmountRange_10satsTo100sats( + client ) - self._1k_btc_to_10k_btc: _0satsPattern = _0satsPattern( - client, "addrs_above_1k_btc_under_10k_btc" + self._1btc_to_10btc: MetricsTree_Distribution_AddressCohorts_AmountRange_1btcTo10btc = MetricsTree_Distribution_AddressCohorts_AmountRange_1btcTo10btc( + client ) - self._1k_sats_to_10k_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_1k_sats_under_10k_sats" + self._1k_btc_to_10k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_1kBtcTo10kBtc = MetricsTree_Distribution_AddressCohorts_AmountRange_1kBtcTo10kBtc( + client ) - self._1m_sats_to_10m_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_1m_sats_under_10m_sats" + self._1k_sats_to_10k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_1kSatsTo10kSats = MetricsTree_Distribution_AddressCohorts_AmountRange_1kSatsTo10kSats( + client ) - self._1sat_to_10sats: _0satsPattern = _0satsPattern( - client, "addrs_above_1sat_under_10sats" + self._1m_sats_to_10m_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_1mSatsTo10mSats = MetricsTree_Distribution_AddressCohorts_AmountRange_1mSatsTo10mSats( + client + ) + self._1sat_to_10sats: MetricsTree_Distribution_AddressCohorts_AmountRange_1satTo10sats = MetricsTree_Distribution_AddressCohorts_AmountRange_1satTo10sats( + client + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_100btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_above_100btc") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_100btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_100btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_100btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_100btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_100btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_100btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_100btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_100kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_100k_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_100k_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_100k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_100k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_above_100k_sats" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_above_100k_sats" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_100k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_100k_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_100sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_100sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_100sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_100sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_100sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_100sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_100sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_100sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_100sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_10btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_above_10btc") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_10btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_10btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_10btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_10btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_10btc") + self.supply: SupplyPattern2 = SupplyPattern2(client, "addrs_above_10btc_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_10btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_10kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_10k_btc" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_10k_btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_10k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_10k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_10k_btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_10k_btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_10k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_10k_btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_10kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_10k_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_10k_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_10k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_10k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_10k_sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_10k_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_10k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_10k_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_10mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_10m_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_10m_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_10m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_10m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_10m_sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_10m_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_10m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_10m_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_10sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_above_10sats") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_10sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_10sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_10sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_10sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_10sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_10sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_10sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_1btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_above_1btc") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_1btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "addrs_above_1btc") + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_1btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_1btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_1btc") + self.supply: SupplyPattern2 = SupplyPattern2(client, "addrs_above_1btc_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_1btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_1kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_above_1k_btc") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_1k_btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_1k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_1k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_1k_btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_1k_btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_1k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_1k_btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_1kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_1k_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_1k_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_1k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_1k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_1k_sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_1k_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_1k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_1k_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_1mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_above_1m_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_1m_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_above_1m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_1m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_1m_sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_1m_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_above_1m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_1m_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_GeAmount_1sat: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_above_1sat") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_above_1sat_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "addrs_above_1sat") + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_above_1sat_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_above_1sat") + self.relative: RelativePattern = RelativePattern(client, "addrs_above_1sat") + self.supply: SupplyPattern2 = SupplyPattern2(client, "addrs_above_1sat_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_above_1sat" ) @@ -4755,38 +5741,416 @@ class MetricsTree_Distribution_AddressCohorts_GeAmount: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ""): - self._100btc: _0satsPattern = _0satsPattern(client, "addrs_above_100btc") - self._100k_sats: _0satsPattern = _0satsPattern(client, "addrs_above_100k_sats") - self._100sats: _0satsPattern = _0satsPattern(client, "addrs_above_100sats") - self._10btc: _0satsPattern = _0satsPattern(client, "addrs_above_10btc") - self._10k_btc: _0satsPattern = _0satsPattern(client, "addrs_above_10k_btc") - self._10k_sats: _0satsPattern = _0satsPattern(client, "addrs_above_10k_sats") - self._10m_sats: _0satsPattern = _0satsPattern(client, "addrs_above_10m_sats") - self._10sats: _0satsPattern = _0satsPattern(client, "addrs_above_10sats") - self._1btc: _0satsPattern = _0satsPattern(client, "addrs_above_1btc") - self._1k_btc: _0satsPattern = _0satsPattern(client, "addrs_above_1k_btc") - self._1k_sats: _0satsPattern = _0satsPattern(client, "addrs_above_1k_sats") - self._1m_sats: _0satsPattern = _0satsPattern(client, "addrs_above_1m_sats") - self._1sat: _0satsPattern = _0satsPattern(client, "addrs_above_1sat") + self._100btc: MetricsTree_Distribution_AddressCohorts_GeAmount_100btc = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_100btc(client) + ) + self._100k_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_100kSats = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_100kSats(client) + ) + self._100sats: MetricsTree_Distribution_AddressCohorts_GeAmount_100sats = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_100sats(client) + ) + self._10btc: MetricsTree_Distribution_AddressCohorts_GeAmount_10btc = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_10btc(client) + ) + self._10k_btc: MetricsTree_Distribution_AddressCohorts_GeAmount_10kBtc = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_10kBtc(client) + ) + self._10k_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_10kSats = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_10kSats(client) + ) + self._10m_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_10mSats = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_10mSats(client) + ) + self._10sats: MetricsTree_Distribution_AddressCohorts_GeAmount_10sats = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_10sats(client) + ) + self._1btc: MetricsTree_Distribution_AddressCohorts_GeAmount_1btc = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_1btc(client) + ) + self._1k_btc: MetricsTree_Distribution_AddressCohorts_GeAmount_1kBtc = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_1kBtc(client) + ) + self._1k_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_1kSats = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_1kSats(client) + ) + self._1m_sats: MetricsTree_Distribution_AddressCohorts_GeAmount_1mSats = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_1mSats(client) + ) + self._1sat: MetricsTree_Distribution_AddressCohorts_GeAmount_1sat = ( + MetricsTree_Distribution_AddressCohorts_GeAmount_1sat(client) + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_100btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_under_100btc") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_100btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_100btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_100btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_100btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_100btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_under_100btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_100btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_100kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_under_100k_btc" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_100k_btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_100k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_100k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_100k_btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_100k_btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_under_100k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_100k_btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_100kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_under_100k_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_100k_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_100k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_100k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "addrs_under_100k_sats" + ) + self.relative: RelativePattern = RelativePattern( + client, "addrs_under_100k_sats" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_under_100k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_100k_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_100sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_under_100sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_100sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_100sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_100sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_100sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_100sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_under_100sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_100sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_10btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_under_10btc") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_10btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_10btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_10btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_10btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_10btc") + self.supply: SupplyPattern2 = SupplyPattern2(client, "addrs_under_10btc_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_10btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_10kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_under_10k_btc" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_10k_btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_10k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_10k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_10k_btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_10k_btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_under_10k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_10k_btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_10kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_under_10k_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_10k_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_10k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_10k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_10k_sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_10k_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_under_10k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_10k_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_10mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_under_10m_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_10m_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_10m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_10m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_10m_sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_10m_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_under_10m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_10m_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_10sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_under_10sats") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_10sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_10sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_10sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_10sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_10sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_under_10sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_10sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_1btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_under_1btc") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_1btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "addrs_under_1btc") + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_1btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_1btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_1btc") + self.supply: SupplyPattern2 = SupplyPattern2(client, "addrs_under_1btc_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_1btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_1kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "addrs_under_1k_btc") + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_1k_btc_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_1k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_1k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_1k_btc") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_1k_btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_under_1k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_1k_btc" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_1kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_under_1k_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_1k_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_1k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_1k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_1k_sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_1k_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_under_1k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_1k_sats" + ) + + +class MetricsTree_Distribution_AddressCohorts_LtAmount_1mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "addrs_under_1m_sats" + ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( + client, "addrs_under_1m_sats_addr_count" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "addrs_under_1m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "addrs_under_1m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "addrs_under_1m_sats") + self.relative: RelativePattern = RelativePattern(client, "addrs_under_1m_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "addrs_under_1m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "addrs_under_1m_sats" + ) 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") + self._100btc: MetricsTree_Distribution_AddressCohorts_LtAmount_100btc = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_100btc(client) + ) + self._100k_btc: MetricsTree_Distribution_AddressCohorts_LtAmount_100kBtc = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_100kBtc(client) + ) + self._100k_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_100kSats = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_100kSats(client) + ) + self._100sats: MetricsTree_Distribution_AddressCohorts_LtAmount_100sats = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_100sats(client) + ) + self._10btc: MetricsTree_Distribution_AddressCohorts_LtAmount_10btc = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_10btc(client) + ) + self._10k_btc: MetricsTree_Distribution_AddressCohorts_LtAmount_10kBtc = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_10kBtc(client) + ) + self._10k_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_10kSats = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_10kSats(client) + ) + self._10m_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_10mSats = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_10mSats(client) + ) + self._10sats: MetricsTree_Distribution_AddressCohorts_LtAmount_10sats = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_10sats(client) + ) + self._1btc: MetricsTree_Distribution_AddressCohorts_LtAmount_1btc = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_1btc(client) + ) + self._1k_btc: MetricsTree_Distribution_AddressCohorts_LtAmount_1kBtc = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_1kBtc(client) + ) + self._1k_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_1kSats = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_1kSats(client) + ) + self._1m_sats: MetricsTree_Distribution_AddressCohorts_LtAmount_1mSats = ( + MetricsTree_Distribution_AddressCohorts_LtAmount_1mSats(client) + ) class MetricsTree_Distribution_AddressCohorts: @@ -4846,71 +6210,949 @@ class MetricsTree_Distribution_AnyAddressIndexes: ) +class MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_10y_up_to_12y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_10y_up_to_12y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_10y_up_to_12y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_10y_up_to_12y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_10y_up_to_12y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_10y_up_to_12y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_10y_up_to_12y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_10y_up_to_12y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_10y_up_to_12y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_12y_up_to_15y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_12y_up_to_15y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_12y_up_to_15y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_12y_up_to_15y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_12y_up_to_15y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_12y_up_to_15y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_12y_up_to_15y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_12y_up_to_15y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_12y_up_to_15y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_1d_up_to_1w_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_1d_up_to_1w_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_1d_up_to_1w_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_1d_up_to_1w_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_1d_up_to_1w_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_1d_up_to_1w_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_1d_up_to_1w_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_1d_up_to_1w_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_1d_up_to_1w_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_1h_up_to_1d_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_1h_up_to_1d_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_1h_up_to_1d_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_1h_up_to_1d_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_1h_up_to_1d_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_1h_up_to_1d_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_1h_up_to_1d_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_1h_up_to_1d_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_1h_up_to_1d_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_1m_up_to_2m_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_1m_up_to_2m_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_1m_up_to_2m_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_1m_up_to_2m_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_1m_up_to_2m_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_1m_up_to_2m_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_1m_up_to_2m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_1m_up_to_2m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_1m_up_to_2m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_1w_up_to_1m_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_1w_up_to_1m_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_1w_up_to_1m_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_1w_up_to_1m_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_1w_up_to_1m_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_1w_up_to_1m_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_1w_up_to_1m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_1w_up_to_1m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_1w_up_to_1m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_1y_up_to_2y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_1y_up_to_2y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_1y_up_to_2y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_1y_up_to_2y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_1y_up_to_2y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_1y_up_to_2y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_1y_up_to_2y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_1y_up_to_2y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_1y_up_to_2y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_2m_up_to_3m_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_2m_up_to_3m_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_2m_up_to_3m_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_2m_up_to_3m_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_2m_up_to_3m_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_2m_up_to_3m_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_2m_up_to_3m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_2m_up_to_3m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_2m_up_to_3m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_2y_up_to_3y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_2y_up_to_3y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_2y_up_to_3y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_2y_up_to_3y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_2y_up_to_3y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_2y_up_to_3y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_2y_up_to_3y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_2y_up_to_3y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_2y_up_to_3y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_3m_up_to_4m_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_3m_up_to_4m_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_3m_up_to_4m_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_3m_up_to_4m_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_3m_up_to_4m_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_3m_up_to_4m_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_3m_up_to_4m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_3m_up_to_4m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_3m_up_to_4m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_3y_up_to_4y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_3y_up_to_4y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_3y_up_to_4y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_3y_up_to_4y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_3y_up_to_4y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_3y_up_to_4y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_3y_up_to_4y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_3y_up_to_4y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_3y_up_to_4y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_4m_up_to_5m_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_4m_up_to_5m_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_4m_up_to_5m_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_4m_up_to_5m_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_4m_up_to_5m_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_4m_up_to_5m_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_4m_up_to_5m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_4m_up_to_5m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_4m_up_to_5m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_4y_up_to_5y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_4y_up_to_5y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_4y_up_to_5y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_4y_up_to_5y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_4y_up_to_5y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_4y_up_to_5y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_4y_up_to_5y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_4y_up_to_5y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_4y_up_to_5y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_5m_up_to_6m_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_5m_up_to_6m_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_5m_up_to_6m_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_5m_up_to_6m_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_5m_up_to_6m_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_5m_up_to_6m_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_5m_up_to_6m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_5m_up_to_6m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_5m_up_to_6m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_5y_up_to_6y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_5y_up_to_6y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_5y_up_to_6y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_5y_up_to_6y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_5y_up_to_6y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_5y_up_to_6y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_5y_up_to_6y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_5y_up_to_6y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_5y_up_to_6y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_6m_up_to_1y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_6m_up_to_1y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_6m_up_to_1y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_6m_up_to_1y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_6m_up_to_1y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_6m_up_to_1y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_6m_up_to_1y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_6m_up_to_1y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_6m_up_to_1y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_6y_up_to_7y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_6y_up_to_7y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_6y_up_to_7y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_6y_up_to_7y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_6y_up_to_7y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_6y_up_to_7y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_6y_up_to_7y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_6y_up_to_7y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_6y_up_to_7y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_7y_up_to_8y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_7y_up_to_8y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_7y_up_to_8y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_7y_up_to_8y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_7y_up_to_8y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_7y_up_to_8y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_7y_up_to_8y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_7y_up_to_8y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_7y_up_to_8y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_8y_up_to_10y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_8y_up_to_10y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_8y_up_to_10y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_8y_up_to_10y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_8y_up_to_10y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_8y_up_to_10y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_8y_up_to_10y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_8y_up_to_10y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_8y_up_to_10y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_15y_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_at_least_15y_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_at_least_15y_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_15y_old" + ) + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_15y_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2( + client, "utxos_at_least_15y_old" + ) + self.relative: RelativePattern2 = RelativePattern2( + client, "utxos_at_least_15y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_15y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_15y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_up_to_1h_old_max_cost_basis" + ) + self.min: MetricPattern1[Dollars] = MetricPattern1( + client, "utxos_up_to_1h_old_min_cost_basis" + ) + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "utxos_up_to_1h_old_cost_basis" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_1h_old") + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h_CostBasis = MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h_CostBasis( + client + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_1h_old_utxo_count" + ) + self.realized: RealizedPattern2 = RealizedPattern2(client, "utxos_up_to_1h_old") + self.relative: RelativePattern2 = RelativePattern2(client, "utxos_up_to_1h_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_1h_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_1h_old" + ) + + class MetricsTree_Distribution_UtxoCohorts_AgeRange: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y_to_12y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_10y_up_to_12y_old" + self._10y_to_12y: MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y(client) ) - self._12y_to_15y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_12y_up_to_15y_old" + self._12y_to_15y: MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y(client) ) - self._1d_to_1w: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_1d_up_to_1w_old" + self._1d_to_1w: MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w(client) ) - self._1h_to_1d: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_1h_up_to_1d_old" + self._1h_to_1d: MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d(client) ) - self._1m_to_2m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_1m_up_to_2m_old" + self._1m_to_2m: MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m(client) ) - self._1w_to_1m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_1w_up_to_1m_old" + self._1w_to_1m: MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m(client) ) - self._1y_to_2y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_1y_up_to_2y_old" + self._1y_to_2y: MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y(client) ) - self._2m_to_3m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_2m_up_to_3m_old" + self._2m_to_3m: MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m(client) ) - self._2y_to_3y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_2y_up_to_3y_old" + self._2y_to_3y: MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y(client) ) - self._3m_to_4m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_3m_up_to_4m_old" + self._3m_to_4m: MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m(client) ) - self._3y_to_4y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_3y_up_to_4y_old" + self._3y_to_4y: MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y(client) ) - self._4m_to_5m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_4m_up_to_5m_old" + self._4m_to_5m: MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m(client) ) - self._4y_to_5y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_4y_up_to_5y_old" + self._4y_to_5y: MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y(client) ) - self._5m_to_6m: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_5m_up_to_6m_old" + self._5m_to_6m: MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m(client) ) - self._5y_to_6y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_5y_up_to_6y_old" + self._5y_to_6y: MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y(client) ) - self._6m_to_1y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_6m_up_to_1y_old" + self._6m_to_1y: MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y(client) ) - self._6y_to_7y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_6y_up_to_7y_old" + self._6y_to_7y: MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y(client) ) - self._7y_to_8y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_7y_up_to_8y_old" + self._7y_to_8y: MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y(client) ) - self._8y_to_10y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_8y_up_to_10y_old" + self._8y_to_10y: MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y(client) ) - self.from_15y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_15y_old" + self.from_15y: MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_From15y(client) + ) + self.up_to_1h: MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h = ( + MetricsTree_Distribution_UtxoCohorts_AgeRange_UpTo1h(client) ) - self.up_to_1h: _10yTo12yPattern = _10yTo12yPattern(client, "utxos_up_to_1h_old") class MetricsTree_Distribution_UtxoCohorts_All_Activity: @@ -4941,6 +7183,171 @@ class MetricsTree_Distribution_UtxoCohorts_All_CostBasis: self.percentiles: PercentilesPattern = PercentilesPattern(client, "cost_basis") +class MetricsTree_Distribution_UtxoCohorts_All_Realized_RealizedPriceExtra: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "realized_price_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "realized_price_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "realized_price_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "realized_price_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "realized_price_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "realized_price_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "realized_price_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "realized_price_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "realized_price_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "realized_price_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "realized_price_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "realized_price_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "realized_price_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "realized_price_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "realized_price_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "realized_price_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "realized_price_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "realized_price_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "realized_price_ratio" + ) + + +class MetricsTree_Distribution_UtxoCohorts_All_Realized: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.adjusted_sopr: MetricPattern6[StoredF64] = MetricPattern6( + client, "adjusted_sopr" + ) + self.adjusted_sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( + client, "adjusted_sopr_30d_ema" + ) + self.adjusted_sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( + client, "adjusted_sopr_7d_ema" + ) + self.adjusted_value_created: MetricPattern1[Dollars] = MetricPattern1( + client, "adjusted_value_created" + ) + self.adjusted_value_destroyed: MetricPattern1[Dollars] = MetricPattern1( + client, "adjusted_value_destroyed" + ) + self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, "mvrv") + self.neg_realized_loss: BitcoinPattern2[Dollars] = BitcoinPattern2( + client, "neg_realized_loss" + ) + self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern( + client, "net_realized_pnl" + ) + self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = ( + MetricPattern4(client, "net_realized_pnl_cumulative_30d_delta") + ) + self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[ + StoredF32 + ] = MetricPattern4( + client, "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, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap" + ) + self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( + BlockCountPattern(client, "net_realized_pnl_rel_to_realized_cap") + ) + self.realized_cap: MetricPattern1[Dollars] = MetricPattern1( + client, "realized_cap" + ) + self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4( + client, "realized_cap_30d_delta" + ) + self.realized_cap_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( + MetricPattern1(client, "realized_cap_rel_to_own_market_cap") + ) + self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern( + client, "realized_loss" + ) + self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( + BlockCountPattern(client, "realized_loss_rel_to_realized_cap") + ) + self.realized_price: MetricPattern1[Dollars] = MetricPattern1( + client, "realized_price" + ) + self.realized_price_extra: MetricsTree_Distribution_UtxoCohorts_All_Realized_RealizedPriceExtra = MetricsTree_Distribution_UtxoCohorts_All_Realized_RealizedPriceExtra( + client + ) + self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern( + client, "realized_profit" + ) + self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( + BlockCountPattern(client, "realized_profit_rel_to_realized_cap") + ) + self.realized_profit_to_loss_ratio: MetricPattern6[StoredF64] = MetricPattern6( + client, "realized_profit_to_loss_ratio" + ) + self.realized_value: MetricPattern1[Dollars] = MetricPattern1( + client, "realized_value" + ) + self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6( + client, "sell_side_risk_ratio" + ) + self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6( + client, "sell_side_risk_ratio_30d_ema" + ) + self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6( + client, "sell_side_risk_ratio_7d_ema" + ) + self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, "sopr") + self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( + client, "sopr_30d_ema" + ) + self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( + client, "sopr_7d_ema" + ) + self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1( + client, "total_realized_pnl" + ) + self.value_created: MetricPattern1[Dollars] = MetricPattern1( + client, "value_created" + ) + self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1( + client, "value_destroyed" + ) + + class MetricsTree_Distribution_UtxoCohorts_All_Relative: """Metrics tree node.""" @@ -4967,6 +7374,33 @@ class MetricsTree_Distribution_UtxoCohorts_All_Relative: ] = MetricPattern1(client, "unrealized_profit_rel_to_own_total_unrealized_pnl") +class MetricsTree_Distribution_UtxoCohorts_All_Unrealized: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.neg_unrealized_loss: MetricPattern1[Dollars] = MetricPattern1( + client, "neg_unrealized_loss" + ) + self.net_unrealized_pnl: MetricPattern1[Dollars] = MetricPattern1( + client, "net_unrealized_pnl" + ) + self.supply_in_loss: ActiveSupplyPattern = ActiveSupplyPattern( + client, "supply_in_loss" + ) + self.supply_in_profit: ActiveSupplyPattern = ActiveSupplyPattern( + client, "supply_in_profit" + ) + self.total_unrealized_pnl: MetricPattern1[Dollars] = MetricPattern1( + client, "total_unrealized_pnl" + ) + self.unrealized_loss: MetricPattern1[Dollars] = MetricPattern1( + client, "unrealized_loss" + ) + self.unrealized_profit: MetricPattern1[Dollars] = MetricPattern1( + client, "unrealized_profit" + ) + + class MetricsTree_Distribution_UtxoCohorts_All: """Metrics tree node.""" @@ -4978,162 +7412,2213 @@ class MetricsTree_Distribution_UtxoCohorts_All: MetricsTree_Distribution_UtxoCohorts_All_CostBasis(client) ) self.outputs: OutputsPattern = OutputsPattern(client, "utxo_count") - self.realized: RealizedPattern3 = RealizedPattern3(client, "") + self.realized: MetricsTree_Distribution_UtxoCohorts_All_Realized = ( + MetricsTree_Distribution_UtxoCohorts_All_Realized(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, "") + self.unrealized: MetricsTree_Distribution_UtxoCohorts_All_Unrealized = ( + MetricsTree_Distribution_UtxoCohorts_All_Unrealized(client) + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_0sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_with_0sats") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "utxos_with_0sats") + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_with_0sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_with_0sats") + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_with_0sats_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "utxos_with_0sats_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_with_0sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_100btcTo1kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_100btc_under_1k_btc" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_100btc_under_1k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_100btc_under_1k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_100btc_under_1k_btc" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_100btc_under_1k_btc_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_100btc_under_1k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_100btc_under_1k_btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_100kBtcOrMore: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_100k_btc" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_100k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_100k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_100k_btc") + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_100k_btc_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_100k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_100k_btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_100kSatsTo1mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_100k_sats_under_1m_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_100k_sats_under_1m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_100k_sats_under_1m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_100k_sats_under_1m_sats" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_100k_sats_under_1m_sats_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_100k_sats_under_1m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_100k_sats_under_1m_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_100satsTo1kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_100sats_under_1k_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_100sats_under_1k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_100sats_under_1k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_100sats_under_1k_sats" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_100sats_under_1k_sats_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_100sats_under_1k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_100sats_under_1k_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_10btcTo100btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_10btc_under_100btc" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_10btc_under_100btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_10btc_under_100btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_10btc_under_100btc" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_10btc_under_100btc_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_10btc_under_100btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_10btc_under_100btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_10kBtcTo100kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_10k_btc_under_100k_btc" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_10k_btc_under_100k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_10k_btc_under_100k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_10k_btc_under_100k_btc" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_10k_btc_under_100k_btc_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_10k_btc_under_100k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_10k_btc_under_100k_btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_10kSatsTo100kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_10k_sats_under_100k_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_10k_sats_under_100k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_10k_sats_under_100k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_10k_sats_under_100k_sats" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_10k_sats_under_100k_sats_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_10k_sats_under_100k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_10k_sats_under_100k_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_10mSatsTo1btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_10m_sats_under_1btc" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_10m_sats_under_1btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_10m_sats_under_1btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_10m_sats_under_1btc" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_10m_sats_under_1btc_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_10m_sats_under_1btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_10m_sats_under_1btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_10satsTo100sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_10sats_under_100sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_10sats_under_100sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_10sats_under_100sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_10sats_under_100sats" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_10sats_under_100sats_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_10sats_under_100sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_10sats_under_100sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_1btcTo10btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_1btc_under_10btc" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_1btc_under_10btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_1btc_under_10btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_1btc_under_10btc" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_1btc_under_10btc_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_1btc_under_10btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_1btc_under_10btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_1kBtcTo10kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_1k_btc_under_10k_btc" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_1k_btc_under_10k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_1k_btc_under_10k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_1k_btc_under_10k_btc" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_1k_btc_under_10k_btc_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_1k_btc_under_10k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_1k_btc_under_10k_btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_1kSatsTo10kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_1k_sats_under_10k_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_1k_sats_under_10k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_1k_sats_under_10k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_1k_sats_under_10k_sats" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_1k_sats_under_10k_sats_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_1k_sats_under_10k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_1k_sats_under_10k_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_1mSatsTo10mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_1m_sats_under_10m_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_1m_sats_under_10m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_1m_sats_under_10m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_1m_sats_under_10m_sats" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_1m_sats_under_10m_sats_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_1m_sats_under_10m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_1m_sats_under_10m_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_AmountRange_1satTo10sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_1sat_under_10sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_1sat_under_10sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_1sat_under_10sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_1sat_under_10sats" + ) + self.relative: RelativePattern4 = RelativePattern4( + client, "utxos_above_1sat_under_10sats_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_1sat_under_10sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_1sat_under_10sats" + ) 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._0sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_0sats = ( + MetricsTree_Distribution_UtxoCohorts_AmountRange_0sats(client) ) - self._100k_btc_or_more: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_100k_btc" + self._100btc_to_1k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_100btcTo1kBtc = MetricsTree_Distribution_UtxoCohorts_AmountRange_100btcTo1kBtc( + client ) - self._100k_sats_to_1m_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_100k_sats_under_1m_sats" + self._100k_btc_or_more: MetricsTree_Distribution_UtxoCohorts_AmountRange_100kBtcOrMore = MetricsTree_Distribution_UtxoCohorts_AmountRange_100kBtcOrMore( + client ) - self._100sats_to_1k_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_100sats_under_1k_sats" + self._100k_sats_to_1m_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_100kSatsTo1mSats = MetricsTree_Distribution_UtxoCohorts_AmountRange_100kSatsTo1mSats( + client ) - self._10btc_to_100btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10btc_under_100btc" + self._100sats_to_1k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_100satsTo1kSats = MetricsTree_Distribution_UtxoCohorts_AmountRange_100satsTo1kSats( + client ) - self._10k_btc_to_100k_btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10k_btc_under_100k_btc" + self._10btc_to_100btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10btcTo100btc = MetricsTree_Distribution_UtxoCohorts_AmountRange_10btcTo100btc( + client ) - self._10k_sats_to_100k_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10k_sats_under_100k_sats" + self._10k_btc_to_100k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10kBtcTo100kBtc = MetricsTree_Distribution_UtxoCohorts_AmountRange_10kBtcTo100kBtc( + client ) - self._10m_sats_to_1btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10m_sats_under_1btc" + self._10k_sats_to_100k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_10kSatsTo100kSats = MetricsTree_Distribution_UtxoCohorts_AmountRange_10kSatsTo100kSats( + client ) - self._10sats_to_100sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10sats_under_100sats" + self._10m_sats_to_1btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10mSatsTo1btc = MetricsTree_Distribution_UtxoCohorts_AmountRange_10mSatsTo1btc( + client ) - self._1btc_to_10btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1btc_under_10btc" + self._10sats_to_100sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_10satsTo100sats = MetricsTree_Distribution_UtxoCohorts_AmountRange_10satsTo100sats( + client ) - self._1k_btc_to_10k_btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1k_btc_under_10k_btc" + self._1btc_to_10btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_1btcTo10btc = MetricsTree_Distribution_UtxoCohorts_AmountRange_1btcTo10btc( + client ) - self._1k_sats_to_10k_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1k_sats_under_10k_sats" + self._1k_btc_to_10k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_1kBtcTo10kBtc = MetricsTree_Distribution_UtxoCohorts_AmountRange_1kBtcTo10kBtc( + client ) - self._1m_sats_to_10m_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1m_sats_under_10m_sats" + self._1k_sats_to_10k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_1kSatsTo10kSats = MetricsTree_Distribution_UtxoCohorts_AmountRange_1kSatsTo10kSats( + client ) - self._1sat_to_10sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1sat_under_10sats" + self._1m_sats_to_10m_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_1mSatsTo10mSats = MetricsTree_Distribution_UtxoCohorts_AmountRange_1mSatsTo10mSats( + client ) + self._1sat_to_10sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_1satTo10sats = MetricsTree_Distribution_UtxoCohorts_AmountRange_1satTo10sats( + client + ) + + +class MetricsTree_Distribution_UtxoCohorts_Epoch_0: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "epoch_0") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "epoch_0") + self.outputs: OutputsPattern = OutputsPattern(client, "epoch_0_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "epoch_0") + self.relative: RelativePattern4 = RelativePattern4(client, "epoch_0_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "epoch_0_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "epoch_0") + + +class MetricsTree_Distribution_UtxoCohorts_Epoch_1: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "epoch_1") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "epoch_1") + self.outputs: OutputsPattern = OutputsPattern(client, "epoch_1_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "epoch_1") + self.relative: RelativePattern4 = RelativePattern4(client, "epoch_1_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "epoch_1_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "epoch_1") + + +class MetricsTree_Distribution_UtxoCohorts_Epoch_2: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "epoch_2") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "epoch_2") + self.outputs: OutputsPattern = OutputsPattern(client, "epoch_2_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "epoch_2") + self.relative: RelativePattern4 = RelativePattern4(client, "epoch_2_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "epoch_2_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "epoch_2") + + +class MetricsTree_Distribution_UtxoCohorts_Epoch_3: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "epoch_3") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "epoch_3") + self.outputs: OutputsPattern = OutputsPattern(client, "epoch_3_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "epoch_3") + self.relative: RelativePattern4 = RelativePattern4(client, "epoch_3_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "epoch_3_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "epoch_3") + + +class MetricsTree_Distribution_UtxoCohorts_Epoch_4: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "epoch_4") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "epoch_4") + self.outputs: OutputsPattern = OutputsPattern(client, "epoch_4_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "epoch_4") + self.relative: RelativePattern4 = RelativePattern4(client, "epoch_4_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "epoch_4_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "epoch_4") 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") + self._0: MetricsTree_Distribution_UtxoCohorts_Epoch_0 = ( + MetricsTree_Distribution_UtxoCohorts_Epoch_0(client) + ) + self._1: MetricsTree_Distribution_UtxoCohorts_Epoch_1 = ( + MetricsTree_Distribution_UtxoCohorts_Epoch_1(client) + ) + self._2: MetricsTree_Distribution_UtxoCohorts_Epoch_2 = ( + MetricsTree_Distribution_UtxoCohorts_Epoch_2(client) + ) + self._3: MetricsTree_Distribution_UtxoCohorts_Epoch_3 = ( + MetricsTree_Distribution_UtxoCohorts_Epoch_3(client) + ) + self._4: MetricsTree_Distribution_UtxoCohorts_Epoch_4 = ( + MetricsTree_Distribution_UtxoCohorts_Epoch_4(client) + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_100btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_above_100btc") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_100btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_100btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_100btc") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_100btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_100btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_100btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_100kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_100k_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_100k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_100k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_above_100k_sats" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_above_100k_sats" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_100k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_100k_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_100sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_100sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_100sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_100sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_100sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_100sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_100sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_100sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_10btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_above_10btc") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_10btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_10btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_10btc") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_10btc") + self.supply: SupplyPattern2 = SupplyPattern2(client, "utxos_above_10btc_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_10btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_10kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_10k_btc" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_10k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_10k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_10k_btc") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_10k_btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_10k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_10k_btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_10kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_10k_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_10k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_10k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_10k_sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_10k_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_10k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_10k_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_10mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_10m_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_10m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_10m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_10m_sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_10m_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_10m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_10m_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_10sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_above_10sats") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_10sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_10sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_10sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_10sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_10sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_10sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_1btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_above_1btc") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "utxos_above_1btc") + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_1btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_1btc") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_1btc") + self.supply: SupplyPattern2 = SupplyPattern2(client, "utxos_above_1btc_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_1btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_1kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_above_1k_btc") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_1k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_1k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_1k_btc") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_1k_btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_1k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_1k_btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_1kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_1k_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_1k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_1k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_1k_sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_1k_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_1k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_1k_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_1mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_above_1m_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_above_1m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_1m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_1m_sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_1m_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_above_1m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_1m_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_GeAmount_1sat: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_above_1sat") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "utxos_above_1sat") + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_above_1sat_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_above_1sat") + self.relative: RelativePattern = RelativePattern(client, "utxos_above_1sat") + self.supply: SupplyPattern2 = SupplyPattern2(client, "utxos_above_1sat_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_above_1sat" + ) class MetricsTree_Distribution_UtxoCohorts_GeAmount: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ""): - self._100btc: _100btcPattern = _100btcPattern(client, "utxos_above_100btc") - self._100k_sats: _100btcPattern = _100btcPattern( - client, "utxos_above_100k_sats" + self._100btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_100btc = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_100btc(client) + ) + self._100k_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_100kSats = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_100kSats(client) + ) + self._100sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_100sats = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_100sats(client) + ) + self._10btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_10btc = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_10btc(client) + ) + self._10k_btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_10kBtc = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_10kBtc(client) + ) + self._10k_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_10kSats = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_10kSats(client) + ) + self._10m_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_10mSats = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_10mSats(client) + ) + self._10sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_10sats = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_10sats(client) + ) + self._1btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_1btc = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_1btc(client) + ) + self._1k_btc: MetricsTree_Distribution_UtxoCohorts_GeAmount_1kBtc = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_1kBtc(client) + ) + self._1k_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_1kSats = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_1kSats(client) + ) + self._1m_sats: MetricsTree_Distribution_UtxoCohorts_GeAmount_1mSats = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_1mSats(client) + ) + self._1sat: MetricsTree_Distribution_UtxoCohorts_GeAmount_1sat = ( + MetricsTree_Distribution_UtxoCohorts_GeAmount_1sat(client) + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_100btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_under_100btc") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_100btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_100btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_100btc") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_100btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_under_100btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_100btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_100kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_under_100k_btc" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_100k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_100k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_100k_btc") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_100k_btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_under_100k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_100k_btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_100kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_under_100k_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_100k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_100k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_under_100k_sats" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_under_100k_sats" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_under_100k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_100k_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_100sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_under_100sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_100sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_100sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_100sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_100sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_under_100sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_100sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_10btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_under_10btc") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_10btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_10btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_10btc") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_10btc") + self.supply: SupplyPattern2 = SupplyPattern2(client, "utxos_under_10btc_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_10btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_10kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_under_10k_btc" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_10k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_10k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_10k_btc") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_10k_btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_under_10k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_10k_btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_10kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_under_10k_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_10k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_10k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_10k_sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_10k_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_under_10k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_10k_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_10mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_under_10m_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_10m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_10m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_10m_sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_10m_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_under_10m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_10m_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_10sats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_under_10sats") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_10sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_10sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_10sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_10sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_under_10sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_10sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_1btc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_under_1btc") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "utxos_under_1btc") + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_1btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_1btc") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_1btc") + self.supply: SupplyPattern2 = SupplyPattern2(client, "utxos_under_1btc_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_1btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_1kBtc: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_under_1k_btc") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_1k_btc" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_1k_btc_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_1k_btc") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_1k_btc") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_under_1k_btc_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_1k_btc" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_1kSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_under_1k_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_1k_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_1k_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_1k_sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_1k_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_under_1k_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_1k_sats" + ) + + +class MetricsTree_Distribution_UtxoCohorts_LtAmount_1mSats: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_under_1m_sats" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_under_1m_sats" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_under_1m_sats_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "utxos_under_1m_sats") + self.relative: RelativePattern = RelativePattern(client, "utxos_under_1m_sats") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_under_1m_sats_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_under_1m_sats" ) - self._100sats: _100btcPattern = _100btcPattern(client, "utxos_above_100sats") - self._10btc: _100btcPattern = _100btcPattern(client, "utxos_above_10btc") - self._10k_btc: _100btcPattern = _100btcPattern(client, "utxos_above_10k_btc") - self._10k_sats: _100btcPattern = _100btcPattern(client, "utxos_above_10k_sats") - self._10m_sats: _100btcPattern = _100btcPattern(client, "utxos_above_10m_sats") - self._10sats: _100btcPattern = _100btcPattern(client, "utxos_above_10sats") - self._1btc: _100btcPattern = _100btcPattern(client, "utxos_above_1btc") - self._1k_btc: _100btcPattern = _100btcPattern(client, "utxos_above_1k_btc") - self._1k_sats: _100btcPattern = _100btcPattern(client, "utxos_above_1k_sats") - self._1m_sats: _100btcPattern = _100btcPattern(client, "utxos_above_1m_sats") - self._1sat: _100btcPattern = _100btcPattern(client, "utxos_above_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._100btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_100btc = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_100btc(client) + ) + self._100k_btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_100kBtc = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_100kBtc(client) + ) + self._100k_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_100kSats = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_100kSats(client) + ) + self._100sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_100sats = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_100sats(client) + ) + self._10btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_10btc = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_10btc(client) + ) + self._10k_btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_10kBtc = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_10kBtc(client) + ) + self._10k_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_10kSats = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_10kSats(client) + ) + self._10m_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_10mSats = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_10mSats(client) + ) + self._10sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_10sats = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_10sats(client) + ) + self._1btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_1btc = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_1btc(client) + ) + self._1k_btc: MetricsTree_Distribution_UtxoCohorts_LtAmount_1kBtc = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_1kBtc(client) + ) + self._1k_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_1kSats = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_1kSats(client) + ) + self._1m_sats: MetricsTree_Distribution_UtxoCohorts_LtAmount_1mSats = ( + MetricsTree_Distribution_UtxoCohorts_LtAmount_1mSats(client) + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_10y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_up_to_10y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_10y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_10y_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4( + client, "utxos_up_to_10y_old" + ) + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_10y_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_10y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_10y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_12y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_up_to_12y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_12y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_12y_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4( + client, "utxos_up_to_12y_old" + ) + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_12y_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_12y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_12y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_15y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_up_to_15y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_15y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_15y_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4( + client, "utxos_up_to_15y_old" + ) + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_15y_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_15y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_15y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_1m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_1m_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_1m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_1m_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_1m_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_1m_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_1m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_1m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_1w: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_1w_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_1w_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_1w_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_1w_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_1w_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_1w_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_1w_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_1y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_1y_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_1y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_1y_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_1y_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_1y_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_1y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_1y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_2m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_2m_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_2m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_2m_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_2m_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_2m_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_2m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_2m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_2y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_2y_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_2y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_2y_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_2y_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_2y_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_2y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_2y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_3m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_3m_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_3m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_3m_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_3m_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_3m_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_3m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_3m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_3y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_3y_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_3y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_3y_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_3y_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_3y_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_3y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_3y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_4m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_4m_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_4m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_4m_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_4m_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_4m_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_4m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_4m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_4y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_4y_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_4y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_4y_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_4y_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_4y_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_4y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_4y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_5m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_5m_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_5m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_5m_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_5m_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_5m_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_5m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_5m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_5y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_5y_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_5y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_5y_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_5y_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_5y_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_5y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_5y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_6m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_6m_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_6m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_6m_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_6m_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_6m_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_6m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_6m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_6y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_6y_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_6y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_6y_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_6y_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_6y_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_6y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_6y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_7y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_7y_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_7y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_7y_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_7y_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_7y_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_7y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_7y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MaxAge_8y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "utxos_up_to_8y_old") + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_up_to_8y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_up_to_8y_old_utxo_count" + ) + self.realized: RealizedPattern4 = RealizedPattern4(client, "utxos_up_to_8y_old") + self.relative: RelativePattern = RelativePattern(client, "utxos_up_to_8y_old") + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_up_to_8y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_up_to_8y_old" ) - 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_up_to_10y_old") - self._12y: _10yPattern = _10yPattern(client, "utxos_up_to_12y_old") - self._15y: _10yPattern = _10yPattern(client, "utxos_up_to_15y_old") - self._1m: _10yPattern = _10yPattern(client, "utxos_up_to_1m_old") - self._1w: _10yPattern = _10yPattern(client, "utxos_up_to_1w_old") - self._1y: _10yPattern = _10yPattern(client, "utxos_up_to_1y_old") - self._2m: _10yPattern = _10yPattern(client, "utxos_up_to_2m_old") - self._2y: _10yPattern = _10yPattern(client, "utxos_up_to_2y_old") - self._3m: _10yPattern = _10yPattern(client, "utxos_up_to_3m_old") - self._3y: _10yPattern = _10yPattern(client, "utxos_up_to_3y_old") - self._4m: _10yPattern = _10yPattern(client, "utxos_up_to_4m_old") - self._4y: _10yPattern = _10yPattern(client, "utxos_up_to_4y_old") - self._5m: _10yPattern = _10yPattern(client, "utxos_up_to_5m_old") - self._5y: _10yPattern = _10yPattern(client, "utxos_up_to_5y_old") - self._6m: _10yPattern = _10yPattern(client, "utxos_up_to_6m_old") - self._6y: _10yPattern = _10yPattern(client, "utxos_up_to_6y_old") - self._7y: _10yPattern = _10yPattern(client, "utxos_up_to_7y_old") - self._8y: _10yPattern = _10yPattern(client, "utxos_up_to_8y_old") + self._10y: MetricsTree_Distribution_UtxoCohorts_MaxAge_10y = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_10y(client) + ) + self._12y: MetricsTree_Distribution_UtxoCohorts_MaxAge_12y = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_12y(client) + ) + self._15y: MetricsTree_Distribution_UtxoCohorts_MaxAge_15y = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_15y(client) + ) + self._1m: MetricsTree_Distribution_UtxoCohorts_MaxAge_1m = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_1m(client) + ) + self._1w: MetricsTree_Distribution_UtxoCohorts_MaxAge_1w = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_1w(client) + ) + self._1y: MetricsTree_Distribution_UtxoCohorts_MaxAge_1y = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_1y(client) + ) + self._2m: MetricsTree_Distribution_UtxoCohorts_MaxAge_2m = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_2m(client) + ) + self._2y: MetricsTree_Distribution_UtxoCohorts_MaxAge_2y = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_2y(client) + ) + self._3m: MetricsTree_Distribution_UtxoCohorts_MaxAge_3m = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_3m(client) + ) + self._3y: MetricsTree_Distribution_UtxoCohorts_MaxAge_3y = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_3y(client) + ) + self._4m: MetricsTree_Distribution_UtxoCohorts_MaxAge_4m = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_4m(client) + ) + self._4y: MetricsTree_Distribution_UtxoCohorts_MaxAge_4y = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_4y(client) + ) + self._5m: MetricsTree_Distribution_UtxoCohorts_MaxAge_5m = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_5m(client) + ) + self._5y: MetricsTree_Distribution_UtxoCohorts_MaxAge_5y = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_5y(client) + ) + self._6m: MetricsTree_Distribution_UtxoCohorts_MaxAge_6m = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_6m(client) + ) + self._6y: MetricsTree_Distribution_UtxoCohorts_MaxAge_6y = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_6y(client) + ) + self._7y: MetricsTree_Distribution_UtxoCohorts_MaxAge_7y = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_7y(client) + ) + self._8y: MetricsTree_Distribution_UtxoCohorts_MaxAge_8y = ( + MetricsTree_Distribution_UtxoCohorts_MaxAge_8y(client) + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_10y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_10y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_10y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_10y_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_10y_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_10y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_10y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_10y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_12y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_12y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_12y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_12y_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_12y_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_12y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_12y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_12y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_1d: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_1d_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_1d_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_1d_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_1d_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_1d_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_1d_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_1d_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_1m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_1m_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_1m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_1m_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_1m_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_1m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_1m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_1m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_1w: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_1w_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_1w_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_1w_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_1w_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_1w_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_1w_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_1w_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_1y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_1y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_1y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_1y_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_1y_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_1y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_1y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_1y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_2m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_2m_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_2m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_2m_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_2m_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_2m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_2m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_2m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_2y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_2y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_2y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_2y_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_2y_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_2y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_2y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_2y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_3m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_3m_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_3m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_3m_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_3m_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_3m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_3m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_3m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_3y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_3y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_3y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_3y_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_3y_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_3y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_3y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_3y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_4m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_4m_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_4m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_4m_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_4m_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_4m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_4m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_4m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_4y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_4y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_4y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_4y_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_4y_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_4y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_4y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_4y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_5m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_5m_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_5m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_5m_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_5m_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_5m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_5m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_5m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_5y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_5y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_5y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_5y_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_5y_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_5y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_5y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_5y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_6m: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_6m_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_6m_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_6m_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_6m_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_6m_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_6m_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_6m_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_6y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_6y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_6y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_6y_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_6y_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_6y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_6y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_6y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_7y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_7y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_7y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_7y_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_7y_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_7y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_7y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_7y_old" + ) + + +class MetricsTree_Distribution_UtxoCohorts_MinAge_8y: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2( + client, "utxos_at_least_8y_old" + ) + self.cost_basis: CostBasisPattern = CostBasisPattern( + client, "utxos_at_least_8y_old" + ) + self.outputs: OutputsPattern = OutputsPattern( + client, "utxos_at_least_8y_old_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern( + client, "utxos_at_least_8y_old" + ) + self.relative: RelativePattern = RelativePattern( + client, "utxos_at_least_8y_old" + ) + self.supply: SupplyPattern2 = SupplyPattern2( + client, "utxos_at_least_8y_old_supply" + ) + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "utxos_at_least_8y_old" + ) class MetricsTree_Distribution_UtxoCohorts_MinAge: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y: _100btcPattern = _100btcPattern(client, "utxos_at_least_10y_old") - self._12y: _100btcPattern = _100btcPattern(client, "utxos_at_least_12y_old") - self._1d: _100btcPattern = _100btcPattern(client, "utxos_at_least_1d_old") - self._1m: _100btcPattern = _100btcPattern(client, "utxos_at_least_1m_old") - self._1w: _100btcPattern = _100btcPattern(client, "utxos_at_least_1w_old") - self._1y: _100btcPattern = _100btcPattern(client, "utxos_at_least_1y_old") - self._2m: _100btcPattern = _100btcPattern(client, "utxos_at_least_2m_old") - self._2y: _100btcPattern = _100btcPattern(client, "utxos_at_least_2y_old") - self._3m: _100btcPattern = _100btcPattern(client, "utxos_at_least_3m_old") - self._3y: _100btcPattern = _100btcPattern(client, "utxos_at_least_3y_old") - self._4m: _100btcPattern = _100btcPattern(client, "utxos_at_least_4m_old") - self._4y: _100btcPattern = _100btcPattern(client, "utxos_at_least_4y_old") - self._5m: _100btcPattern = _100btcPattern(client, "utxos_at_least_5m_old") - self._5y: _100btcPattern = _100btcPattern(client, "utxos_at_least_5y_old") - self._6m: _100btcPattern = _100btcPattern(client, "utxos_at_least_6m_old") - self._6y: _100btcPattern = _100btcPattern(client, "utxos_at_least_6y_old") - self._7y: _100btcPattern = _100btcPattern(client, "utxos_at_least_7y_old") - self._8y: _100btcPattern = _100btcPattern(client, "utxos_at_least_8y_old") + self._10y: MetricsTree_Distribution_UtxoCohorts_MinAge_10y = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_10y(client) + ) + self._12y: MetricsTree_Distribution_UtxoCohorts_MinAge_12y = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_12y(client) + ) + self._1d: MetricsTree_Distribution_UtxoCohorts_MinAge_1d = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_1d(client) + ) + self._1m: MetricsTree_Distribution_UtxoCohorts_MinAge_1m = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_1m(client) + ) + self._1w: MetricsTree_Distribution_UtxoCohorts_MinAge_1w = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_1w(client) + ) + self._1y: MetricsTree_Distribution_UtxoCohorts_MinAge_1y = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_1y(client) + ) + self._2m: MetricsTree_Distribution_UtxoCohorts_MinAge_2m = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_2m(client) + ) + self._2y: MetricsTree_Distribution_UtxoCohorts_MinAge_2y = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_2y(client) + ) + self._3m: MetricsTree_Distribution_UtxoCohorts_MinAge_3m = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_3m(client) + ) + self._3y: MetricsTree_Distribution_UtxoCohorts_MinAge_3y = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_3y(client) + ) + self._4m: MetricsTree_Distribution_UtxoCohorts_MinAge_4m = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_4m(client) + ) + self._4y: MetricsTree_Distribution_UtxoCohorts_MinAge_4y = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_4y(client) + ) + self._5m: MetricsTree_Distribution_UtxoCohorts_MinAge_5m = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_5m(client) + ) + self._5y: MetricsTree_Distribution_UtxoCohorts_MinAge_5y = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_5y(client) + ) + self._6m: MetricsTree_Distribution_UtxoCohorts_MinAge_6m = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_6m(client) + ) + self._6y: MetricsTree_Distribution_UtxoCohorts_MinAge_6y = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_6y(client) + ) + self._7y: MetricsTree_Distribution_UtxoCohorts_MinAge_7y = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_7y(client) + ) + self._8y: MetricsTree_Distribution_UtxoCohorts_MinAge_8y = ( + MetricsTree_Distribution_UtxoCohorts_MinAge_8y(client) + ) + + +class MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1(client, "lth_max_cost_basis") + self.min: MetricPattern1[Dollars] = MetricPattern1(client, "lth_min_cost_basis") + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "lth_cost_basis" + ) class MetricsTree_Distribution_UtxoCohorts_Term_Long: @@ -5141,7 +9626,9 @@ class MetricsTree_Distribution_UtxoCohorts_Term_Long: def __init__(self, client: BrkClientBase, base_path: str = ""): self.activity: ActivityPattern2 = ActivityPattern2(client, "lth") - self.cost_basis: CostBasisPattern2 = CostBasisPattern2(client, "lth") + self.cost_basis: MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis = ( + MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis(client) + ) self.outputs: OutputsPattern = OutputsPattern(client, "lth_utxo_count") self.realized: RealizedPattern2 = RealizedPattern2(client, "lth") self.relative: RelativePattern5 = RelativePattern5(client, "lth") @@ -5149,12 +9636,25 @@ class MetricsTree_Distribution_UtxoCohorts_Term_Long: self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "lth") +class MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.max: MetricPattern1[Dollars] = MetricPattern1(client, "sth_max_cost_basis") + self.min: MetricPattern1[Dollars] = MetricPattern1(client, "sth_min_cost_basis") + self.percentiles: PercentilesPattern = PercentilesPattern( + client, "sth_cost_basis" + ) + + 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.cost_basis: MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis = ( + MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis(client) + ) self.outputs: OutputsPattern = OutputsPattern(client, "sth_utxo_count") self.realized: RealizedPattern3 = RealizedPattern3(client, "sth") self.relative: RelativePattern5 = RelativePattern5(client, "sth") @@ -5174,45 +9674,526 @@ class MetricsTree_Distribution_UtxoCohorts_Term: ) +class MetricsTree_Distribution_UtxoCohorts_Type_Empty: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "empty_outputs") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "empty_outputs") + self.outputs: OutputsPattern = OutputsPattern( + client, "empty_outputs_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "empty_outputs") + self.relative: RelativePattern4 = RelativePattern4( + client, "empty_outputs_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "empty_outputs_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "empty_outputs") + + +class MetricsTree_Distribution_UtxoCohorts_Type_P2a: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "p2a") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "p2a") + self.outputs: OutputsPattern = OutputsPattern(client, "p2a_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "p2a") + self.relative: RelativePattern4 = RelativePattern4(client, "p2a_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "p2a_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "p2a") + + +class MetricsTree_Distribution_UtxoCohorts_Type_P2ms: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "p2ms") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "p2ms") + self.outputs: OutputsPattern = OutputsPattern(client, "p2ms_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "p2ms") + self.relative: RelativePattern4 = RelativePattern4(client, "p2ms_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "p2ms_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "p2ms") + + +class MetricsTree_Distribution_UtxoCohorts_Type_P2pk33: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "p2pk33") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "p2pk33") + self.outputs: OutputsPattern = OutputsPattern(client, "p2pk33_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "p2pk33") + self.relative: RelativePattern4 = RelativePattern4(client, "p2pk33_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "p2pk33_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "p2pk33") + + +class MetricsTree_Distribution_UtxoCohorts_Type_P2pk65: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "p2pk65") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "p2pk65") + self.outputs: OutputsPattern = OutputsPattern(client, "p2pk65_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "p2pk65") + self.relative: RelativePattern4 = RelativePattern4(client, "p2pk65_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "p2pk65_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "p2pk65") + + +class MetricsTree_Distribution_UtxoCohorts_Type_P2pkh: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "p2pkh") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "p2pkh") + self.outputs: OutputsPattern = OutputsPattern(client, "p2pkh_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "p2pkh") + self.relative: RelativePattern4 = RelativePattern4(client, "p2pkh_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "p2pkh_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "p2pkh") + + +class MetricsTree_Distribution_UtxoCohorts_Type_P2sh: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "p2sh") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "p2sh") + self.outputs: OutputsPattern = OutputsPattern(client, "p2sh_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "p2sh") + self.relative: RelativePattern4 = RelativePattern4(client, "p2sh_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "p2sh_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "p2sh") + + +class MetricsTree_Distribution_UtxoCohorts_Type_P2tr: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "p2tr") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "p2tr") + self.outputs: OutputsPattern = OutputsPattern(client, "p2tr_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "p2tr") + self.relative: RelativePattern4 = RelativePattern4(client, "p2tr_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "p2tr_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "p2tr") + + +class MetricsTree_Distribution_UtxoCohorts_Type_P2wpkh: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "p2wpkh") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "p2wpkh") + self.outputs: OutputsPattern = OutputsPattern(client, "p2wpkh_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "p2wpkh") + self.relative: RelativePattern4 = RelativePattern4(client, "p2wpkh_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "p2wpkh_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "p2wpkh") + + +class MetricsTree_Distribution_UtxoCohorts_Type_P2wsh: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "p2wsh") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "p2wsh") + self.outputs: OutputsPattern = OutputsPattern(client, "p2wsh_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "p2wsh") + self.relative: RelativePattern4 = RelativePattern4(client, "p2wsh_supply_in") + self.supply: SupplyPattern2 = SupplyPattern2(client, "p2wsh_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "p2wsh") + + +class MetricsTree_Distribution_UtxoCohorts_Type_Unknown: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "unknown_outputs") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "unknown_outputs") + self.outputs: OutputsPattern = OutputsPattern( + client, "unknown_outputs_utxo_count" + ) + self.realized: RealizedPattern = RealizedPattern(client, "unknown_outputs") + self.relative: RelativePattern4 = RelativePattern4( + client, "unknown_outputs_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "unknown_outputs_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern( + client, "unknown_outputs" + ) + + 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") + self.empty: MetricsTree_Distribution_UtxoCohorts_Type_Empty = ( + MetricsTree_Distribution_UtxoCohorts_Type_Empty(client) + ) + self.p2a: MetricsTree_Distribution_UtxoCohorts_Type_P2a = ( + MetricsTree_Distribution_UtxoCohorts_Type_P2a(client) + ) + self.p2ms: MetricsTree_Distribution_UtxoCohorts_Type_P2ms = ( + MetricsTree_Distribution_UtxoCohorts_Type_P2ms(client) + ) + self.p2pk33: MetricsTree_Distribution_UtxoCohorts_Type_P2pk33 = ( + MetricsTree_Distribution_UtxoCohorts_Type_P2pk33(client) + ) + self.p2pk65: MetricsTree_Distribution_UtxoCohorts_Type_P2pk65 = ( + MetricsTree_Distribution_UtxoCohorts_Type_P2pk65(client) + ) + self.p2pkh: MetricsTree_Distribution_UtxoCohorts_Type_P2pkh = ( + MetricsTree_Distribution_UtxoCohorts_Type_P2pkh(client) + ) + self.p2sh: MetricsTree_Distribution_UtxoCohorts_Type_P2sh = ( + MetricsTree_Distribution_UtxoCohorts_Type_P2sh(client) + ) + self.p2tr: MetricsTree_Distribution_UtxoCohorts_Type_P2tr = ( + MetricsTree_Distribution_UtxoCohorts_Type_P2tr(client) + ) + self.p2wpkh: MetricsTree_Distribution_UtxoCohorts_Type_P2wpkh = ( + MetricsTree_Distribution_UtxoCohorts_Type_P2wpkh(client) + ) + self.p2wsh: MetricsTree_Distribution_UtxoCohorts_Type_P2wsh = ( + MetricsTree_Distribution_UtxoCohorts_Type_P2wsh(client) + ) + self.unknown: MetricsTree_Distribution_UtxoCohorts_Type_Unknown = ( + MetricsTree_Distribution_UtxoCohorts_Type_Unknown(client) + ) + + +class MetricsTree_Distribution_UtxoCohorts_Year_2009: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2009") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2009") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2009_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2009") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2009_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2009_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2009") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2010: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2010") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2010") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2010_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2010") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2010_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2010_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2010") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2011: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2011") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2011") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2011_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2011") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2011_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2011_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2011") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2012: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2012") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2012") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2012_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2012") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2012_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2012_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2012") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2013: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2013") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2013") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2013_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2013") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2013_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2013_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2013") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2014: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2014") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2014") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2014_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2014") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2014_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2014_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2014") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2015: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2015") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2015") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2015_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2015") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2015_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2015_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2015") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2016: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2016") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2016") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2016_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2016") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2016_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2016_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2016") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2017: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2017") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2017") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2017_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2017") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2017_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2017_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2017") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2018: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2018") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2018") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2018_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2018") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2018_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2018_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2018") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2019: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2019") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2019") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2019_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2019") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2019_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2019_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2019") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2020: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2020") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2020") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2020_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2020") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2020_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2020_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2020") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2021: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2021") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2021") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2021_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2021") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2021_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2021_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2021") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2022: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2022") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2022") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2022_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2022") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2022_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2022_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2022") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2023: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2023") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2023") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2023_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2023") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2023_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2023_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2023") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2024: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2024") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2024") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2024_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2024") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2024_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2024_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2024") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2025: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2025") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2025") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2025_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2025") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2025_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2025_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2025") + + +class MetricsTree_Distribution_UtxoCohorts_Year_2026: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.activity: ActivityPattern2 = ActivityPattern2(client, "year_2026") + self.cost_basis: CostBasisPattern = CostBasisPattern(client, "year_2026") + self.outputs: OutputsPattern = OutputsPattern(client, "year_2026_utxo_count") + self.realized: RealizedPattern = RealizedPattern(client, "year_2026") + self.relative: RelativePattern4 = RelativePattern4( + client, "year_2026_supply_in" + ) + self.supply: SupplyPattern2 = SupplyPattern2(client, "year_2026_supply") + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "year_2026") 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") + self._2009: MetricsTree_Distribution_UtxoCohorts_Year_2009 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2009(client) + ) + self._2010: MetricsTree_Distribution_UtxoCohorts_Year_2010 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2010(client) + ) + self._2011: MetricsTree_Distribution_UtxoCohorts_Year_2011 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2011(client) + ) + self._2012: MetricsTree_Distribution_UtxoCohorts_Year_2012 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2012(client) + ) + self._2013: MetricsTree_Distribution_UtxoCohorts_Year_2013 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2013(client) + ) + self._2014: MetricsTree_Distribution_UtxoCohorts_Year_2014 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2014(client) + ) + self._2015: MetricsTree_Distribution_UtxoCohorts_Year_2015 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2015(client) + ) + self._2016: MetricsTree_Distribution_UtxoCohorts_Year_2016 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2016(client) + ) + self._2017: MetricsTree_Distribution_UtxoCohorts_Year_2017 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2017(client) + ) + self._2018: MetricsTree_Distribution_UtxoCohorts_Year_2018 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2018(client) + ) + self._2019: MetricsTree_Distribution_UtxoCohorts_Year_2019 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2019(client) + ) + self._2020: MetricsTree_Distribution_UtxoCohorts_Year_2020 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2020(client) + ) + self._2021: MetricsTree_Distribution_UtxoCohorts_Year_2021 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2021(client) + ) + self._2022: MetricsTree_Distribution_UtxoCohorts_Year_2022 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2022(client) + ) + self._2023: MetricsTree_Distribution_UtxoCohorts_Year_2023 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2023(client) + ) + self._2024: MetricsTree_Distribution_UtxoCohorts_Year_2024 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2024(client) + ) + self._2025: MetricsTree_Distribution_UtxoCohorts_Year_2025 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2025(client) + ) + self._2026: MetricsTree_Distribution_UtxoCohorts_Year_2026 = ( + MetricsTree_Distribution_UtxoCohorts_Year_2026(client) + ) class MetricsTree_Distribution_UtxoCohorts: @@ -5725,6 +10706,45 @@ class MetricsTree_Market_Ath: ) +class MetricsTree_Market_Dca_ClassAveragePrice: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self._2015: MetricPattern4[Dollars] = MetricPattern4( + client, "dca_class_2015_average_price" + ) + self._2016: MetricPattern4[Dollars] = MetricPattern4( + client, "dca_class_2016_average_price" + ) + self._2017: MetricPattern4[Dollars] = MetricPattern4( + client, "dca_class_2017_average_price" + ) + self._2018: MetricPattern4[Dollars] = MetricPattern4( + client, "dca_class_2018_average_price" + ) + self._2019: MetricPattern4[Dollars] = MetricPattern4( + client, "dca_class_2019_average_price" + ) + self._2020: MetricPattern4[Dollars] = MetricPattern4( + client, "dca_class_2020_average_price" + ) + self._2021: MetricPattern4[Dollars] = MetricPattern4( + client, "dca_class_2021_average_price" + ) + self._2022: MetricPattern4[Dollars] = MetricPattern4( + client, "dca_class_2022_average_price" + ) + self._2023: MetricPattern4[Dollars] = MetricPattern4( + client, "dca_class_2023_average_price" + ) + self._2024: MetricPattern4[Dollars] = MetricPattern4( + client, "dca_class_2024_average_price" + ) + self._2025: MetricPattern4[Dollars] = MetricPattern4( + client, "dca_class_2025_average_price" + ) + + class MetricsTree_Market_Dca_ClassStack: """Metrics tree node.""" @@ -5746,8 +10766,8 @@ class MetricsTree_Market_Dca: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ""): - self.class_average_price: ClassAveragePricePattern[Dollars] = ( - ClassAveragePricePattern(client, "dca_class") + self.class_average_price: MetricsTree_Market_Dca_ClassAveragePrice = ( + MetricsTree_Market_Dca_ClassAveragePrice(client) ) self.class_returns: ClassAveragePricePattern[StoredF32] = ( ClassAveragePricePattern(client, "dca_class") @@ -5815,51 +10835,2075 @@ class MetricsTree_Market_Indicators: ) +class MetricsTree_Market_MovingAverage_Price111dSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_111d_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_111d_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_111d_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_111d_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_111d_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_111d_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_111d_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_111d_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_111d_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_111d_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_111d_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_111d_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_111d_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_111d_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_111d_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_111d_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_111d_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_111d_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_111d_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_111d_sma_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price12dEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_12d_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_12d_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_12d_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_12d_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_12d_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_12d_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_12d_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_12d_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_12d_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_12d_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_12d_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_12d_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_12d_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_12d_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_12d_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_12d_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_12d_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_12d_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_12d_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_12d_ema_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price13dEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_13d_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_13d_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_13d_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_13d_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_13d_ema_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price13dSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_13d_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_13d_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_13d_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_13d_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_13d_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_13d_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_13d_sma_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price144dEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_144d_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_144d_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_144d_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_144d_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_144d_ema_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price144dSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_144d_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_144d_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_144d_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_144d_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_144d_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_144d_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_144d_sma_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price1mEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_1m_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1m_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1m_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1m_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_1m_ema_ratio") + + +class MetricsTree_Market_MovingAverage_Price1mSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_1m_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1m_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1m_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1m_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1m_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1m_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_1m_sma_ratio") + + +class MetricsTree_Market_MovingAverage_Price1wEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_1w_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1w_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1w_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1w_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_1w_ema_ratio") + + +class MetricsTree_Market_MovingAverage_Price1wSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_1w_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1w_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1w_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1w_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1w_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1w_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_1w_sma_ratio") + + +class MetricsTree_Market_MovingAverage_Price1yEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_1y_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1y_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1y_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1y_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_1y_ema_ratio") + + +class MetricsTree_Market_MovingAverage_Price1ySma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_1y_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1y_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1y_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_1y_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_1y_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_1y_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_1y_sma_ratio") + + +class MetricsTree_Market_MovingAverage_Price200dEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_200d_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200d_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200d_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200d_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200d_ema_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price200dSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_200d_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200d_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200d_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200d_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200d_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200d_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200d_sma_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price200wEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_200w_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200w_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200w_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200w_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200w_ema_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price200wSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_200w_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200w_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200w_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200w_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_200w_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_200w_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_200w_sma_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price21dEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_21d_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_21d_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_21d_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_21d_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_21d_ema_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price21dSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_21d_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_21d_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_21d_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_21d_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_21d_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_21d_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_21d_sma_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price26dEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_26d_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_26d_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_26d_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_26d_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_26d_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_26d_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_26d_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_26d_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_26d_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_26d_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_26d_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_26d_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_26d_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_26d_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_26d_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_26d_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_26d_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_26d_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_26d_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_26d_ema_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price2yEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_2y_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_2y_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_2y_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_2y_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_2y_ema_ratio") + + +class MetricsTree_Market_MovingAverage_Price2ySma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_2y_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_2y_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_2y_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_2y_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_2y_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_2y_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_2y_sma_ratio") + + +class MetricsTree_Market_MovingAverage_Price34dEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_34d_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_34d_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_34d_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_34d_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_34d_ema_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price34dSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_34d_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_34d_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_34d_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_34d_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_34d_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_34d_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_34d_sma_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price350dSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_350d_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_350d_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_350d_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_350d_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_350d_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_350d_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_350d_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_350d_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_350d_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_350d_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_350d_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_350d_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_350d_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_350d_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_350d_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_350d_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_350d_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_350d_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_350d_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_350d_sma_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price4yEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_4y_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_4y_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_4y_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_4y_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_4y_ema_ratio") + + +class MetricsTree_Market_MovingAverage_Price4ySma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_4y_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_4y_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_4y_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_4y_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_4y_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_4y_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_4y_sma_ratio") + + +class MetricsTree_Market_MovingAverage_Price55dEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_55d_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_55d_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_55d_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_55d_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_55d_ema_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price55dSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_55d_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_55d_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_55d_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_55d_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_55d_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_55d_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_55d_sma_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price89dEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_89d_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_89d_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_89d_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_89d_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_89d_ema_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price89dSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_89d_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_89d_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_89d_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_89d_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_89d_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_89d_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_89d_sma_ratio" + ) + + +class MetricsTree_Market_MovingAverage_Price8dEma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_8d_ema") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_ema_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_ema_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_ema_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_8d_ema_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_8d_ema_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_8d_ema_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_ema_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_ema_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_ema_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_ema_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_ema_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_ema_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_ema_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_ema_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_ema_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_ema_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_ema_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_ema_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_8d_ema_ratio") + + +class MetricsTree_Market_MovingAverage_Price8dSma: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ""): + self.price: MetricPattern4[Dollars] = MetricPattern4(client, "price_8d_sma") + self.ratio: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_sma_ratio" + ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_sma_ratio_1m_sma" + ) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_sma_ratio_1w_sma" + ) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_8d_sma_ratio_1y" + ) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_8d_sma_ratio_2y" + ) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( + client, "price_8d_sma_ratio_4y" + ) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_sma_ratio_pct1" + ) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_sma_ratio_pct1_usd" + ) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_sma_ratio_pct2" + ) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_sma_ratio_pct2_usd" + ) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_sma_ratio_pct5" + ) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_sma_ratio_pct5_usd" + ) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_sma_ratio_pct95" + ) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_sma_ratio_pct95_usd" + ) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_sma_ratio_pct98" + ) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_sma_ratio_pct98_usd" + ) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( + client, "price_8d_sma_ratio_pct99" + ) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( + client, "price_8d_sma_ratio_pct99_usd" + ) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, "price_8d_sma_ratio") + + 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_111d_sma: MetricsTree_Market_MovingAverage_Price111dSma = ( + MetricsTree_Market_MovingAverage_Price111dSma(client) ) - self.price_12d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_12d_ema" + self.price_12d_ema: MetricsTree_Market_MovingAverage_Price12dEma = ( + MetricsTree_Market_MovingAverage_Price12dEma(client) ) - self.price_13d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_13d_ema" + self.price_13d_ema: MetricsTree_Market_MovingAverage_Price13dEma = ( + MetricsTree_Market_MovingAverage_Price13dEma(client) ) - self.price_13d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_13d_sma" + self.price_13d_sma: MetricsTree_Market_MovingAverage_Price13dSma = ( + MetricsTree_Market_MovingAverage_Price13dSma(client) ) - self.price_144d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_144d_ema" + self.price_144d_ema: MetricsTree_Market_MovingAverage_Price144dEma = ( + MetricsTree_Market_MovingAverage_Price144dEma(client) ) - self.price_144d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_144d_sma" + self.price_144d_sma: MetricsTree_Market_MovingAverage_Price144dSma = ( + MetricsTree_Market_MovingAverage_Price144dSma(client) ) - self.price_1m_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1m_ema" + self.price_1m_ema: MetricsTree_Market_MovingAverage_Price1mEma = ( + MetricsTree_Market_MovingAverage_Price1mEma(client) ) - self.price_1m_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1m_sma" + self.price_1m_sma: MetricsTree_Market_MovingAverage_Price1mSma = ( + MetricsTree_Market_MovingAverage_Price1mSma(client) ) - self.price_1w_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1w_ema" + self.price_1w_ema: MetricsTree_Market_MovingAverage_Price1wEma = ( + MetricsTree_Market_MovingAverage_Price1wEma(client) ) - self.price_1w_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1w_sma" + self.price_1w_sma: MetricsTree_Market_MovingAverage_Price1wSma = ( + MetricsTree_Market_MovingAverage_Price1wSma(client) ) - self.price_1y_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1y_ema" + self.price_1y_ema: MetricsTree_Market_MovingAverage_Price1yEma = ( + MetricsTree_Market_MovingAverage_Price1yEma(client) ) - self.price_1y_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1y_sma" + self.price_1y_sma: MetricsTree_Market_MovingAverage_Price1ySma = ( + MetricsTree_Market_MovingAverage_Price1ySma(client) ) - self.price_200d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_200d_ema" + self.price_200d_ema: MetricsTree_Market_MovingAverage_Price200dEma = ( + MetricsTree_Market_MovingAverage_Price200dEma(client) ) - self.price_200d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_200d_sma" + self.price_200d_sma: MetricsTree_Market_MovingAverage_Price200dSma = ( + MetricsTree_Market_MovingAverage_Price200dSma(client) ) self.price_200d_sma_x0_8: MetricPattern4[Dollars] = MetricPattern4( client, "price_200d_sma_x0_8" @@ -5867,62 +12911,62 @@ class MetricsTree_Market_MovingAverage: self.price_200d_sma_x2_4: MetricPattern4[Dollars] = MetricPattern4( client, "price_200d_sma_x2_4" ) - self.price_200w_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_200w_ema" + self.price_200w_ema: MetricsTree_Market_MovingAverage_Price200wEma = ( + MetricsTree_Market_MovingAverage_Price200wEma(client) ) - self.price_200w_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_200w_sma" + self.price_200w_sma: MetricsTree_Market_MovingAverage_Price200wSma = ( + MetricsTree_Market_MovingAverage_Price200wSma(client) ) - self.price_21d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_21d_ema" + self.price_21d_ema: MetricsTree_Market_MovingAverage_Price21dEma = ( + MetricsTree_Market_MovingAverage_Price21dEma(client) ) - self.price_21d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_21d_sma" + self.price_21d_sma: MetricsTree_Market_MovingAverage_Price21dSma = ( + MetricsTree_Market_MovingAverage_Price21dSma(client) ) - self.price_26d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_26d_ema" + self.price_26d_ema: MetricsTree_Market_MovingAverage_Price26dEma = ( + MetricsTree_Market_MovingAverage_Price26dEma(client) ) - self.price_2y_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_2y_ema" + self.price_2y_ema: MetricsTree_Market_MovingAverage_Price2yEma = ( + MetricsTree_Market_MovingAverage_Price2yEma(client) ) - self.price_2y_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_2y_sma" + self.price_2y_sma: MetricsTree_Market_MovingAverage_Price2ySma = ( + MetricsTree_Market_MovingAverage_Price2ySma(client) ) - self.price_34d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_34d_ema" + self.price_34d_ema: MetricsTree_Market_MovingAverage_Price34dEma = ( + MetricsTree_Market_MovingAverage_Price34dEma(client) ) - self.price_34d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_34d_sma" + self.price_34d_sma: MetricsTree_Market_MovingAverage_Price34dSma = ( + MetricsTree_Market_MovingAverage_Price34dSma(client) ) - self.price_350d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_350d_sma" + self.price_350d_sma: MetricsTree_Market_MovingAverage_Price350dSma = ( + MetricsTree_Market_MovingAverage_Price350dSma(client) ) self.price_350d_sma_x2: MetricPattern4[Dollars] = MetricPattern4( client, "price_350d_sma_x2" ) - self.price_4y_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_4y_ema" + self.price_4y_ema: MetricsTree_Market_MovingAverage_Price4yEma = ( + MetricsTree_Market_MovingAverage_Price4yEma(client) ) - self.price_4y_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_4y_sma" + self.price_4y_sma: MetricsTree_Market_MovingAverage_Price4ySma = ( + MetricsTree_Market_MovingAverage_Price4ySma(client) ) - self.price_55d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_55d_ema" + self.price_55d_ema: MetricsTree_Market_MovingAverage_Price55dEma = ( + MetricsTree_Market_MovingAverage_Price55dEma(client) ) - self.price_55d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_55d_sma" + self.price_55d_sma: MetricsTree_Market_MovingAverage_Price55dSma = ( + MetricsTree_Market_MovingAverage_Price55dSma(client) ) - self.price_89d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_89d_ema" + self.price_89d_ema: MetricsTree_Market_MovingAverage_Price89dEma = ( + MetricsTree_Market_MovingAverage_Price89dEma(client) ) - self.price_89d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_89d_sma" + self.price_89d_sma: MetricsTree_Market_MovingAverage_Price89dSma = ( + MetricsTree_Market_MovingAverage_Price89dSma(client) ) - self.price_8d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_8d_ema" + self.price_8d_ema: MetricsTree_Market_MovingAverage_Price8dEma = ( + MetricsTree_Market_MovingAverage_Price8dEma(client) ) - self.price_8d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_8d_sma" + self.price_8d_sma: MetricsTree_Market_MovingAverage_Price8dSma = ( + MetricsTree_Market_MovingAverage_Price8dSma(client) ) @@ -6334,14 +13378,30 @@ class MetricsTree_Price_Oracle: ) +class MetricsTree_Price_Sats: + """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") + + +class MetricsTree_Price_Usd: + """Metrics tree node.""" + + 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 = ""): self.cents: MetricsTree_Price_Cents = MetricsTree_Price_Cents(client) self.oracle: MetricsTree_Price_Oracle = MetricsTree_Price_Oracle(client) - self.sats: SatsPattern[OHLCSats] = SatsPattern(client, "price") - self.usd: SatsPattern[OHLCDollars] = SatsPattern(client, "price") + self.sats: MetricsTree_Price_Sats = MetricsTree_Price_Sats(client) + self.usd: MetricsTree_Price_Usd = MetricsTree_Price_Usd(client) class MetricsTree_Scripts_Count: diff --git a/websites/bitview/scripts/chart/index.js b/websites/bitview/scripts/chart/index.js index 2b0b91312..33f059984 100644 --- a/websites/bitview/scripts/chart/index.js +++ b/websites/bitview/scripts/chart/index.js @@ -379,11 +379,11 @@ export function createChartElement({ if (metric) { signals.createEffect(index, (index) => { // Get timestamp metric from tree based on index type - // timestampFixed has height only, timestamp has date-based indexes + // timestampMonotonic has height only, timestamp has date-based indexes /** @type {AnyMetricPattern} */ const timeMetric = index === "height" - ? brk.metrics.blocks.time.timestampFixed + ? brk.metrics.blocks.time.timestampMonotonic : brk.metrics.blocks.time.timestamp; /** @type {AnyMetricPattern} */ const valuesMetric = metric; diff --git a/websites/bitview/scripts/options/cohorts/shared.js b/websites/bitview/scripts/options/cohorts/shared.js index 608bdfc2a..b80be7f47 100644 --- a/websites/bitview/scripts/options/cohorts/shared.js +++ b/websites/bitview/scripts/options/cohorts/shared.js @@ -379,34 +379,34 @@ export function createCostBasisPercentilesSeries(ctx, list, useGroupName) { const percentiles = tree.costBasis.percentiles; return [ line({ - metric: percentiles.costBasisPct10, + metric: percentiles.pct10, name: useGroupName ? `${name} p10` : "p10", color, unit: Unit.usd, defaultActive: false, }), line({ - metric: percentiles.costBasisPct25, + metric: percentiles.pct25, name: useGroupName ? `${name} p25` : "p25", color, unit: Unit.usd, defaultActive: false, }), line({ - metric: percentiles.costBasisPct50, + metric: percentiles.pct50, name: useGroupName ? `${name} p50` : "p50", color, unit: Unit.usd, }), line({ - metric: percentiles.costBasisPct75, + metric: percentiles.pct75, name: useGroupName ? `${name} p75` : "p75", color, unit: Unit.usd, defaultActive: false, }), line({ - metric: percentiles.costBasisPct90, + metric: percentiles.pct90, name: useGroupName ? `${name} p90` : "p90", color, unit: Unit.usd, diff --git a/websites/bitview/scripts/options/market/investing.js b/websites/bitview/scripts/options/market/investing.js index 5c1d70d2f..e25514106 100644 --- a/websites/bitview/scripts/options/market/investing.js +++ b/websites/bitview/scripts/options/market/investing.js @@ -64,7 +64,7 @@ export function createInvestingSection(ctx, { dca, lookback, returns }) { ["10y", "_10y"], ]).map(([id, key]) => { const name = periodIdToName(id, true); - const priceAgo = lookback.priceAgo[key]; + const priceAgo = lookback[key]; const priceReturns = returns.priceReturns[key]; const dcaCostBasis = dca.periodAveragePrice[key]; const dcaReturns = dca.periodReturns[key]; @@ -181,14 +181,15 @@ export function createInvestingSection(ctx, { dca, lookback, returns }) { { name: "Returns", title: "DCA Returns by Year", - bottom: dcaClasses.map(({ year, color, defaultActive, returns }) => - baseline({ - metric: returns, - name: `${year}`, - color, - defaultActive, - unit: Unit.percentage, - }), + bottom: dcaClasses.map( + ({ year, color, defaultActive, returns }) => + baseline({ + metric: returns, + name: `${year}`, + color, + defaultActive, + unit: Unit.percentage, + }), ), }, { diff --git a/websites/bitview/scripts/options/series.js b/websites/bitview/scripts/options/series.js index 1075ec992..b206179d2 100644 --- a/websites/bitview/scripts/options/series.js +++ b/websites/bitview/scripts/options/series.js @@ -118,18 +118,6 @@ export function fromBitcoin(colors, pattern, title, color) { return [ { metric: pattern.base, title, color: color ?? colors.default }, { metric: pattern.average, title: "Average", defaultActive: false }, - { - metric: pattern.sum, - title: `${title} (sum)`, - color: colors.red, - defaultActive: false, - }, - { - metric: pattern.cumulative, - title: `${title} (cum.)`, - color: colors.cyan, - defaultActive: false, - }, { metric: pattern.max, title: "Max", @@ -333,20 +321,6 @@ export function fromFullnessPattern(colors, pattern, title, unit) { unit, defaultActive: false, }, - { - metric: pattern.sum, - title: `${title} sum`, - color: colors.blue, - unit, - defaultActive: false, - }, - { - metric: pattern.cumulative, - title: `${title} cumulative`, - color: colors.indigo, - unit, - defaultActive: false, - }, { metric: pattern.min, title: `${title} min`, diff --git a/websites/bitview/tsconfig.json b/websites/bitview/tsconfig.json index 630890d02..0ff55e37b 100644 --- a/websites/bitview/tsconfig.json +++ b/websites/bitview/tsconfig.json @@ -11,5 +11,5 @@ "lib": ["DOM", "DOM.Iterable", "ESNext", "WebWorker"], "skipLibCheck": true, }, - "exclude": ["assets", "./scripts/modules", "../../modules"], + "exclude": ["assets", "./scripts/modules"], }