diff --git a/crates/brk_bindgen/src/analysis/names.rs b/crates/brk_bindgen/src/analysis/names.rs index 0fe8d9187..021ed7370 100644 --- a/crates/brk_bindgen/src/analysis/names.rs +++ b/crates/brk_bindgen/src/analysis/names.rs @@ -120,6 +120,18 @@ pub fn find_common_suffix(names: &[&str]) -> Option { None } +/// Normalize a prefix string by ensuring it ends with underscore. +/// Returns empty string if input is empty. +pub fn normalize_prefix(s: &str) -> String { + if s.is_empty() { + String::new() + } else if s.ends_with('_') { + s.to_string() + } else { + format!("{}_", s) + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/crates/brk_bindgen/src/analysis/patterns.rs b/crates/brk_bindgen/src/analysis/patterns.rs index 7a5cc47b0..1518c8f41 100644 --- a/crates/brk_bindgen/src/analysis/patterns.rs +++ b/crates/brk_bindgen/src/analysis/patterns.rs @@ -8,7 +8,7 @@ use std::collections::{BTreeSet, HashMap}; use brk_types::{TreeNode, extract_json_type}; use super::analyze_pattern_modes; -use crate::{PatternField, StructuralPattern, to_pascal_case}; +use crate::{PatternBaseResult, PatternField, StructuralPattern, to_pascal_case}; /// Context for pattern detection, holding all intermediate state. struct PatternContext { @@ -38,14 +38,16 @@ impl PatternContext { /// Detect structural patterns in the tree using a bottom-up approach. /// -/// Returns (patterns, concrete_to_pattern, concrete_to_type_param). +/// Returns (patterns, concrete_to_pattern, concrete_to_type_param, node_bases). /// Each pattern has its `mode` set based on analysis of all instances. +/// `node_bases` maps tree paths to their computed PatternBaseResult for use during generation. pub fn detect_structural_patterns( tree: &TreeNode, ) -> ( Vec, HashMap, String>, HashMap, String>, + HashMap, ) { let mut ctx = PatternContext::new(); resolve_branch_patterns(tree, "root", &mut ctx); @@ -99,10 +101,11 @@ pub fn detect_structural_patterns( let concrete_to_pattern = pattern_lookup.clone(); // Analyze pattern modes (suffix vs prefix) from all instances - analyze_pattern_modes(tree, &mut patterns, &pattern_lookup); + // Also collects node bases for each tree path + let node_bases = analyze_pattern_modes(tree, &mut patterns, &pattern_lookup); patterns.sort_by(|a, b| b.fields.len().cmp(&a.fields.len())); - (patterns, concrete_to_pattern, type_mappings) + (patterns, concrete_to_pattern, type_mappings, node_bases) } /// Detect generic patterns by grouping signatures by their normalized form. diff --git a/crates/brk_bindgen/src/analysis/positions.rs b/crates/brk_bindgen/src/analysis/positions.rs index 43186739e..54690d777 100644 --- a/crates/brk_bindgen/src/analysis/positions.rs +++ b/crates/brk_bindgen/src/analysis/positions.rs @@ -8,8 +8,8 @@ use std::collections::HashMap; use brk_types::TreeNode; -use super::{find_common_prefix, find_common_suffix, get_node_fields}; -use crate::{PatternField, PatternMode, StructuralPattern}; +use super::{find_common_prefix, find_common_suffix, get_node_fields, normalize_prefix}; +use crate::{PatternBaseResult, PatternField, PatternMode, StructuralPattern, build_child_path}; /// Result of analyzing a single pattern instance. #[derive(Debug, Clone)] @@ -28,16 +28,21 @@ struct InstanceAnalysis { /// This is the main entry point for mode detection. It processes /// the tree bottom-up, collecting analysis for each pattern instance, /// then determines the consistent mode for each pattern. +/// +/// Returns a map from tree paths to their computed PatternBaseResult. +/// This map is used during generation to check pattern compatibility. pub fn analyze_pattern_modes( tree: &TreeNode, patterns: &mut [StructuralPattern], pattern_lookup: &HashMap, String>, -) { +) -> HashMap { // Collect analyses from all instances, keyed by pattern name let mut all_analyses: HashMap> = HashMap::new(); + // Also collect base results for each node, keyed by tree path + let mut node_bases: HashMap = HashMap::new(); // Bottom-up traversal - collect_instance_analyses(tree, pattern_lookup, &mut all_analyses); + collect_instance_analyses(tree, "", pattern_lookup, &mut all_analyses, &mut node_bases); // For each pattern, determine mode from collected instances for pattern in patterns.iter_mut() { @@ -45,14 +50,20 @@ pub fn analyze_pattern_modes( pattern.mode = determine_pattern_mode(analyses, &pattern.fields); } } + + node_bases } /// Recursively collect instance analyses bottom-up. /// Returns the "base" for this node (used by parent for its analysis). +/// +/// Also stores the PatternBaseResult for each node in `node_bases`, keyed by path. fn collect_instance_analyses( node: &TreeNode, + path: &str, pattern_lookup: &HashMap, String>, all_analyses: &mut HashMap>, + node_bases: &mut HashMap, ) -> Option { match node { TreeNode::Leaf(leaf) => { @@ -63,9 +74,14 @@ fn collect_instance_analyses( // First, process all children recursively (bottom-up) let mut child_bases: HashMap = HashMap::new(); for (field_name, child_node) in children { - if let Some(base) = - collect_instance_analyses(child_node, pattern_lookup, all_analyses) - { + let child_path = build_child_path(path, field_name); + if let Some(base) = collect_instance_analyses( + child_node, + &child_path, + pattern_lookup, + all_analyses, + node_bases, + ) { child_bases.insert(field_name.clone(), base); } } @@ -77,6 +93,19 @@ fn collect_instance_analyses( // Analyze this instance let analysis = analyze_instance(&child_bases); + // Store the base result for this node + // Note: has_outlier is false because we use recursive base computation + // which gives correct bases without needing outlier detection + node_bases.insert( + path.to_string(), + PatternBaseResult { + base: analysis.base.clone(), + has_outlier: false, + is_suffix_mode: analysis.is_suffix_mode, + field_parts: analysis.field_parts.clone(), + }, + ); + // Get the pattern name for this node (if any) let fields = get_node_fields(children, pattern_lookup); if let Some(pattern_name) = pattern_lookup.get(&fields) { @@ -128,19 +157,10 @@ fn analyze_instance(child_bases: &HashMap) -> InstanceAnalysis { let mut field_parts = HashMap::new(); for (field_name, child_base) in child_bases { - // Prefix = child_base with common suffix stripped + // Prefix = child_base with common suffix stripped, normalized to end with _ let prefix = child_base .strip_suffix(&common_suffix) - .map(|s| { - // Ensure prefix ends with underscore if non-empty - if s.is_empty() { - String::new() - } else if s.ends_with('_') { - s.to_string() - } else { - format!("{}_", s) - } - }) + .map(normalize_prefix) .unwrap_or_default(); field_parts.insert(field_name.clone(), prefix); } @@ -152,16 +172,16 @@ fn analyze_instance(child_bases: &HashMap) -> InstanceAnalysis { }; } - // No common prefix or suffix - use first child's base and treat as suffix mode - // with full metric names as relatives - let base = child_bases.values().next().cloned().unwrap_or_default(); + // No common prefix or suffix - use empty base so _m(base, relative) returns just the relative. + // This handles cases like utxo_cohorts.all.activity where children have completely + // different bases (coinblocks_destroyed, coindays_destroyed, etc.) let field_parts = child_bases .iter() .map(|(k, v)| (k.clone(), v.clone())) .collect(); InstanceAnalysis { - base, + base: String::new(), field_parts, is_suffix_mode: true, } @@ -197,7 +217,9 @@ fn determine_pattern_mode( // Convert to sorted Vec for comparison since HashMap isn't hashable let mut parts_counts: HashMap, usize> = HashMap::new(); for analysis in &majority_instances { - let mut sorted: Vec<_> = analysis.field_parts.iter() + let mut sorted: Vec<_> = analysis + .field_parts + .iter() .map(|(k, v)| (k.clone(), v.clone())) .collect(); sorted.sort(); @@ -244,7 +266,10 @@ mod tests { assert_eq!(analysis.base, "lth_cost_basis"); assert_eq!(analysis.field_parts.get("max"), Some(&"max".to_string())); assert_eq!(analysis.field_parts.get("min"), Some(&"min".to_string())); - assert_eq!(analysis.field_parts.get("percentiles"), Some(&"".to_string())); + assert_eq!( + analysis.field_parts.get("percentiles"), + Some(&"".to_string()) + ); } #[test] @@ -280,7 +305,10 @@ mod tests { assert_eq!(analysis.base, "cost_basis"); assert_eq!(analysis.field_parts.get("max"), Some(&"max".to_string())); assert_eq!(analysis.field_parts.get("min"), Some(&"min".to_string())); - assert_eq!(analysis.field_parts.get("percentiles"), Some(&"".to_string())); + assert_eq!( + analysis.field_parts.get("percentiles"), + Some(&"".to_string()) + ); } #[test] diff --git a/crates/brk_bindgen/src/analysis/tree.rs b/crates/brk_bindgen/src/analysis/tree.rs index c16e2810a..cc22e089a 100644 --- a/crates/brk_bindgen/src/analysis/tree.rs +++ b/crates/brk_bindgen/src/analysis/tree.rs @@ -9,15 +9,7 @@ use brk_types::{Index, TreeNode, extract_json_type}; use crate::{IndexSetPattern, PatternField, child_type_name}; -use super::{find_common_prefix, find_common_suffix}; - -/// Get the first leaf name from a tree node. -pub fn get_first_leaf_name(node: &TreeNode) -> Option { - match node { - TreeNode::Leaf(leaf) => Some(leaf.name().to_string()), - TreeNode::Branch(children) => children.values().find_map(get_first_leaf_name), - } -} +use super::{find_common_prefix, find_common_suffix, normalize_prefix}; /// Get the shortest leaf name from a tree node. /// @@ -128,6 +120,30 @@ pub struct PatternBaseResult { pub field_parts: HashMap, } +impl PatternBaseResult { + /// Create a default result that forces inlining (has_outlier = true). + /// Use when no pattern base could be computed during lookup. + pub fn force_inline() -> Self { + Self { + base: String::new(), + has_outlier: true, + is_suffix_mode: true, + field_parts: HashMap::new(), + } + } + + /// Create an empty result with no outlier. + /// Use for root-level patterns or when children have no common pattern. + pub fn empty() -> Self { + Self { + base: String::new(), + has_outlier: false, + is_suffix_mode: true, + field_parts: HashMap::new(), + } + } +} + /// Get the metric base for a pattern instance by analyzing direct children. /// /// Uses the shortest leaf names from direct children to find common prefix/suffix. @@ -140,12 +156,7 @@ pub struct PatternBaseResult { pub fn get_pattern_instance_base(node: &TreeNode) -> PatternBaseResult { let child_names = get_direct_children_for_analysis(node); if child_names.is_empty() { - return PatternBaseResult { - base: String::new(), - has_outlier: false, - is_suffix_mode: true, // default - field_parts: HashMap::new(), - }; + return PatternBaseResult::empty(); } // Try to find common base from leaf names @@ -181,12 +192,7 @@ pub fn get_pattern_instance_base(node: &TreeNode) -> PatternBaseResult { // Fallback: no common prefix/suffix found - this is a root-level pattern // Return empty base so metric names are used directly - PatternBaseResult { - base: String::new(), - has_outlier: false, - is_suffix_mode: true, // default - field_parts: HashMap::new(), - } + PatternBaseResult::empty() } /// Result of try_find_base: base name, has_outlier flag, is_suffix_mode flag, and field_parts. @@ -199,7 +205,10 @@ struct FindBaseResult { /// Try to find a common base from child names using prefix/suffix detection. /// Returns Some(FindBaseResult) if found. -fn try_find_base(child_names: &[(String, String)], is_outlier_attempt: bool) -> Option { +fn try_find_base( + child_names: &[(String, String)], + is_outlier_attempt: bool, +) -> Option { let leaf_names: Vec<&str> = child_names.iter().map(|(_, n)| n.as_str()).collect(); // Try common prefix first (suffix mode) @@ -231,18 +240,10 @@ fn try_find_base(child_names: &[(String, String)], is_outlier_attempt: bool) -> 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 + // Compute the prefix part for this field, normalized to end with _ 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) - } - }) + .map(normalize_prefix) .unwrap_or_default(); field_parts.insert(field_name.clone(), prefix_part); } @@ -366,9 +367,18 @@ mod tests { fn test_get_pattern_instance_base_with_base_field() { // Simulates vbytes tree: has base field with block_vbytes leaf let tree = make_branch(vec![ - ("base", make_branch(vec![("dateindex", make_leaf("block_vbytes"))])), - ("average", make_branch(vec![("dateindex", make_leaf("block_vbytes_average"))])), - ("sum", make_branch(vec![("dateindex", make_leaf("block_vbytes_sum"))])), + ( + "base", + make_branch(vec![("dateindex", make_leaf("block_vbytes"))]), + ), + ( + "average", + make_branch(vec![("dateindex", make_leaf("block_vbytes_average"))]), + ), + ( + "sum", + make_branch(vec![("dateindex", make_leaf("block_vbytes_sum"))]), + ), ]); let result = get_pattern_instance_base(&tree); @@ -380,11 +390,26 @@ mod tests { fn test_get_pattern_instance_base_without_base_field() { // Simulates weight tree: NO base field, only suffixed metrics let tree = make_branch(vec![ - ("average", make_branch(vec![("dateindex", make_leaf("block_weight_average"))])), - ("sum", make_branch(vec![("dateindex", make_leaf("block_weight_sum"))])), - ("cumulative", make_branch(vec![("dateindex", make_leaf("block_weight_cumulative"))])), - ("max", make_branch(vec![("dateindex", make_leaf("block_weight_max"))])), - ("min", make_branch(vec![("dateindex", make_leaf("block_weight_min"))])), + ( + "average", + make_branch(vec![("dateindex", make_leaf("block_weight_average"))]), + ), + ( + "sum", + make_branch(vec![("dateindex", make_leaf("block_weight_sum"))]), + ), + ( + "cumulative", + make_branch(vec![("dateindex", make_leaf("block_weight_cumulative"))]), + ), + ( + "max", + make_branch(vec![("dateindex", make_leaf("block_weight_max"))]), + ), + ( + "min", + make_branch(vec![("dateindex", make_leaf("block_weight_min"))]), + ), ]); let result = get_pattern_instance_base(&tree); @@ -397,9 +422,18 @@ mod tests { // What if there's a "base" field that points to the same leaf as "average"? // This could happen if the tree generation creates a base field that shares leaves with average let tree = make_branch(vec![ - ("base", make_branch(vec![("dateindex", make_leaf("block_weight_average"))])), - ("average", make_branch(vec![("dateindex", make_leaf("block_weight_average"))])), - ("sum", make_branch(vec![("dateindex", make_leaf("block_weight_sum"))])), + ( + "base", + make_branch(vec![("dateindex", make_leaf("block_weight_average"))]), + ), + ( + "average", + make_branch(vec![("dateindex", make_leaf("block_weight_average"))]), + ), + ( + "sum", + make_branch(vec![("dateindex", make_leaf("block_weight_sum"))]), + ), ]); let result = get_pattern_instance_base(&tree); diff --git a/crates/brk_bindgen/src/generate/tree.rs b/crates/brk_bindgen/src/generate/tree.rs index c80baa029..0df4a1942 100644 --- a/crates/brk_bindgen/src/generate/tree.rs +++ b/crates/brk_bindgen/src/generate/tree.rs @@ -4,10 +4,18 @@ use std::collections::{HashMap, HashSet}; use brk_types::TreeNode; -use crate::{ - ClientMetadata, PatternBaseResult, PatternField, child_type_name, get_fields_with_child_info, - get_pattern_instance_base, -}; +use crate::{ClientMetadata, PatternBaseResult, PatternField, child_type_name, get_fields_with_child_info}; + +/// Build a child path by appending a child name to a parent path. +/// Uses "/" as separator. If parent is empty, returns just the child name. +#[inline] +pub fn build_child_path(parent: &str, child: &str) -> String { + if parent.is_empty() { + child.to_string() + } else { + format!("{}/{}", parent, child) + } +} /// Pre-computed context for a single child node. pub struct ChildContext<'a> { @@ -38,9 +46,13 @@ pub struct TreeNodeContext<'a> { /// Prepare a tree node for generation. /// Returns None if the node should be skipped (not a branch, already generated, /// or matches a parameterizable pattern). +/// +/// The `path` parameter is the tree path to this node (e.g., "distribution/utxoCohorts"). +/// It's used to look up pre-computed PatternBaseResult from the analysis phase. pub fn prepare_tree_node<'a>( node: &'a TreeNode, name: &str, + path: &str, pattern_lookup: &HashMap, String>, metadata: &ClientMetadata, generated: &mut HashSet, @@ -55,8 +67,13 @@ pub fn prepare_tree_node<'a>( .map(|(f, _)| f.clone()) .collect(); + // Look up the pre-computed base result, or use a default that forces inlining + let base_result = metadata + .get_node_base(path) + .cloned() + .unwrap_or_else(PatternBaseResult::force_inline); + // Skip if this matches a parameterizable pattern AND has no outlier AND field parts match - let base_result = get_pattern_instance_base(node); let pattern_compatible = pattern_lookup .get(&fields) .and_then(|name| metadata.find_pattern(name)) @@ -85,7 +102,13 @@ pub fn prepare_tree_node<'a>( .zip(fields_with_child_info) .map(|((child_name, child_node), (field, child_fields))| { let is_leaf = matches!(child_node, TreeNode::Leaf(_)); - let base_result = get_pattern_instance_base(child_node); + + // Build child path and look up its pre-computed base result + let child_path = build_child_path(path, child_name); + let base_result = metadata + .get_node_base(&child_path) + .cloned() + .unwrap_or_else(PatternBaseResult::force_inline); // For type annotations: use pattern type if ANY pattern matches let matches_any_pattern = child_fields diff --git a/crates/brk_bindgen/src/generators/javascript/tree.rs b/crates/brk_bindgen/src/generators/javascript/tree.rs index 3645d626a..49e2bae4f 100644 --- a/crates/brk_bindgen/src/generators/javascript/tree.rs +++ b/crates/brk_bindgen/src/generators/javascript/tree.rs @@ -6,8 +6,8 @@ use std::fmt::Write; use brk_types::TreeNode; use crate::{ - ClientMetadata, Endpoint, GenericSyntax, JavaScriptSyntax, PatternField, generate_leaf_field, - prepare_tree_node, to_camel_case, + ClientMetadata, Endpoint, GenericSyntax, JavaScriptSyntax, PatternField, build_child_path, + generate_leaf_field, prepare_tree_node, to_camel_case, }; use super::api::generate_api_methods; @@ -22,6 +22,7 @@ pub fn generate_tree_typedefs(output: &mut String, catalog: &TreeNode, metadata: generate_tree_typedef( output, "MetricsTree", + "", catalog, &pattern_lookup, metadata, @@ -32,12 +33,13 @@ pub fn generate_tree_typedefs(output: &mut String, catalog: &TreeNode, metadata: fn generate_tree_typedef( output: &mut String, name: &str, + path: &str, node: &TreeNode, pattern_lookup: &std::collections::HashMap, String>, metadata: &ClientMetadata, generated: &mut HashSet, ) { - let Some(ctx) = prepare_tree_node(node, name, pattern_lookup, metadata, generated) else { + let Some(ctx) = prepare_tree_node(node, name, path, pattern_lookup, metadata, generated) else { return; }; @@ -71,9 +73,11 @@ fn generate_tree_typedef( // Generate child typedefs for child in &ctx.children { if child.should_inline { + let child_path = build_child_path(path, child.name); generate_tree_typedef( output, &child.inline_type_name, + &child_path, child.node, pattern_lookup, metadata, @@ -125,6 +129,7 @@ pub fn generate_main_client( output, catalog, "MetricsTree", + "", 3, &pattern_lookup, metadata, @@ -166,10 +171,12 @@ pub fn generate_main_client( writeln!(output, "export {{ BrkClient, BrkError }};").unwrap(); } +#[allow(clippy::too_many_arguments)] fn generate_tree_initializer( output: &mut String, node: &TreeNode, name: &str, + path: &str, indent: usize, pattern_lookup: &std::collections::HashMap, String>, metadata: &ClientMetadata, @@ -177,7 +184,7 @@ fn generate_tree_initializer( ) { let indent_str = " ".repeat(indent); - let Some(ctx) = prepare_tree_node(node, name, pattern_lookup, metadata, generated) else { + let Some(ctx) = prepare_tree_node(node, name, path, pattern_lookup, metadata, generated) else { return; }; @@ -199,11 +206,13 @@ fn generate_tree_initializer( } } else if child.should_inline { // Inline object + let child_path = build_child_path(path, child.name); writeln!(output, "{}{}: {{", indent_str, field_name).unwrap(); generate_tree_initializer( output, child.node, &child.inline_type_name, + &child_path, indent + 1, pattern_lookup, metadata, diff --git a/crates/brk_bindgen/src/generators/python/tree.rs b/crates/brk_bindgen/src/generators/python/tree.rs index 4dd80ce83..0fa7f3eae 100644 --- a/crates/brk_bindgen/src/generators/python/tree.rs +++ b/crates/brk_bindgen/src/generators/python/tree.rs @@ -6,8 +6,8 @@ use std::fmt::Write; use brk_types::TreeNode; use crate::{ - ClientMetadata, GenericSyntax, PatternField, PythonSyntax, generate_leaf_field, - prepare_tree_node, to_snake_case, + ClientMetadata, GenericSyntax, PatternField, PythonSyntax, build_child_path, + generate_leaf_field, prepare_tree_node, to_snake_case, }; /// Generate tree classes @@ -19,6 +19,7 @@ pub fn generate_tree_classes(output: &mut String, catalog: &TreeNode, metadata: generate_tree_class( output, "MetricsTree", + "", catalog, &pattern_lookup, metadata, @@ -30,12 +31,13 @@ pub fn generate_tree_classes(output: &mut String, catalog: &TreeNode, metadata: fn generate_tree_class( output: &mut String, name: &str, + path: &str, node: &TreeNode, pattern_lookup: &std::collections::HashMap, String>, metadata: &ClientMetadata, generated: &mut HashSet, ) { - let Some(ctx) = prepare_tree_node(node, name, pattern_lookup, metadata, generated) else { + let Some(ctx) = prepare_tree_node(node, name, path, pattern_lookup, metadata, generated) else { return; }; @@ -43,9 +45,11 @@ fn generate_tree_class( // This ensures children are defined before parent references them for child in &ctx.children { if child.should_inline { + let child_path = build_child_path(path, child.name); generate_tree_class( output, &child.inline_type_name, + &child_path, child.node, pattern_lookup, metadata, diff --git a/crates/brk_bindgen/src/generators/rust/tree.rs b/crates/brk_bindgen/src/generators/rust/tree.rs index d45a8e3aa..1f2b6da01 100644 --- a/crates/brk_bindgen/src/generators/rust/tree.rs +++ b/crates/brk_bindgen/src/generators/rust/tree.rs @@ -6,7 +6,7 @@ use std::fmt::Write; use brk_types::TreeNode; use crate::{ - ClientMetadata, GenericSyntax, LanguageSyntax, PatternField, RustSyntax, + ClientMetadata, GenericSyntax, LanguageSyntax, PatternField, RustSyntax, build_child_path, generate_leaf_field, generate_tree_node_field, prepare_tree_node, to_snake_case, }; @@ -19,6 +19,7 @@ pub fn generate_tree(output: &mut String, catalog: &TreeNode, metadata: &ClientM generate_tree_node( output, "MetricsTree", + "", catalog, &pattern_lookup, metadata, @@ -29,12 +30,13 @@ pub fn generate_tree(output: &mut String, catalog: &TreeNode, metadata: &ClientM fn generate_tree_node( output: &mut String, name: &str, + path: &str, node: &TreeNode, pattern_lookup: &std::collections::HashMap, String>, metadata: &ClientMetadata, generated: &mut HashSet, ) { - let Some(ctx) = prepare_tree_node(node, name, pattern_lookup, metadata, generated) else { + let Some(ctx) = prepare_tree_node(node, name, path, pattern_lookup, metadata, generated) else { return; }; @@ -117,9 +119,11 @@ fn generate_tree_node( // Generate child structs for child in &ctx.children { if child.should_inline { + let child_path = build_child_path(path, child.name); generate_tree_node( output, &child.inline_type_name, + &child_path, child.node, pattern_lookup, metadata, diff --git a/crates/brk_bindgen/src/types/metadata.rs b/crates/brk_bindgen/src/types/metadata.rs index caf5ec011..6f55e396f 100644 --- a/crates/brk_bindgen/src/types/metadata.rs +++ b/crates/brk_bindgen/src/types/metadata.rs @@ -6,7 +6,7 @@ use brk_query::Vecs; use brk_types::{Index, MetricLeafWithSchema}; use super::{GenericSyntax, IndexSetPattern, PatternField, StructuralPattern, extract_inner_type}; -use crate::analysis; +use crate::{PatternBaseResult, analysis}; /// Metadata extracted from brk_query for client generation. #[derive(Debug)] @@ -21,6 +21,8 @@ pub struct ClientMetadata { concrete_to_pattern: HashMap, String>, /// Maps concrete field signatures to their type parameter (for generic patterns) concrete_to_type_param: HashMap, String>, + /// Maps tree paths to their computed PatternBaseResult + node_bases: HashMap, } impl ClientMetadata { @@ -31,7 +33,7 @@ impl ClientMetadata { /// Extract metadata from a catalog TreeNode directly. pub fn from_catalog(catalog: brk_types::TreeNode) -> Self { - let (structural_patterns, concrete_to_pattern, concrete_to_type_param) = + let (structural_patterns, concrete_to_pattern, concrete_to_type_param, node_bases) = analysis::detect_structural_patterns(&catalog); let index_set_patterns = analysis::detect_index_patterns(&catalog); @@ -41,6 +43,7 @@ impl ClientMetadata { index_set_patterns, concrete_to_pattern, concrete_to_type_param, + node_bases, } } @@ -139,6 +142,11 @@ impl ClientMetadata { lookup } + /// Get the pre-computed PatternBaseResult for a tree path. + pub fn get_node_base(&self, path: &str) -> Option<&PatternBaseResult> { + self.node_bases.get(path) + } + /// Generate type annotation for a field with language-specific syntax. pub fn field_type_annotation( &self, diff --git a/crates/brk_bindgen/tests/catalog_test.rs b/crates/brk_bindgen/tests/catalog_test.rs index 29e82d22d..210153a28 100644 --- a/crates/brk_bindgen/tests/catalog_test.rs +++ b/crates/brk_bindgen/tests/catalog_test.rs @@ -79,7 +79,7 @@ fn test_all_leaves_have_names() { fn test_pattern_detection() { let catalog = load_catalog(); - let (patterns, concrete_to_pattern, concrete_to_type_param) = + let (patterns, concrete_to_pattern, concrete_to_type_param, _node_bases) = brk_bindgen::detect_structural_patterns(&catalog); println!("Detected {} structural patterns", patterns.len()); @@ -142,7 +142,7 @@ fn test_pattern_detection() { fn test_cost_basis_pattern() { let catalog = load_catalog(); - let (patterns, _, _) = brk_bindgen::detect_structural_patterns(&catalog); + let (patterns, _, _, _) = brk_bindgen::detect_structural_patterns(&catalog); // Find CostBasisPattern2 and inspect it let cost_basis = patterns @@ -211,7 +211,7 @@ fn test_realized_pattern3_fields() { #[test] fn test_parameterizable_patterns_have_mode() { let catalog = load_catalog(); - let (patterns, _, _) = brk_bindgen::detect_structural_patterns(&catalog); + let (patterns, _, _, _) = brk_bindgen::detect_structural_patterns(&catalog); // All patterns that appear 2+ times should either: // 1. Be parameterizable (have a mode) @@ -272,7 +272,7 @@ fn test_parameterizable_patterns_have_mode() { #[test] fn test_fee_rate_pattern_relatives() { let catalog = load_catalog(); - let (patterns, _, _) = brk_bindgen::detect_structural_patterns(&catalog); + let (patterns, _, _, _) = brk_bindgen::detect_structural_patterns(&catalog); let fee_rate_pattern = patterns .iter() @@ -900,17 +900,14 @@ fn test_price_sats_vs_usd_different_field_parts() { &[], ); - // Verify price.sats uses sats-suffixed metrics + // With improved pattern detection, price.sats now correctly uses a SatsPattern factory + // which eliminates duplication. Verify that it's being used: assert!( - js_output.contains("'price_ohlc_sats'"), - "price.sats.ohlc should use 'price_ohlc_sats'" - ); - assert!( - js_output.contains("'price_sats'") || js_output.contains("createSplitPattern2(this, 'price_sats')"), - "price.sats.split should use 'price_sats' base" + js_output.contains("sats: createSatsPattern(this, 'price')"), + "price.sats should use SatsPattern factory" ); - // Verify price.usd uses non-sats metrics (no _sats suffix) + // Verify price.usd is inlined and uses non-sats metrics (no _sats suffix) assert!( js_output.contains("createMetricPattern1(this, 'price_ohlc')"), "price.usd.ohlc should use 'price_ohlc' (without _sats)" @@ -920,24 +917,57 @@ fn test_price_sats_vs_usd_different_field_parts() { "price.usd.split should use 'price' base (without _sats)" ); - // Verify they don't incorrectly share the same metric names - // Count occurrences to ensure usd doesn't use sats metrics - let sats_ohlc_count = js_output.matches("'price_ohlc_sats'").count(); - let usd_ohlc_count = js_output.matches("'price_ohlc')").count(); - - println!("price_ohlc_sats occurrences: {}", sats_ohlc_count); - println!("price_ohlc occurrences: {}", usd_ohlc_count); - - assert!( - sats_ohlc_count >= 1, - "Should have at least one 'price_ohlc_sats' for price.sats" - ); - assert!( - usd_ohlc_count >= 1, - "Should have at least one 'price_ohlc' for price.usd" - ); - println!("\nPrice sats vs usd field_parts test passed!"); println!(" - price.sats correctly uses sats-suffixed metrics"); println!(" - price.usd correctly uses non-sats metrics"); } + +#[test] +fn test_utxo_cohorts_all_activity_base() { + // Test that distribution.utxo_cohorts.all.activity uses empty base + // because its children (coinblocks_destroyed, coindays_destroyed, etc.) + // have no common prefix or suffix. + let catalog = load_catalog(); + let metadata = ClientMetadata::from_catalog(catalog.clone()); + + // Generate JavaScript output + let mut js_output = String::new(); + writeln!(js_output, "// Test output").unwrap(); + brk_bindgen::javascript::client::generate_base_client(&mut js_output); + brk_bindgen::javascript::client::generate_index_accessors( + &mut js_output, + &metadata.index_set_patterns, + ); + brk_bindgen::javascript::client::generate_structural_patterns( + &mut js_output, + &metadata.structural_patterns, + &metadata, + ); + brk_bindgen::javascript::tree::generate_tree_typedefs( + &mut js_output, + &metadata.catalog, + &metadata, + ); + brk_bindgen::javascript::tree::generate_main_client( + &mut js_output, + &metadata.catalog, + &metadata, + &[], + ); + + // The all.activity should use empty base, so metrics don't get duplicated + // Look for: activity: createActivityPattern2(this, '') + // NOT: activity: createActivityPattern2(this, 'coinblocks_destroyed') + assert!( + !js_output.contains("createActivityPattern2(this, 'coinblocks_destroyed')"), + "all.activity should NOT use 'coinblocks_destroyed' as base (causes duplication)" + ); + + // Check that it uses empty string as base + assert!( + js_output.contains("activity: createActivityPattern2(this, '')"), + "all.activity should use empty base" + ); + + println!("utxo_cohorts.all.activity base test passed!"); +} diff --git a/crates/brk_client/src/lib.rs b/crates/brk_client/src/lib.rs index e9958ebeb..c58efb408 100644 --- a/crates/brk_client/src/lib.rs +++ b/crates/brk_client/src/lib.rs @@ -1253,56 +1253,6 @@ impl Price111dSmaPattern { } } -/// Pattern struct for repeated tree structure. -pub struct PercentilesPattern { - pub pct05: MetricPattern4, - pub pct10: MetricPattern4, - pub pct15: MetricPattern4, - pub pct20: MetricPattern4, - pub pct25: MetricPattern4, - pub pct30: MetricPattern4, - pub pct35: MetricPattern4, - pub pct40: MetricPattern4, - pub pct45: MetricPattern4, - pub pct50: MetricPattern4, - pub pct55: MetricPattern4, - pub pct60: MetricPattern4, - pub pct65: MetricPattern4, - pub pct70: MetricPattern4, - pub pct75: MetricPattern4, - pub pct80: MetricPattern4, - pub pct85: MetricPattern4, - pub pct90: MetricPattern4, - pub pct95: MetricPattern4, -} - -impl PercentilesPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - pct05: MetricPattern4::new(client.clone(), _m(&acc, "pct05")), - pct10: MetricPattern4::new(client.clone(), _m(&acc, "pct10")), - pct15: MetricPattern4::new(client.clone(), _m(&acc, "pct15")), - pct20: MetricPattern4::new(client.clone(), _m(&acc, "pct20")), - pct25: MetricPattern4::new(client.clone(), _m(&acc, "pct25")), - pct30: MetricPattern4::new(client.clone(), _m(&acc, "pct30")), - pct35: MetricPattern4::new(client.clone(), _m(&acc, "pct35")), - pct40: MetricPattern4::new(client.clone(), _m(&acc, "pct40")), - pct45: MetricPattern4::new(client.clone(), _m(&acc, "pct45")), - pct50: MetricPattern4::new(client.clone(), _m(&acc, "pct50")), - pct55: MetricPattern4::new(client.clone(), _m(&acc, "pct55")), - pct60: MetricPattern4::new(client.clone(), _m(&acc, "pct60")), - pct65: MetricPattern4::new(client.clone(), _m(&acc, "pct65")), - pct70: MetricPattern4::new(client.clone(), _m(&acc, "pct70")), - pct75: MetricPattern4::new(client.clone(), _m(&acc, "pct75")), - pct80: MetricPattern4::new(client.clone(), _m(&acc, "pct80")), - pct85: MetricPattern4::new(client.clone(), _m(&acc, "pct85")), - pct90: MetricPattern4::new(client.clone(), _m(&acc, "pct90")), - pct95: MetricPattern4::new(client.clone(), _m(&acc, "pct95")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct ActivePriceRatioPattern { pub ratio: MetricPattern4, @@ -1353,6 +1303,56 @@ impl ActivePriceRatioPattern { } } +/// Pattern struct for repeated tree structure. +pub struct PercentilesPattern { + pub pct05: MetricPattern4, + pub pct10: MetricPattern4, + pub pct15: MetricPattern4, + pub pct20: MetricPattern4, + pub pct25: MetricPattern4, + pub pct30: MetricPattern4, + pub pct35: MetricPattern4, + pub pct40: MetricPattern4, + pub pct45: MetricPattern4, + pub pct50: MetricPattern4, + pub pct55: MetricPattern4, + pub pct60: MetricPattern4, + pub pct65: MetricPattern4, + pub pct70: MetricPattern4, + pub pct75: MetricPattern4, + pub pct80: MetricPattern4, + pub pct85: MetricPattern4, + pub pct90: MetricPattern4, + pub pct95: MetricPattern4, +} + +impl PercentilesPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + pct05: MetricPattern4::new(client.clone(), _m(&acc, "pct05")), + pct10: MetricPattern4::new(client.clone(), _m(&acc, "pct10")), + pct15: MetricPattern4::new(client.clone(), _m(&acc, "pct15")), + pct20: MetricPattern4::new(client.clone(), _m(&acc, "pct20")), + pct25: MetricPattern4::new(client.clone(), _m(&acc, "pct25")), + pct30: MetricPattern4::new(client.clone(), _m(&acc, "pct30")), + pct35: MetricPattern4::new(client.clone(), _m(&acc, "pct35")), + pct40: MetricPattern4::new(client.clone(), _m(&acc, "pct40")), + pct45: MetricPattern4::new(client.clone(), _m(&acc, "pct45")), + pct50: MetricPattern4::new(client.clone(), _m(&acc, "pct50")), + pct55: MetricPattern4::new(client.clone(), _m(&acc, "pct55")), + pct60: MetricPattern4::new(client.clone(), _m(&acc, "pct60")), + pct65: MetricPattern4::new(client.clone(), _m(&acc, "pct65")), + pct70: MetricPattern4::new(client.clone(), _m(&acc, "pct70")), + pct75: MetricPattern4::new(client.clone(), _m(&acc, "pct75")), + pct80: MetricPattern4::new(client.clone(), _m(&acc, "pct80")), + pct85: MetricPattern4::new(client.clone(), _m(&acc, "pct85")), + pct90: MetricPattern4::new(client.clone(), _m(&acc, "pct90")), + pct95: MetricPattern4::new(client.clone(), _m(&acc, "pct95")), + } + } +} + /// Pattern struct for repeated tree structure. pub struct RelativePattern5 { pub neg_unrealized_loss_rel_to_market_cap: MetricPattern1, @@ -1604,17 +1604,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")), } } } @@ -1867,6 +1867,32 @@ impl _0satsPattern { } } +/// Pattern struct for repeated tree structure. +pub struct _100btcPattern { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern, + pub outputs: OutputsPattern, + pub realized: RealizedPattern, + pub relative: RelativePattern, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl _100btcPattern { + /// 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: 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, @@ -1919,6 +1945,32 @@ impl UnrealizedPattern { } } +/// Pattern struct for repeated tree structure. +pub struct _10yTo12yPattern { + pub activity: ActivityPattern2, + pub cost_basis: CostBasisPattern2, + pub outputs: OutputsPattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, + pub supply: SupplyPattern2, + pub unrealized: UnrealizedPattern, +} + +impl _10yTo12yPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + activity: ActivityPattern2::new(client.clone(), acc.clone()), + cost_basis: CostBasisPattern2::new(client.clone(), acc.clone()), + outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")), + realized: RealizedPattern2::new(client.clone(), acc.clone()), + relative: RelativePattern2::new(client.clone(), acc.clone()), + supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")), + unrealized: UnrealizedPattern::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct _0satsPattern2 { pub activity: ActivityPattern2, @@ -1945,32 +1997,6 @@ impl _0satsPattern2 { } } -/// Pattern struct for repeated tree structure. -pub struct _100btcPattern { - pub activity: ActivityPattern2, - pub cost_basis: CostBasisPattern, - pub outputs: OutputsPattern, - pub realized: RealizedPattern, - pub relative: RelativePattern, - pub supply: SupplyPattern2, - pub unrealized: UnrealizedPattern, -} - -impl _100btcPattern { - /// 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: 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 _10yPattern { pub activity: ActivityPattern2, @@ -1997,32 +2023,6 @@ impl _10yPattern { } } -/// Pattern struct for repeated tree structure. -pub struct _10yTo12yPattern { - pub activity: ActivityPattern2, - pub cost_basis: CostBasisPattern2, - pub outputs: OutputsPattern, - pub realized: RealizedPattern2, - pub relative: RelativePattern2, - pub supply: SupplyPattern2, - pub unrealized: UnrealizedPattern, -} - -impl _10yTo12yPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - activity: ActivityPattern2::new(client.clone(), acc.clone()), - cost_basis: CostBasisPattern2::new(client.clone(), acc.clone()), - outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")), - realized: RealizedPattern2::new(client.clone(), acc.clone()), - relative: RelativePattern2::new(client.clone(), acc.clone()), - supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")), - unrealized: UnrealizedPattern::new(client.clone(), acc.clone()), - } - } -} - /// Pattern struct for repeated tree structure. pub struct ActivityPattern2 { pub coinblocks_destroyed: BlockCountPattern, @@ -2065,42 +2065,6 @@ impl SplitPattern2 { } } -/// Pattern struct for repeated tree structure. -pub struct ActiveSupplyPattern { - pub bitcoin: MetricPattern1, - pub dollars: MetricPattern1, - pub sats: MetricPattern1, -} - -impl ActiveSupplyPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - bitcoin: MetricPattern1::new(client.clone(), _m(&acc, "btc")), - dollars: MetricPattern1::new(client.clone(), _m(&acc, "usd")), - sats: MetricPattern1::new(client.clone(), acc.clone()), - } - } -} - -/// Pattern struct for repeated tree structure. -pub struct 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 _2015Pattern { pub bitcoin: MetricPattern4, @@ -2138,17 +2102,17 @@ impl CoinbasePattern { } /// Pattern struct for repeated tree structure. -pub struct UnclaimedRewardsPattern { - pub bitcoin: BitcoinPattern2, +pub struct CoinbasePattern2 { + pub bitcoin: BlockCountPattern, pub dollars: BlockCountPattern, pub sats: BlockCountPattern, } -impl UnclaimedRewardsPattern { +impl CoinbasePattern2 { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - bitcoin: BitcoinPattern2::new(client.clone(), _m(&acc, "btc")), + bitcoin: BlockCountPattern::new(client.clone(), _m(&acc, "btc")), dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")), sats: BlockCountPattern::new(client.clone(), acc.clone()), } @@ -2191,6 +2155,42 @@ impl CostBasisPattern2 { } } +/// Pattern struct for repeated tree structure. +pub struct ActiveSupplyPattern { + pub bitcoin: MetricPattern1, + pub dollars: MetricPattern1, + pub sats: MetricPattern1, +} + +impl ActiveSupplyPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + bitcoin: MetricPattern1::new(client.clone(), _m(&acc, "btc")), + dollars: MetricPattern1::new(client.clone(), _m(&acc, "usd")), + sats: MetricPattern1::new(client.clone(), acc.clone()), + } + } +} + +/// Pattern struct for repeated tree structure. +pub struct UnclaimedRewardsPattern { + pub bitcoin: BitcoinPattern2, + pub dollars: BlockCountPattern, + pub sats: BlockCountPattern, +} + +impl UnclaimedRewardsPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + bitcoin: BitcoinPattern2::new(client.clone(), _m(&acc, "btc")), + dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")), + sats: BlockCountPattern::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct CostBasisPattern { pub max: MetricPattern1, @@ -2271,22 +2271,6 @@ impl BlockCountPattern { } } -/// Pattern struct for repeated tree structure. -pub struct SatsPattern { - pub ohlc: MetricPattern1, - pub split: SplitPattern2, -} - -impl SatsPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - ohlc: MetricPattern1::new(client.clone(), _m(&acc, "ohlc_sats")), - split: SplitPattern2::new(client.clone(), _m(&acc, "sats")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct BitcoinPattern2 { pub cumulative: MetricPattern2, @@ -2304,15 +2288,17 @@ impl BitcoinPattern2 { } /// Pattern struct for repeated tree structure. -pub struct OutputsPattern { - pub utxo_count: MetricPattern1, +pub struct SatsPattern { + pub ohlc: MetricPattern1, + pub split: SplitPattern2, } -impl OutputsPattern { +impl SatsPattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - utxo_count: MetricPattern1::new(client.clone(), acc.clone()), + ohlc: MetricPattern1::new(client.clone(), _m(&acc, "ohlc_sats")), + split: SplitPattern2::new(client.clone(), _m(&acc, "sats")), } } } @@ -2331,6 +2317,20 @@ impl RealizedPriceExtraPattern { } } +/// Pattern struct for repeated tree structure. +pub struct OutputsPattern { + pub utxo_count: MetricPattern1, +} + +impl OutputsPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + utxo_count: MetricPattern1::new(client.clone(), acc.clone()), + } + } +} + // Metrics tree /// Metrics tree node. @@ -2741,222 +2741,26 @@ impl MetricsTree_Cointime_Cap { /// Metrics tree node. pub struct MetricsTree_Cointime_Pricing { pub active_price: MetricPattern1, - pub active_price_ratio: MetricsTree_Cointime_Pricing_ActivePriceRatio, + pub active_price_ratio: ActivePriceRatioPattern, pub cointime_price: MetricPattern1, - pub cointime_price_ratio: MetricsTree_Cointime_Pricing_CointimePriceRatio, + pub cointime_price_ratio: ActivePriceRatioPattern, pub true_market_mean: MetricPattern1, - pub true_market_mean_ratio: MetricsTree_Cointime_Pricing_TrueMarketMeanRatio, + pub true_market_mean_ratio: ActivePriceRatioPattern, pub vaulted_price: MetricPattern1, - pub vaulted_price_ratio: MetricsTree_Cointime_Pricing_VaultedPriceRatio, + pub vaulted_price_ratio: ActivePriceRatioPattern, } 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: MetricsTree_Cointime_Pricing_ActivePriceRatio::new(client.clone(), format!("{base_path}_active_price_ratio")), + active_price_ratio: ActivePriceRatioPattern::new(client.clone(), "active_price_ratio".to_string()), cointime_price: MetricPattern1::new(client.clone(), "cointime_price".to_string()), - cointime_price_ratio: MetricsTree_Cointime_Pricing_CointimePriceRatio::new(client.clone(), format!("{base_path}_cointime_price_ratio")), + cointime_price_ratio: ActivePriceRatioPattern::new(client.clone(), "cointime_price_ratio".to_string()), true_market_mean: MetricPattern1::new(client.clone(), "true_market_mean".to_string()), - true_market_mean_ratio: MetricsTree_Cointime_Pricing_TrueMarketMeanRatio::new(client.clone(), format!("{base_path}_true_market_mean_ratio")), + true_market_mean_ratio: ActivePriceRatioPattern::new(client.clone(), "true_market_mean_ratio".to_string()), vaulted_price: MetricPattern1::new(client.clone(), "vaulted_price".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()), + vaulted_price_ratio: ActivePriceRatioPattern::new(client.clone(), "vaulted_price_ratio".to_string()), } } } @@ -3088,1222 +2892,115 @@ impl MetricsTree_Distribution_AddressCohorts { /// Metrics tree node. pub struct MetricsTree_Distribution_AddressCohorts_AmountRange { - 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, + 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, } impl MetricsTree_Distribution_AddressCohorts_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_AddressCohorts_GeAmount { - 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, + 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, } impl MetricsTree_Distribution_AddressCohorts_GeAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_AddressCohorts_LtAmount { - 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, + 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, } impl MetricsTree_Distribution_AddressCohorts_LtAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } @@ -4385,981 +3082,78 @@ impl MetricsTree_Distribution_UtxoCohorts { /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange { - 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, + 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, } impl MetricsTree_Distribution_UtxoCohorts_AgeRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_All { - pub activity: MetricsTree_Distribution_UtxoCohorts_All_Activity, + pub activity: ActivityPattern2, pub cost_basis: MetricsTree_Distribution_UtxoCohorts_All_CostBasis, pub outputs: OutputsPattern, - pub realized: MetricsTree_Distribution_UtxoCohorts_All_Realized, + pub realized: RealizedPattern3, pub relative: MetricsTree_Distribution_UtxoCohorts_All_Relative, pub supply: SupplyPattern2, - pub unrealized: MetricsTree_Distribution_UtxoCohorts_All_Unrealized, + pub unrealized: UnrealizedPattern, } 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")), + activity: ActivityPattern2::new(client.clone(), "".to_string()), 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: MetricsTree_Distribution_UtxoCohorts_All_Realized::new(client.clone(), format!("{base_path}_realized")), + realized: RealizedPattern3::new(client.clone(), "".to_string()), relative: MetricsTree_Distribution_UtxoCohorts_All_Relative::new(client.clone(), format!("{base_path}_relative")), supply: SupplyPattern2::new(client.clone(), "supply".to_string()), - unrealized: MetricsTree_Distribution_UtxoCohorts_All_Unrealized::new(client.clone(), format!("{base_path}_unrealized")), - } - } -} - -/// Metrics tree node. -pub struct MetricsTree_Distribution_UtxoCohorts_All_Activity { - pub coinblocks_destroyed: BlockCountPattern, - pub coindays_destroyed: BlockCountPattern, - pub satblocks_destroyed: MetricPattern11, - pub satdays_destroyed: MetricPattern11, - pub sent: UnclaimedRewardsPattern, -} - -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()), - sent: UnclaimedRewardsPattern::new(client.clone(), "sent".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "".to_string()), } } } @@ -5381,130 +3175,6 @@ 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, @@ -5528,2307 +3198,232 @@ impl MetricsTree_Distribution_UtxoCohorts_All_Relative { } } -/// 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: 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, + 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, } impl MetricsTree_Distribution_UtxoCohorts_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_Epoch { - 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, + pub _0: _0satsPattern2, + pub _1: _0satsPattern2, + pub _2: _0satsPattern2, + pub _3: _0satsPattern2, + pub _4: _0satsPattern2, } impl MetricsTree_Distribution_UtxoCohorts_Epoch { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_GeAmount { - 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, + 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, } impl MetricsTree_Distribution_UtxoCohorts_GeAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_LtAmount { - 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, + 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, } impl MetricsTree_Distribution_UtxoCohorts_LtAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_MaxAge { - 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, + 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, } impl MetricsTree_Distribution_UtxoCohorts_MaxAge { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_MinAge { - 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, + 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, } impl MetricsTree_Distribution_UtxoCohorts_MinAge { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } @@ -7851,7 +3446,7 @@ impl MetricsTree_Distribution_UtxoCohorts_Term { /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_Term_Long { pub activity: ActivityPattern2, - pub cost_basis: MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis, + pub cost_basis: CostBasisPattern2, pub outputs: OutputsPattern, pub realized: RealizedPattern2, pub relative: RelativePattern5, @@ -7863,7 +3458,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: MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + cost_basis: CostBasisPattern2::new(client.clone(), "lth".to_string()), 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()), @@ -7873,27 +3468,10 @@ 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: MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis, + pub cost_basis: CostBasisPattern2, pub outputs: OutputsPattern, pub realized: RealizedPattern3, pub relative: RelativePattern5, @@ -7905,7 +3483,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: MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + cost_basis: CostBasisPattern2::new(client.clone(), "sth".to_string()), 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()), @@ -7915,824 +3493,82 @@ 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: 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, + 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, } impl MetricsTree_Distribution_UtxoCohorts_Type { pub fn new(client: Arc, base_path: String) -> Self { Self { - 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()), + 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()), } } } /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_Year { - 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, + 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, } impl MetricsTree_Distribution_UtxoCohorts_Year { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } @@ -9300,8 +4136,8 @@ impl MetricsTree_Market_Ath { /// Metrics tree node. pub struct MetricsTree_Market_Dca { - pub class_average_price: ClassAveragePricePattern, - pub class_returns: MetricsTree_Market_Dca_ClassReturns, + pub class_average_price: MetricsTree_Market_Dca_ClassAveragePrice, + pub class_returns: ClassAveragePricePattern, pub class_stack: MetricsTree_Market_Dca_ClassStack, pub period_average_price: PeriodAveragePricePattern, pub period_cagr: PeriodCagrPattern, @@ -9313,8 +4149,8 @@ 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_returns: MetricsTree_Market_Dca_ClassReturns::new(client.clone(), format!("{base_path}_class_returns")), + 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()), period_cagr: PeriodCagrPattern::new(client.clone(), "dca_cagr".to_string()), @@ -9326,34 +4162,34 @@ impl MetricsTree_Market_Dca { } /// Metrics tree node. -pub struct MetricsTree_Market_Dca_ClassReturns { - pub _2015: MetricPattern4, - pub _2016: MetricPattern4, - pub _2017: MetricPattern4, - pub _2018: MetricPattern4, - pub _2019: MetricPattern4, - pub _2020: MetricPattern4, - pub _2021: MetricPattern4, - pub _2022: MetricPattern4, - pub _2023: MetricPattern4, - pub _2024: MetricPattern4, - pub _2025: MetricPattern4, +pub 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_ClassReturns { +impl MetricsTree_Market_Dca_ClassAveragePrice { pub fn new(client: Arc, base_path: String) -> Self { Self { - _2015: MetricPattern4::new(client.clone(), "dca_class_2015_returns".to_string()), - _2016: MetricPattern4::new(client.clone(), "dca_class_2016_returns".to_string()), - _2017: MetricPattern4::new(client.clone(), "dca_class_2017_returns".to_string()), - _2018: MetricPattern4::new(client.clone(), "dca_class_2018_returns".to_string()), - _2019: MetricPattern4::new(client.clone(), "dca_class_2019_returns".to_string()), - _2020: MetricPattern4::new(client.clone(), "dca_class_2020_returns".to_string()), - _2021: MetricPattern4::new(client.clone(), "dca_class_2021_returns".to_string()), - _2022: MetricPattern4::new(client.clone(), "dca_class_2022_returns".to_string()), - _2023: MetricPattern4::new(client.clone(), "dca_class_2023_returns".to_string()), - _2024: MetricPattern4::new(client.clone(), "dca_class_2024_returns".to_string()), - _2025: MetricPattern4::new(client.clone(), "dca_class_2025_returns".to_string()), + _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()), } } } @@ -9442,1713 +4278,81 @@ impl MetricsTree_Market_Indicators { /// Metrics tree node. pub struct MetricsTree_Market_MovingAverage { - 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_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_200d_sma_x0_8: MetricPattern4, pub price_200d_sma_x2_4: MetricPattern4, - 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_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_350d_sma_x2: MetricPattern4, - 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, + 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, } impl MetricsTree_Market_MovingAverage { pub fn new(client: Arc, base_path: String) -> Self { Self { - 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_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: 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_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_350d_sma_x2: MetricPattern4::new(client.clone(), "price_350d_sma_x2".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()), + 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()), } } } @@ -11695,7 +4899,7 @@ impl MetricsTree_Positions { pub struct MetricsTree_Price { pub cents: MetricsTree_Price_Cents, pub oracle: MetricsTree_Price_Oracle, - pub sats: MetricsTree_Price_Sats, + pub sats: SatsPattern, pub usd: MetricsTree_Price_Usd, } @@ -11704,7 +4908,7 @@ 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: MetricsTree_Price_Sats::new(client.clone(), format!("{base_path}_sats")), + sats: SatsPattern::new(client.clone(), "price".to_string()), usd: MetricsTree_Price_Usd::new(client.clone(), format!("{base_path}_usd")), } } @@ -11763,21 +4967,6 @@ 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, diff --git a/docs/README.md b/docs/README.md index 722e8e167..74d382c08 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,64 +1,42 @@ # Bitcoin Research Kit -**Open-source Bitcoin analytics infrastructure.** +Open-source on-chain analytics for Bitcoin. [![MIT Licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/bitcoinresearchkit/brk/blob/main/docs/LICENSE.md) [![Crates.io](https://img.shields.io/crates/v/brk.svg)](https://crates.io/crates/brk) [![docs.rs](https://img.shields.io/docsrs/brk)](https://docs.rs/brk) -[![Discord](https://img.shields.io/discord/1350431684562124850?logo=discord)](https://discord.gg/WACpShCB7M) -[Homepage](https://bitcoinresearchkit.org) · [**Bitview**](https://bitview.space) · [API Reference](https://bitcoinresearchkit.org/api) +Combines functionality of [Glassnode](https://glassnode.com) (on-chain metrics), [mempool.space](https://mempool.space) (block explorer), and [electrs](https://github.com/romanz/electrs) (address index) into a single self-hostable package. See [Bitview](https://bitview.space) for a live example. ---- +## Data -BRK parses, indexes, and analyzes Bitcoin blockchain data. It combines on-chain analytics (like [Glassnode](https://glassnode.com)), block exploration (like [mempool.space](https://mempool.space)), and address indexing (like [electrs](https://github.com/romanz/electrs)) into a single self-hostable package. +**Blockchain** — Blocks, transactions, addresses, UTXOs. -## See It In Action +**Metrics** — Supply distributions, holder cohorts, network activity, fee markets, mining, and market indicators (realized cap, MVRV, SOPR, NVT). -[**Bitview**](https://bitview.space) is a web application built entirely on BRK. It offers interactive charts for exploring Bitcoin on-chain metrics—price models, supply dynamics, holder behavior, network activity, and more. Browse it to see what's possible with the data BRK provides. +**Indexes** — Query by date, height, halving epoch, address type, UTXO age. -## What It Provides +**Mempool** — Fee estimation, projected blocks, unconfirmed transactions. -**On-Chain Metrics** — Thousands of derived metrics: market indicators (realized cap, MVRV, SOPR, NVT), supply analysis (circulating, liquid, illiquid), holder cohorts (by balance, age, address type), and pricing models. This is what sets BRK apart from typical block explorers. +## Usage -**Blockchain Data** — Blocks, transactions, addresses, UTXOs. The API follows mempool.space's format for compatibility with existing tools. +**API** — REST with JSON/CSV. [Documentation](https://bitcoinresearchkit.org/api). Clients: [JavaScript](https://www.npmjs.com/package/brk-client), [Python](https://pypi.org/project/brk-client), [Rust](https://crates.io/crates/brk_client). -**Multiple Indexes** — Query data by date, block height, halving epoch, address type, UTXO age, and more. Enables flexible time-series queries and cohort analysis. +**Self-host** — Requires Bitcoin Core. [Guide](./HOSTING.md). [Docker](https://github.com/bitcoinresearchkit/brk/tree/main/docker). -**Mempool** — Real-time fee estimation, projected blocks, unconfirmed transaction tracking. +**Library** — [docs.rs/brk](https://docs.rs/brk). [Architecture](./ARCHITECTURE.md). -**REST API** — JSON and CSV output with OpenAPI documentation. - -**MCP Server** — Model Context Protocol integration for AI assistants and LLMs. - -## Get Started - -**Use the Public API** — Access data without running infrastructure. Client libraries available for [JavaScript](https://www.npmjs.com/package/brk-client), [Python](https://pypi.org/project/brk-client/), and [Rust](https://crates.io/crates/brk_client). See the [API reference](https://bitcoinresearchkit.org/api) for endpoints. - -**Self-Host** — Run your own instance with Bitcoin Core. Install via [`brk_cli`](https://docs.rs/brk_cli) or use [Docker](https://github.com/bitcoinresearchkit/brk/tree/main/docker). See the [hosting guide](./HOSTING.md). - -**Use as a Library** — Build custom tools with the Rust crates. Use individual components or the [umbrella crate](https://docs.rs/brk). See [architecture](./ARCHITECTURE.md) for how they fit together. - -## Architecture - -``` -blk*.dat ──▶ Reader ──┐ - ├──▶ Indexer ──▶ Computer ──┐ - RPC Client ──┤ ├──▶ Query ──▶ Server - └──▶ Mempool ───────────────┘ -``` - -**Reader** parses Bitcoin Core's block files. **Indexer** builds lookup tables. **Computer** derives metrics. **Mempool** tracks unconfirmed transactions. **Query** provides unified data access. **Server** exposes the REST API. - -[Detailed architecture](./ARCHITECTURE.md) · [All crates](https://docs.rs/brk) +**MCP** — Model Context Protocol server for LLMs. ## Links - [Changelog](./CHANGELOG.md) - [Support](./SUPPORT.md) - [Contributing](https://github.com/bitcoinresearchkit/brk/issues) -- Community: [Discord](https://discord.gg/WACpShCB7M) · [Nostr](https://primal.net/p/nprofile1qqsfw5dacngjlahye34krvgz7u0yghhjgk7gxzl5ptm9v6n2y3sn03sqxu2e6) -- Development supported by [OpenSats](https://opensats.org/) + +[Discord](https://discord.gg/WACpShCB7M) · [Nostr](https://primal.net/p/nprofile1qqsfw5dacngjlahye34krvgz7u0yghhjgk7gxzl5ptm9v6n2y3sn03sqxu2e6) + +Development supported by [OpenSats](https://opensats.org/). ## License diff --git a/modules/brk-client/index.js b/modules/brk-client/index.js index 73e775be8..0092b1235 100644 --- a/modules/brk-client/index.js +++ b/modules/brk-client/index.js @@ -797,10 +797,9 @@ * @property {string|boolean} [cache] - Enable browser cache with default name (true), custom name (string), or disable (false). No effect in Node.js. Default: true */ -const _isBrowser = typeof window !== "undefined" && "caches" in window; -const _runIdle = (/** @type {VoidFunction} */ fn) => - (globalThis.requestIdleCallback ?? setTimeout)(fn); -const _defaultCacheName = "__BRK_CLIENT__"; +const _isBrowser = typeof window !== 'undefined' && 'caches' in window; +const _runIdle = (/** @type {VoidFunction} */ fn) => (globalThis.requestIdleCallback ?? setTimeout)(fn); +const _defaultCacheName = '__BRK_CLIENT__'; /** * @param {string|boolean|undefined} cache @@ -808,7 +807,7 @@ const _defaultCacheName = "__BRK_CLIENT__"; */ const _openCache = (cache) => { if (!_isBrowser || cache === false) return Promise.resolve(null); - const name = typeof cache === "string" ? cache : _defaultCacheName; + const name = typeof cache === 'string' ? cache : _defaultCacheName; return caches.open(name).catch(() => null); }; @@ -822,7 +821,7 @@ class BrkError extends Error { */ constructor(message, status) { super(message); - this.name = "BrkError"; + this.name = 'BrkError'; this.status = status; } } @@ -914,9 +913,9 @@ function _endpoint(client, name, index) { */ const buildPath = (start, end, format) => { const params = new URLSearchParams(); - if (start !== undefined) params.set("start", String(start)); - if (end !== undefined) params.set("end", String(end)); - if (format) params.set("format", format); + if (start !== undefined) params.set('start', String(start)); + if (end !== undefined) params.set('end', String(end)); + if (format) params.set('format', format); const query = params.toString(); return query ? `${p}?${query}` : p; }; @@ -927,15 +926,9 @@ function _endpoint(client, name, index) { * @returns {RangeBuilder} */ const rangeBuilder = (start, end) => ({ - fetch(onUpdate) { - return client.getJson(buildPath(start, end), onUpdate); - }, - fetchCsv() { - return client.getText(buildPath(start, end, "csv")); - }, - then(resolve, reject) { - return this.fetch().then(resolve, reject); - }, + fetch(onUpdate) { return client.getJson(buildPath(start, end), onUpdate); }, + fetchCsv() { return client.getText(buildPath(start, end, 'csv')); }, + then(resolve, reject) { return this.fetch().then(resolve, reject); }, }); /** @@ -943,15 +936,9 @@ function _endpoint(client, name, index) { * @returns {SingleItemBuilder} */ const singleItemBuilder = (index) => ({ - fetch(onUpdate) { - return client.getJson(buildPath(index, index + 1), onUpdate); - }, - fetchCsv() { - return client.getText(buildPath(index, index + 1, "csv")); - }, - then(resolve, reject) { - return this.fetch().then(resolve, reject); - }, + fetch(onUpdate) { return client.getJson(buildPath(index, index + 1), onUpdate); }, + fetchCsv() { return client.getText(buildPath(index, index + 1, 'csv')); }, + then(resolve, reject) { return this.fetch().then(resolve, reject); }, }); /** @@ -959,49 +946,23 @@ function _endpoint(client, name, index) { * @returns {SkippedBuilder} */ const skippedBuilder = (start) => ({ - take(n) { - return rangeBuilder(start, start + n); - }, - fetch(onUpdate) { - return client.getJson(buildPath(start, undefined), onUpdate); - }, - fetchCsv() { - return client.getText(buildPath(start, undefined, "csv")); - }, - then(resolve, reject) { - return this.fetch().then(resolve, reject); - }, + take(n) { return rangeBuilder(start, start + n); }, + fetch(onUpdate) { return client.getJson(buildPath(start, undefined), onUpdate); }, + fetchCsv() { return client.getText(buildPath(start, undefined, 'csv')); }, + then(resolve, reject) { return this.fetch().then(resolve, reject); }, }); /** @type {MetricEndpointBuilder} */ const endpoint = { - get(index) { - return singleItemBuilder(index); - }, - slice(start, end) { - return rangeBuilder(start, end); - }, - first(n) { - return rangeBuilder(undefined, n); - }, - last(n) { - return n === 0 ? rangeBuilder(undefined, 0) : rangeBuilder(-n, undefined); - }, - skip(n) { - return skippedBuilder(n); - }, - fetch(onUpdate) { - return client.getJson(buildPath(), onUpdate); - }, - fetchCsv() { - return client.getText(buildPath(undefined, undefined, "csv")); - }, - then(resolve, reject) { - return this.fetch().then(resolve, reject); - }, - get path() { - return p; - }, + get(index) { return singleItemBuilder(index); }, + slice(start, end) { return rangeBuilder(start, end); }, + first(n) { return rangeBuilder(undefined, n); }, + last(n) { return n === 0 ? rangeBuilder(undefined, 0) : rangeBuilder(-n, undefined); }, + skip(n) { return skippedBuilder(n); }, + fetch(onUpdate) { return client.getJson(buildPath(), onUpdate); }, + fetchCsv() { return client.getText(buildPath(undefined, undefined, 'csv')); }, + then(resolve, reject) { return this.fetch().then(resolve, reject); }, + get path() { return p; }, }; return endpoint; @@ -1015,7 +976,7 @@ class BrkClientBase { * @param {BrkClientOptions|string} options */ constructor(options) { - const isString = typeof options === "string"; + const isString = typeof options === 'string'; this.baseUrl = isString ? options : options.baseUrl; this.timeout = isString ? 5000 : (options.timeout ?? 5000); /** @type {Promise} */ @@ -1027,9 +988,7 @@ class BrkClientBase { * @returns {Promise} */ async get(path) { - const base = this.baseUrl.endsWith("/") - ? this.baseUrl.slice(0, -1) - : this.baseUrl; + const base = this.baseUrl.endsWith('/') ? this.baseUrl.slice(0, -1) : this.baseUrl; const url = `${base}${path}`; const res = await fetch(url, { signal: AbortSignal.timeout(this.timeout) }); if (!res.ok) throw new BrkError(`HTTP ${res.status}: ${url}`, res.status); @@ -1044,9 +1003,7 @@ class BrkClientBase { * @returns {Promise} */ async getJson(path, onUpdate) { - const base = this.baseUrl.endsWith("/") - ? this.baseUrl.slice(0, -1) - : this.baseUrl; + const base = this.baseUrl.endsWith('/') ? this.baseUrl.slice(0, -1) : this.baseUrl; const url = `${base}${path}`; const cache = await this._cachePromise; const cachedRes = await cache?.match(url); @@ -1055,13 +1012,12 @@ class BrkClientBase { if (cachedJson) onUpdate?.(cachedJson); if (globalThis.navigator?.onLine === false) { if (cachedJson) return cachedJson; - throw new BrkError("Offline and no cached data available"); + throw new BrkError('Offline and no cached data available'); } try { const res = await this.get(path); - if (cachedRes?.headers.get("ETag") === res.headers.get("ETag")) - return cachedJson; + if (cachedRes?.headers.get('ETag') === res.headers.get('ETag')) return cachedJson; const cloned = res.clone(); const json = await res.json(); @@ -1091,7 +1047,7 @@ class BrkClientBase { * @param {string} s - Metric suffix * @returns {string} */ -const _m = (acc, s) => (s ? (acc ? `${acc}_${s}` : s) : acc); +const _m = (acc, s) => s ? (acc ? `${acc}_${s}` : s) : acc; /** * Build metric name with prefix. @@ -1099,50 +1055,15 @@ const _m = (acc, s) => (s ? (acc ? `${acc}_${s}` : s) : acc); * @param {string} acc - Accumulated name * @returns {string} */ -const _p = (prefix, acc) => (acc ? `${prefix}_${acc}` : prefix); +const _p = (prefix, acc) => acc ? `${prefix}_${acc}` : prefix; + // Index group constants and factory -const _i1 = /** @type {const} */ ([ - "dateindex", - "decadeindex", - "difficultyepoch", - "height", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", -]); -const _i2 = /** @type {const} */ ([ - "dateindex", - "decadeindex", - "difficultyepoch", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", -]); -const _i3 = /** @type {const} */ ([ - "dateindex", - "decadeindex", - "height", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", -]); -const _i4 = /** @type {const} */ ([ - "dateindex", - "decadeindex", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", -]); +const _i1 = /** @type {const} */ (["dateindex", "decadeindex", "difficultyepoch", "height", "monthindex", "quarterindex", "semesterindex", "weekindex", "yearindex"]); +const _i2 = /** @type {const} */ (["dateindex", "decadeindex", "difficultyepoch", "monthindex", "quarterindex", "semesterindex", "weekindex", "yearindex"]); +const _i3 = /** @type {const} */ (["dateindex", "decadeindex", "height", "monthindex", "quarterindex", "semesterindex", "weekindex", "yearindex"]); +const _i4 = /** @type {const} */ (["dateindex", "decadeindex", "monthindex", "quarterindex", "semesterindex", "weekindex", "yearindex"]); const _i5 = /** @type {const} */ (["dateindex", "height"]); const _i6 = /** @type {const} */ (["dateindex"]); const _i7 = /** @type {const} */ (["decadeindex"]); @@ -1183,188 +1104,116 @@ function _mp(client, name, indexes) { const by = /** @type {any} */ ({}); for (const idx of indexes) { Object.defineProperty(by, idx, { - get() { - return _endpoint(client, name, idx); - }, + get() { return _endpoint(client, name, idx); }, enumerable: true, - configurable: true, + configurable: true }); } return { name, by, - indexes() { - return indexes; - }, + indexes() { return indexes; }, /** @param {Index} index */ - get(index) { - return indexes.includes(index) - ? _endpoint(client, name, index) - : undefined; - }, + get(index) { return indexes.includes(index) ? _endpoint(client, name, index) : undefined; } }; } /** @template T @typedef {{ name: string, by: { readonly dateindex: MetricEndpointBuilder, readonly decadeindex: MetricEndpointBuilder, readonly difficultyepoch: MetricEndpointBuilder, readonly height: MetricEndpointBuilder, readonly monthindex: MetricEndpointBuilder, readonly quarterindex: MetricEndpointBuilder, readonly semesterindex: MetricEndpointBuilder, readonly weekindex: MetricEndpointBuilder, readonly yearindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern1 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern1} */ -function createMetricPattern1(client, name) { - return _mp(client, name, _i1); -} +function createMetricPattern1(client, name) { return _mp(client, name, _i1); } /** @template T @typedef {{ name: string, by: { readonly dateindex: MetricEndpointBuilder, readonly decadeindex: MetricEndpointBuilder, readonly difficultyepoch: MetricEndpointBuilder, readonly monthindex: MetricEndpointBuilder, readonly quarterindex: MetricEndpointBuilder, readonly semesterindex: MetricEndpointBuilder, readonly weekindex: MetricEndpointBuilder, readonly yearindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern2 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern2} */ -function createMetricPattern2(client, name) { - return _mp(client, name, _i2); -} +function createMetricPattern2(client, name) { return _mp(client, name, _i2); } /** @template T @typedef {{ name: string, by: { readonly dateindex: MetricEndpointBuilder, readonly decadeindex: MetricEndpointBuilder, readonly height: MetricEndpointBuilder, readonly monthindex: MetricEndpointBuilder, readonly quarterindex: MetricEndpointBuilder, readonly semesterindex: MetricEndpointBuilder, readonly weekindex: MetricEndpointBuilder, readonly yearindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern3 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern3} */ -function createMetricPattern3(client, name) { - return _mp(client, name, _i3); -} +function createMetricPattern3(client, name) { return _mp(client, name, _i3); } /** @template T @typedef {{ name: string, by: { readonly dateindex: MetricEndpointBuilder, readonly decadeindex: MetricEndpointBuilder, readonly monthindex: MetricEndpointBuilder, readonly quarterindex: MetricEndpointBuilder, readonly semesterindex: MetricEndpointBuilder, readonly weekindex: MetricEndpointBuilder, readonly yearindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern4 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern4} */ -function createMetricPattern4(client, name) { - return _mp(client, name, _i4); -} +function createMetricPattern4(client, name) { return _mp(client, name, _i4); } /** @template T @typedef {{ name: string, by: { readonly dateindex: MetricEndpointBuilder, readonly height: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern5 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern5} */ -function createMetricPattern5(client, name) { - return _mp(client, name, _i5); -} +function createMetricPattern5(client, name) { return _mp(client, name, _i5); } /** @template T @typedef {{ name: string, by: { readonly dateindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern6 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern6} */ -function createMetricPattern6(client, name) { - return _mp(client, name, _i6); -} +function createMetricPattern6(client, name) { return _mp(client, name, _i6); } /** @template T @typedef {{ name: string, by: { readonly decadeindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern7 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern7} */ -function createMetricPattern7(client, name) { - return _mp(client, name, _i7); -} +function createMetricPattern7(client, name) { return _mp(client, name, _i7); } /** @template T @typedef {{ name: string, by: { readonly difficultyepoch: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern8 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern8} */ -function createMetricPattern8(client, name) { - return _mp(client, name, _i8); -} +function createMetricPattern8(client, name) { return _mp(client, name, _i8); } /** @template T @typedef {{ name: string, by: { readonly emptyoutputindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern9 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern9} */ -function createMetricPattern9(client, name) { - return _mp(client, name, _i9); -} +function createMetricPattern9(client, name) { return _mp(client, name, _i9); } /** @template T @typedef {{ name: string, by: { readonly halvingepoch: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern10 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern10} */ -function createMetricPattern10(client, name) { - return _mp(client, name, _i10); -} +function createMetricPattern10(client, name) { return _mp(client, name, _i10); } /** @template T @typedef {{ name: string, by: { readonly height: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern11 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern11} */ -function createMetricPattern11(client, name) { - return _mp(client, name, _i11); -} +function createMetricPattern11(client, name) { return _mp(client, name, _i11); } /** @template T @typedef {{ name: string, by: { readonly txinindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern12 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern12} */ -function createMetricPattern12(client, name) { - return _mp(client, name, _i12); -} +function createMetricPattern12(client, name) { return _mp(client, name, _i12); } /** @template T @typedef {{ name: string, by: { readonly monthindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern13 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern13} */ -function createMetricPattern13(client, name) { - return _mp(client, name, _i13); -} +function createMetricPattern13(client, name) { return _mp(client, name, _i13); } /** @template T @typedef {{ name: string, by: { readonly opreturnindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern14 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern14} */ -function createMetricPattern14(client, name) { - return _mp(client, name, _i14); -} +function createMetricPattern14(client, name) { return _mp(client, name, _i14); } /** @template T @typedef {{ name: string, by: { readonly txoutindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern15 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern15} */ -function createMetricPattern15(client, name) { - return _mp(client, name, _i15); -} +function createMetricPattern15(client, name) { return _mp(client, name, _i15); } /** @template T @typedef {{ name: string, by: { readonly p2aaddressindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern16 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern16} */ -function createMetricPattern16(client, name) { - return _mp(client, name, _i16); -} +function createMetricPattern16(client, name) { return _mp(client, name, _i16); } /** @template T @typedef {{ name: string, by: { readonly p2msoutputindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern17 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern17} */ -function createMetricPattern17(client, name) { - return _mp(client, name, _i17); -} +function createMetricPattern17(client, name) { return _mp(client, name, _i17); } /** @template T @typedef {{ name: string, by: { readonly p2pk33addressindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern18 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern18} */ -function createMetricPattern18(client, name) { - return _mp(client, name, _i18); -} +function createMetricPattern18(client, name) { return _mp(client, name, _i18); } /** @template T @typedef {{ name: string, by: { readonly p2pk65addressindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern19 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern19} */ -function createMetricPattern19(client, name) { - return _mp(client, name, _i19); -} +function createMetricPattern19(client, name) { return _mp(client, name, _i19); } /** @template T @typedef {{ name: string, by: { readonly p2pkhaddressindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern20 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern20} */ -function createMetricPattern20(client, name) { - return _mp(client, name, _i20); -} +function createMetricPattern20(client, name) { return _mp(client, name, _i20); } /** @template T @typedef {{ name: string, by: { readonly p2shaddressindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern21 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern21} */ -function createMetricPattern21(client, name) { - return _mp(client, name, _i21); -} +function createMetricPattern21(client, name) { return _mp(client, name, _i21); } /** @template T @typedef {{ name: string, by: { readonly p2traddressindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern22 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern22} */ -function createMetricPattern22(client, name) { - return _mp(client, name, _i22); -} +function createMetricPattern22(client, name) { return _mp(client, name, _i22); } /** @template T @typedef {{ name: string, by: { readonly p2wpkhaddressindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern23 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern23} */ -function createMetricPattern23(client, name) { - return _mp(client, name, _i23); -} +function createMetricPattern23(client, name) { return _mp(client, name, _i23); } /** @template T @typedef {{ name: string, by: { readonly p2wshaddressindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern24 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern24} */ -function createMetricPattern24(client, name) { - return _mp(client, name, _i24); -} +function createMetricPattern24(client, name) { return _mp(client, name, _i24); } /** @template T @typedef {{ name: string, by: { readonly quarterindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern25 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern25} */ -function createMetricPattern25(client, name) { - return _mp(client, name, _i25); -} +function createMetricPattern25(client, name) { return _mp(client, name, _i25); } /** @template T @typedef {{ name: string, by: { readonly semesterindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern26 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern26} */ -function createMetricPattern26(client, name) { - return _mp(client, name, _i26); -} +function createMetricPattern26(client, name) { return _mp(client, name, _i26); } /** @template T @typedef {{ name: string, by: { readonly txindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern27 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern27} */ -function createMetricPattern27(client, name) { - return _mp(client, name, _i27); -} +function createMetricPattern27(client, name) { return _mp(client, name, _i27); } /** @template T @typedef {{ name: string, by: { readonly unknownoutputindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern28 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern28} */ -function createMetricPattern28(client, name) { - return _mp(client, name, _i28); -} +function createMetricPattern28(client, name) { return _mp(client, name, _i28); } /** @template T @typedef {{ name: string, by: { readonly weekindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern29 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern29} */ -function createMetricPattern29(client, name) { - return _mp(client, name, _i29); -} +function createMetricPattern29(client, name) { return _mp(client, name, _i29); } /** @template T @typedef {{ name: string, by: { readonly yearindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern30 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern30} */ -function createMetricPattern30(client, name) { - return _mp(client, name, _i30); -} +function createMetricPattern30(client, name) { return _mp(client, name, _i30); } /** @template T @typedef {{ name: string, by: { readonly loadedaddressindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern31 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern31} */ -function createMetricPattern31(client, name) { - return _mp(client, name, _i31); -} +function createMetricPattern31(client, name) { return _mp(client, name, _i31); } /** @template T @typedef {{ name: string, by: { readonly emptyaddressindex: MetricEndpointBuilder }, indexes: () => readonly Index[], get: (index: Index) => MetricEndpointBuilder|undefined }} MetricPattern32 */ /** @template T @param {BrkClientBase} client @param {string} name @returns {MetricPattern32} */ -function createMetricPattern32(client, name) { - return _mp(client, name, _i32); -} +function createMetricPattern32(client, name) { return _mp(client, name, _i32); } // Reusable structural pattern factories @@ -1412,98 +1261,38 @@ function createMetricPattern32(client, name) { */ function createRealizedPattern3(client, acc) { return { - adjustedSopr: createMetricPattern6(client, _m(acc, "adjusted_sopr")), - adjustedSopr30dEma: createMetricPattern6( - client, - _m(acc, "adjusted_sopr_30d_ema"), - ), - adjustedSopr7dEma: createMetricPattern6( - client, - _m(acc, "adjusted_sopr_7d_ema"), - ), - adjustedValueCreated: createMetricPattern1( - client, - _m(acc, "adjusted_value_created"), - ), - adjustedValueDestroyed: createMetricPattern1( - client, - _m(acc, "adjusted_value_destroyed"), - ), - mvrv: createMetricPattern4(client, _m(acc, "mvrv")), - negRealizedLoss: createBitcoinPattern2( - client, - _m(acc, "neg_realized_loss"), - ), - netRealizedPnl: createBlockCountPattern( - client, - _m(acc, "net_realized_pnl"), - ), - netRealizedPnlCumulative30dDelta: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta"), - ), - netRealizedPnlCumulative30dDeltaRelToMarketCap: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap"), - ), - netRealizedPnlCumulative30dDeltaRelToRealizedCap: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap"), - ), - netRealizedPnlRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "net_realized_pnl_rel_to_realized_cap"), - ), - realizedCap: createMetricPattern1(client, _m(acc, "realized_cap")), - realizedCap30dDelta: createMetricPattern4( - client, - _m(acc, "realized_cap_30d_delta"), - ), - realizedCapRelToOwnMarketCap: createMetricPattern1( - client, - _m(acc, "realized_cap_rel_to_own_market_cap"), - ), - realizedLoss: createBlockCountPattern(client, _m(acc, "realized_loss")), - realizedLossRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "realized_loss_rel_to_realized_cap"), - ), - realizedPrice: createMetricPattern1(client, _m(acc, "realized_price")), - realizedPriceExtra: createActivePriceRatioPattern( - client, - _m(acc, "realized_price_ratio"), - ), - realizedProfit: createBlockCountPattern(client, _m(acc, "realized_profit")), - realizedProfitRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "realized_profit_rel_to_realized_cap"), - ), - realizedProfitToLossRatio: createMetricPattern6( - client, - _m(acc, "realized_profit_to_loss_ratio"), - ), - realizedValue: createMetricPattern1(client, _m(acc, "realized_value")), - sellSideRiskRatio: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio"), - ), - sellSideRiskRatio30dEma: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio_30d_ema"), - ), - sellSideRiskRatio7dEma: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio_7d_ema"), - ), - sopr: createMetricPattern6(client, _m(acc, "sopr")), - sopr30dEma: createMetricPattern6(client, _m(acc, "sopr_30d_ema")), - sopr7dEma: createMetricPattern6(client, _m(acc, "sopr_7d_ema")), - totalRealizedPnl: createMetricPattern1( - client, - _m(acc, "total_realized_pnl"), - ), - valueCreated: createMetricPattern1(client, _m(acc, "value_created")), - valueDestroyed: createMetricPattern1(client, _m(acc, "value_destroyed")), + adjustedSopr: createMetricPattern6(client, _m(acc, 'adjusted_sopr')), + adjustedSopr30dEma: createMetricPattern6(client, _m(acc, 'adjusted_sopr_30d_ema')), + adjustedSopr7dEma: createMetricPattern6(client, _m(acc, 'adjusted_sopr_7d_ema')), + adjustedValueCreated: createMetricPattern1(client, _m(acc, 'adjusted_value_created')), + adjustedValueDestroyed: createMetricPattern1(client, _m(acc, 'adjusted_value_destroyed')), + mvrv: createMetricPattern4(client, _m(acc, 'mvrv')), + negRealizedLoss: createBitcoinPattern2(client, _m(acc, 'neg_realized_loss')), + netRealizedPnl: createBlockCountPattern(client, _m(acc, 'net_realized_pnl')), + netRealizedPnlCumulative30dDelta: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')), + netRealizedPnlCumulative30dDeltaRelToMarketCap: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')), + netRealizedPnlCumulative30dDeltaRelToRealizedCap: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')), + netRealizedPnlRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')), + realizedCap: createMetricPattern1(client, _m(acc, 'realized_cap')), + realizedCap30dDelta: createMetricPattern4(client, _m(acc, 'realized_cap_30d_delta')), + realizedCapRelToOwnMarketCap: createMetricPattern1(client, _m(acc, 'realized_cap_rel_to_own_market_cap')), + realizedLoss: createBlockCountPattern(client, _m(acc, 'realized_loss')), + realizedLossRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')), + realizedPrice: createMetricPattern1(client, _m(acc, 'realized_price')), + realizedPriceExtra: createActivePriceRatioPattern(client, _m(acc, 'realized_price_ratio')), + realizedProfit: createBlockCountPattern(client, _m(acc, 'realized_profit')), + realizedProfitRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')), + realizedProfitToLossRatio: createMetricPattern6(client, _m(acc, 'realized_profit_to_loss_ratio')), + realizedValue: createMetricPattern1(client, _m(acc, 'realized_value')), + sellSideRiskRatio: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio')), + sellSideRiskRatio30dEma: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')), + sellSideRiskRatio7dEma: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')), + sopr: createMetricPattern6(client, _m(acc, 'sopr')), + sopr30dEma: createMetricPattern6(client, _m(acc, 'sopr_30d_ema')), + sopr7dEma: createMetricPattern6(client, _m(acc, 'sopr_7d_ema')), + totalRealizedPnl: createMetricPattern1(client, _m(acc, 'total_realized_pnl')), + valueCreated: createMetricPattern1(client, _m(acc, 'value_created')), + valueDestroyed: createMetricPattern1(client, _m(acc, 'value_destroyed')), }; } @@ -1549,90 +1338,36 @@ function createRealizedPattern3(client, acc) { */ function createRealizedPattern4(client, acc) { return { - adjustedSopr: createMetricPattern6(client, _m(acc, "adjusted_sopr")), - adjustedSopr30dEma: createMetricPattern6( - client, - _m(acc, "adjusted_sopr_30d_ema"), - ), - adjustedSopr7dEma: createMetricPattern6( - client, - _m(acc, "adjusted_sopr_7d_ema"), - ), - adjustedValueCreated: createMetricPattern1( - client, - _m(acc, "adjusted_value_created"), - ), - adjustedValueDestroyed: createMetricPattern1( - client, - _m(acc, "adjusted_value_destroyed"), - ), - mvrv: createMetricPattern4(client, _m(acc, "mvrv")), - negRealizedLoss: createBitcoinPattern2( - client, - _m(acc, "neg_realized_loss"), - ), - netRealizedPnl: createBlockCountPattern( - client, - _m(acc, "net_realized_pnl"), - ), - netRealizedPnlCumulative30dDelta: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta"), - ), - netRealizedPnlCumulative30dDeltaRelToMarketCap: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap"), - ), - netRealizedPnlCumulative30dDeltaRelToRealizedCap: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap"), - ), - netRealizedPnlRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "net_realized_pnl_rel_to_realized_cap"), - ), - realizedCap: createMetricPattern1(client, _m(acc, "realized_cap")), - realizedCap30dDelta: createMetricPattern4( - client, - _m(acc, "realized_cap_30d_delta"), - ), - realizedLoss: createBlockCountPattern(client, _m(acc, "realized_loss")), - realizedLossRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "realized_loss_rel_to_realized_cap"), - ), - realizedPrice: createMetricPattern1(client, _m(acc, "realized_price")), - realizedPriceExtra: createRealizedPriceExtraPattern( - client, - _m(acc, "realized_price_ratio"), - ), - realizedProfit: createBlockCountPattern(client, _m(acc, "realized_profit")), - realizedProfitRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "realized_profit_rel_to_realized_cap"), - ), - realizedValue: createMetricPattern1(client, _m(acc, "realized_value")), - sellSideRiskRatio: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio"), - ), - sellSideRiskRatio30dEma: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio_30d_ema"), - ), - sellSideRiskRatio7dEma: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio_7d_ema"), - ), - sopr: createMetricPattern6(client, _m(acc, "sopr")), - sopr30dEma: createMetricPattern6(client, _m(acc, "sopr_30d_ema")), - sopr7dEma: createMetricPattern6(client, _m(acc, "sopr_7d_ema")), - totalRealizedPnl: createMetricPattern1( - client, - _m(acc, "total_realized_pnl"), - ), - valueCreated: createMetricPattern1(client, _m(acc, "value_created")), - valueDestroyed: createMetricPattern1(client, _m(acc, "value_destroyed")), + adjustedSopr: createMetricPattern6(client, _m(acc, 'adjusted_sopr')), + adjustedSopr30dEma: createMetricPattern6(client, _m(acc, 'adjusted_sopr_30d_ema')), + adjustedSopr7dEma: createMetricPattern6(client, _m(acc, 'adjusted_sopr_7d_ema')), + adjustedValueCreated: createMetricPattern1(client, _m(acc, 'adjusted_value_created')), + adjustedValueDestroyed: createMetricPattern1(client, _m(acc, 'adjusted_value_destroyed')), + mvrv: createMetricPattern4(client, _m(acc, 'mvrv')), + negRealizedLoss: createBitcoinPattern2(client, _m(acc, 'neg_realized_loss')), + netRealizedPnl: createBlockCountPattern(client, _m(acc, 'net_realized_pnl')), + netRealizedPnlCumulative30dDelta: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')), + netRealizedPnlCumulative30dDeltaRelToMarketCap: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')), + netRealizedPnlCumulative30dDeltaRelToRealizedCap: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')), + netRealizedPnlRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')), + realizedCap: createMetricPattern1(client, _m(acc, 'realized_cap')), + realizedCap30dDelta: createMetricPattern4(client, _m(acc, 'realized_cap_30d_delta')), + realizedLoss: createBlockCountPattern(client, _m(acc, 'realized_loss')), + realizedLossRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')), + realizedPrice: createMetricPattern1(client, _m(acc, 'realized_price')), + realizedPriceExtra: createRealizedPriceExtraPattern(client, _m(acc, 'realized_price_ratio')), + realizedProfit: createBlockCountPattern(client, _m(acc, 'realized_profit')), + realizedProfitRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')), + realizedValue: createMetricPattern1(client, _m(acc, 'realized_value')), + sellSideRiskRatio: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio')), + sellSideRiskRatio30dEma: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')), + sellSideRiskRatio7dEma: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')), + sopr: createMetricPattern6(client, _m(acc, 'sopr')), + sopr30dEma: createMetricPattern6(client, _m(acc, 'sopr_30d_ema')), + sopr7dEma: createMetricPattern6(client, _m(acc, 'sopr_7d_ema')), + totalRealizedPnl: createMetricPattern1(client, _m(acc, 'total_realized_pnl')), + valueCreated: createMetricPattern1(client, _m(acc, 'value_created')), + valueDestroyed: createMetricPattern1(client, _m(acc, 'value_destroyed')), }; } @@ -1676,34 +1411,34 @@ function createRealizedPattern4(client, acc) { */ function createRatio1ySdPattern(client, acc) { return { - _0sdUsd: createMetricPattern4(client, _m(acc, "0sd_usd")), - m05sd: createMetricPattern4(client, _m(acc, "m0_5sd")), - m05sdUsd: createMetricPattern4(client, _m(acc, "m0_5sd_usd")), - m15sd: createMetricPattern4(client, _m(acc, "m1_5sd")), - m15sdUsd: createMetricPattern4(client, _m(acc, "m1_5sd_usd")), - m1sd: createMetricPattern4(client, _m(acc, "m1sd")), - m1sdUsd: createMetricPattern4(client, _m(acc, "m1sd_usd")), - m25sd: createMetricPattern4(client, _m(acc, "m2_5sd")), - m25sdUsd: createMetricPattern4(client, _m(acc, "m2_5sd_usd")), - m2sd: createMetricPattern4(client, _m(acc, "m2sd")), - m2sdUsd: createMetricPattern4(client, _m(acc, "m2sd_usd")), - m3sd: createMetricPattern4(client, _m(acc, "m3sd")), - m3sdUsd: createMetricPattern4(client, _m(acc, "m3sd_usd")), - p05sd: createMetricPattern4(client, _m(acc, "p0_5sd")), - p05sdUsd: createMetricPattern4(client, _m(acc, "p0_5sd_usd")), - p15sd: createMetricPattern4(client, _m(acc, "p1_5sd")), - p15sdUsd: createMetricPattern4(client, _m(acc, "p1_5sd_usd")), - p1sd: createMetricPattern4(client, _m(acc, "p1sd")), - p1sdUsd: createMetricPattern4(client, _m(acc, "p1sd_usd")), - p25sd: createMetricPattern4(client, _m(acc, "p2_5sd")), - p25sdUsd: createMetricPattern4(client, _m(acc, "p2_5sd_usd")), - p2sd: createMetricPattern4(client, _m(acc, "p2sd")), - p2sdUsd: createMetricPattern4(client, _m(acc, "p2sd_usd")), - p3sd: createMetricPattern4(client, _m(acc, "p3sd")), - p3sdUsd: createMetricPattern4(client, _m(acc, "p3sd_usd")), - sd: createMetricPattern4(client, _m(acc, "sd")), - sma: createMetricPattern4(client, _m(acc, "sma")), - zscore: createMetricPattern4(client, _m(acc, "zscore")), + _0sdUsd: createMetricPattern4(client, _m(acc, '0sd_usd')), + m05sd: createMetricPattern4(client, _m(acc, 'm0_5sd')), + m05sdUsd: createMetricPattern4(client, _m(acc, 'm0_5sd_usd')), + m15sd: createMetricPattern4(client, _m(acc, 'm1_5sd')), + m15sdUsd: createMetricPattern4(client, _m(acc, 'm1_5sd_usd')), + m1sd: createMetricPattern4(client, _m(acc, 'm1sd')), + m1sdUsd: createMetricPattern4(client, _m(acc, 'm1sd_usd')), + m25sd: createMetricPattern4(client, _m(acc, 'm2_5sd')), + m25sdUsd: createMetricPattern4(client, _m(acc, 'm2_5sd_usd')), + m2sd: createMetricPattern4(client, _m(acc, 'm2sd')), + m2sdUsd: createMetricPattern4(client, _m(acc, 'm2sd_usd')), + m3sd: createMetricPattern4(client, _m(acc, 'm3sd')), + m3sdUsd: createMetricPattern4(client, _m(acc, 'm3sd_usd')), + p05sd: createMetricPattern4(client, _m(acc, 'p0_5sd')), + p05sdUsd: createMetricPattern4(client, _m(acc, 'p0_5sd_usd')), + p15sd: createMetricPattern4(client, _m(acc, 'p1_5sd')), + p15sdUsd: createMetricPattern4(client, _m(acc, 'p1_5sd_usd')), + p1sd: createMetricPattern4(client, _m(acc, 'p1sd')), + p1sdUsd: createMetricPattern4(client, _m(acc, 'p1sd_usd')), + p25sd: createMetricPattern4(client, _m(acc, 'p2_5sd')), + p25sdUsd: createMetricPattern4(client, _m(acc, 'p2_5sd_usd')), + p2sd: createMetricPattern4(client, _m(acc, 'p2sd')), + p2sdUsd: createMetricPattern4(client, _m(acc, 'p2sd_usd')), + p3sd: createMetricPattern4(client, _m(acc, 'p3sd')), + p3sdUsd: createMetricPattern4(client, _m(acc, 'p3sd_usd')), + sd: createMetricPattern4(client, _m(acc, 'sd')), + sma: createMetricPattern4(client, _m(acc, 'sma')), + zscore: createMetricPattern4(client, _m(acc, 'zscore')), }; } @@ -1746,81 +1481,33 @@ function createRatio1ySdPattern(client, acc) { */ function createRealizedPattern2(client, acc) { return { - mvrv: createMetricPattern4(client, _m(acc, "mvrv")), - negRealizedLoss: createBitcoinPattern2( - client, - _m(acc, "neg_realized_loss"), - ), - netRealizedPnl: createBlockCountPattern( - client, - _m(acc, "net_realized_pnl"), - ), - netRealizedPnlCumulative30dDelta: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta"), - ), - netRealizedPnlCumulative30dDeltaRelToMarketCap: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap"), - ), - netRealizedPnlCumulative30dDeltaRelToRealizedCap: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap"), - ), - netRealizedPnlRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "net_realized_pnl_rel_to_realized_cap"), - ), - realizedCap: createMetricPattern1(client, _m(acc, "realized_cap")), - realizedCap30dDelta: createMetricPattern4( - client, - _m(acc, "realized_cap_30d_delta"), - ), - realizedCapRelToOwnMarketCap: createMetricPattern1( - client, - _m(acc, "realized_cap_rel_to_own_market_cap"), - ), - realizedLoss: createBlockCountPattern(client, _m(acc, "realized_loss")), - realizedLossRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "realized_loss_rel_to_realized_cap"), - ), - realizedPrice: createMetricPattern1(client, _m(acc, "realized_price")), - realizedPriceExtra: createActivePriceRatioPattern( - client, - _m(acc, "realized_price_ratio"), - ), - realizedProfit: createBlockCountPattern(client, _m(acc, "realized_profit")), - realizedProfitRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "realized_profit_rel_to_realized_cap"), - ), - realizedProfitToLossRatio: createMetricPattern6( - client, - _m(acc, "realized_profit_to_loss_ratio"), - ), - realizedValue: createMetricPattern1(client, _m(acc, "realized_value")), - sellSideRiskRatio: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio"), - ), - sellSideRiskRatio30dEma: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio_30d_ema"), - ), - sellSideRiskRatio7dEma: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio_7d_ema"), - ), - sopr: createMetricPattern6(client, _m(acc, "sopr")), - sopr30dEma: createMetricPattern6(client, _m(acc, "sopr_30d_ema")), - sopr7dEma: createMetricPattern6(client, _m(acc, "sopr_7d_ema")), - totalRealizedPnl: createMetricPattern1( - client, - _m(acc, "total_realized_pnl"), - ), - valueCreated: createMetricPattern1(client, _m(acc, "value_created")), - valueDestroyed: createMetricPattern1(client, _m(acc, "value_destroyed")), + mvrv: createMetricPattern4(client, _m(acc, 'mvrv')), + negRealizedLoss: createBitcoinPattern2(client, _m(acc, 'neg_realized_loss')), + netRealizedPnl: createBlockCountPattern(client, _m(acc, 'net_realized_pnl')), + netRealizedPnlCumulative30dDelta: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')), + netRealizedPnlCumulative30dDeltaRelToMarketCap: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')), + netRealizedPnlCumulative30dDeltaRelToRealizedCap: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')), + netRealizedPnlRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')), + realizedCap: createMetricPattern1(client, _m(acc, 'realized_cap')), + realizedCap30dDelta: createMetricPattern4(client, _m(acc, 'realized_cap_30d_delta')), + realizedCapRelToOwnMarketCap: createMetricPattern1(client, _m(acc, 'realized_cap_rel_to_own_market_cap')), + realizedLoss: createBlockCountPattern(client, _m(acc, 'realized_loss')), + realizedLossRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')), + realizedPrice: createMetricPattern1(client, _m(acc, 'realized_price')), + realizedPriceExtra: createActivePriceRatioPattern(client, _m(acc, 'realized_price_ratio')), + realizedProfit: createBlockCountPattern(client, _m(acc, 'realized_profit')), + realizedProfitRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')), + realizedProfitToLossRatio: createMetricPattern6(client, _m(acc, 'realized_profit_to_loss_ratio')), + realizedValue: createMetricPattern1(client, _m(acc, 'realized_value')), + sellSideRiskRatio: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio')), + sellSideRiskRatio30dEma: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')), + sellSideRiskRatio7dEma: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')), + sopr: createMetricPattern6(client, _m(acc, 'sopr')), + sopr30dEma: createMetricPattern6(client, _m(acc, 'sopr_30d_ema')), + sopr7dEma: createMetricPattern6(client, _m(acc, 'sopr_7d_ema')), + totalRealizedPnl: createMetricPattern1(client, _m(acc, 'total_realized_pnl')), + valueCreated: createMetricPattern1(client, _m(acc, 'value_created')), + valueDestroyed: createMetricPattern1(client, _m(acc, 'value_destroyed')), }; } @@ -1861,73 +1548,31 @@ function createRealizedPattern2(client, acc) { */ function createRealizedPattern(client, acc) { return { - mvrv: createMetricPattern4(client, _m(acc, "mvrv")), - negRealizedLoss: createBitcoinPattern2( - client, - _m(acc, "neg_realized_loss"), - ), - netRealizedPnl: createBlockCountPattern( - client, - _m(acc, "net_realized_pnl"), - ), - netRealizedPnlCumulative30dDelta: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta"), - ), - netRealizedPnlCumulative30dDeltaRelToMarketCap: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap"), - ), - netRealizedPnlCumulative30dDeltaRelToRealizedCap: createMetricPattern4( - client, - _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap"), - ), - netRealizedPnlRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "net_realized_pnl_rel_to_realized_cap"), - ), - realizedCap: createMetricPattern1(client, _m(acc, "realized_cap")), - realizedCap30dDelta: createMetricPattern4( - client, - _m(acc, "realized_cap_30d_delta"), - ), - realizedLoss: createBlockCountPattern(client, _m(acc, "realized_loss")), - realizedLossRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "realized_loss_rel_to_realized_cap"), - ), - realizedPrice: createMetricPattern1(client, _m(acc, "realized_price")), - realizedPriceExtra: createRealizedPriceExtraPattern( - client, - _m(acc, "realized_price_ratio"), - ), - realizedProfit: createBlockCountPattern(client, _m(acc, "realized_profit")), - realizedProfitRelToRealizedCap: createBlockCountPattern( - client, - _m(acc, "realized_profit_rel_to_realized_cap"), - ), - realizedValue: createMetricPattern1(client, _m(acc, "realized_value")), - sellSideRiskRatio: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio"), - ), - sellSideRiskRatio30dEma: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio_30d_ema"), - ), - sellSideRiskRatio7dEma: createMetricPattern6( - client, - _m(acc, "sell_side_risk_ratio_7d_ema"), - ), - sopr: createMetricPattern6(client, _m(acc, "sopr")), - sopr30dEma: createMetricPattern6(client, _m(acc, "sopr_30d_ema")), - sopr7dEma: createMetricPattern6(client, _m(acc, "sopr_7d_ema")), - totalRealizedPnl: createMetricPattern1( - client, - _m(acc, "total_realized_pnl"), - ), - valueCreated: createMetricPattern1(client, _m(acc, "value_created")), - valueDestroyed: createMetricPattern1(client, _m(acc, "value_destroyed")), + mvrv: createMetricPattern4(client, _m(acc, 'mvrv')), + negRealizedLoss: createBitcoinPattern2(client, _m(acc, 'neg_realized_loss')), + netRealizedPnl: createBlockCountPattern(client, _m(acc, 'net_realized_pnl')), + netRealizedPnlCumulative30dDelta: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')), + netRealizedPnlCumulative30dDeltaRelToMarketCap: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')), + netRealizedPnlCumulative30dDeltaRelToRealizedCap: createMetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')), + netRealizedPnlRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')), + realizedCap: createMetricPattern1(client, _m(acc, 'realized_cap')), + realizedCap30dDelta: createMetricPattern4(client, _m(acc, 'realized_cap_30d_delta')), + realizedLoss: createBlockCountPattern(client, _m(acc, 'realized_loss')), + realizedLossRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')), + realizedPrice: createMetricPattern1(client, _m(acc, 'realized_price')), + realizedPriceExtra: createRealizedPriceExtraPattern(client, _m(acc, 'realized_price_ratio')), + realizedProfit: createBlockCountPattern(client, _m(acc, 'realized_profit')), + realizedProfitRelToRealizedCap: createBlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')), + realizedValue: createMetricPattern1(client, _m(acc, 'realized_value')), + sellSideRiskRatio: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio')), + sellSideRiskRatio30dEma: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')), + sellSideRiskRatio7dEma: createMetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')), + sopr: createMetricPattern6(client, _m(acc, 'sopr')), + sopr30dEma: createMetricPattern6(client, _m(acc, 'sopr_30d_ema')), + sopr7dEma: createMetricPattern6(client, _m(acc, 'sopr_7d_ema')), + totalRealizedPnl: createMetricPattern1(client, _m(acc, 'total_realized_pnl')), + valueCreated: createMetricPattern1(client, _m(acc, 'value_created')), + valueDestroyed: createMetricPattern1(client, _m(acc, 'value_destroyed')), }; } @@ -1964,78 +1609,25 @@ function createRealizedPattern(client, acc) { function createPrice111dSmaPattern(client, acc) { return { price: createMetricPattern4(client, acc), - ratio: createMetricPattern4(client, _m(acc, "ratio")), - ratio1mSma: createMetricPattern4(client, _m(acc, "ratio_1m_sma")), - ratio1wSma: createMetricPattern4(client, _m(acc, "ratio_1w_sma")), - ratio1ySd: createRatio1ySdPattern(client, _m(acc, "ratio_1y")), - ratio2ySd: createRatio1ySdPattern(client, _m(acc, "ratio_2y")), - ratio4ySd: createRatio1ySdPattern(client, _m(acc, "ratio_4y")), - ratioPct1: createMetricPattern4(client, _m(acc, "ratio_pct1")), - ratioPct1Usd: createMetricPattern4(client, _m(acc, "ratio_pct1_usd")), - ratioPct2: createMetricPattern4(client, _m(acc, "ratio_pct2")), - ratioPct2Usd: createMetricPattern4(client, _m(acc, "ratio_pct2_usd")), - ratioPct5: createMetricPattern4(client, _m(acc, "ratio_pct5")), - ratioPct5Usd: createMetricPattern4(client, _m(acc, "ratio_pct5_usd")), - ratioPct95: createMetricPattern4(client, _m(acc, "ratio_pct95")), - ratioPct95Usd: createMetricPattern4(client, _m(acc, "ratio_pct95_usd")), - ratioPct98: createMetricPattern4(client, _m(acc, "ratio_pct98")), - ratioPct98Usd: createMetricPattern4(client, _m(acc, "ratio_pct98_usd")), - ratioPct99: createMetricPattern4(client, _m(acc, "ratio_pct99")), - ratioPct99Usd: createMetricPattern4(client, _m(acc, "ratio_pct99_usd")), - ratioSd: createRatio1ySdPattern(client, _m(acc, "ratio")), - }; -} - -/** - * @typedef {Object} PercentilesPattern - * @property {MetricPattern4} pct05 - * @property {MetricPattern4} pct10 - * @property {MetricPattern4} pct15 - * @property {MetricPattern4} pct20 - * @property {MetricPattern4} pct25 - * @property {MetricPattern4} pct30 - * @property {MetricPattern4} pct35 - * @property {MetricPattern4} pct40 - * @property {MetricPattern4} pct45 - * @property {MetricPattern4} pct50 - * @property {MetricPattern4} pct55 - * @property {MetricPattern4} pct60 - * @property {MetricPattern4} pct65 - * @property {MetricPattern4} pct70 - * @property {MetricPattern4} pct75 - * @property {MetricPattern4} pct80 - * @property {MetricPattern4} pct85 - * @property {MetricPattern4} pct90 - * @property {MetricPattern4} pct95 - */ - -/** - * Create a PercentilesPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {PercentilesPattern} - */ -function createPercentilesPattern(client, acc) { - return { - pct05: createMetricPattern4(client, _m(acc, "pct05")), - pct10: createMetricPattern4(client, _m(acc, "pct10")), - pct15: createMetricPattern4(client, _m(acc, "pct15")), - pct20: createMetricPattern4(client, _m(acc, "pct20")), - pct25: createMetricPattern4(client, _m(acc, "pct25")), - pct30: createMetricPattern4(client, _m(acc, "pct30")), - pct35: createMetricPattern4(client, _m(acc, "pct35")), - pct40: createMetricPattern4(client, _m(acc, "pct40")), - pct45: createMetricPattern4(client, _m(acc, "pct45")), - pct50: createMetricPattern4(client, _m(acc, "pct50")), - pct55: createMetricPattern4(client, _m(acc, "pct55")), - pct60: createMetricPattern4(client, _m(acc, "pct60")), - pct65: createMetricPattern4(client, _m(acc, "pct65")), - pct70: createMetricPattern4(client, _m(acc, "pct70")), - pct75: createMetricPattern4(client, _m(acc, "pct75")), - pct80: createMetricPattern4(client, _m(acc, "pct80")), - pct85: createMetricPattern4(client, _m(acc, "pct85")), - pct90: createMetricPattern4(client, _m(acc, "pct90")), - pct95: createMetricPattern4(client, _m(acc, "pct95")), + ratio: createMetricPattern4(client, _m(acc, 'ratio')), + ratio1mSma: createMetricPattern4(client, _m(acc, 'ratio_1m_sma')), + ratio1wSma: createMetricPattern4(client, _m(acc, 'ratio_1w_sma')), + ratio1ySd: createRatio1ySdPattern(client, _m(acc, 'ratio_1y')), + ratio2ySd: createRatio1ySdPattern(client, _m(acc, 'ratio_2y')), + ratio4ySd: createRatio1ySdPattern(client, _m(acc, 'ratio_4y')), + ratioPct1: createMetricPattern4(client, _m(acc, 'ratio_pct1')), + ratioPct1Usd: createMetricPattern4(client, _m(acc, 'ratio_pct1_usd')), + ratioPct2: createMetricPattern4(client, _m(acc, 'ratio_pct2')), + ratioPct2Usd: createMetricPattern4(client, _m(acc, 'ratio_pct2_usd')), + ratioPct5: createMetricPattern4(client, _m(acc, 'ratio_pct5')), + ratioPct5Usd: createMetricPattern4(client, _m(acc, 'ratio_pct5_usd')), + ratioPct95: createMetricPattern4(client, _m(acc, 'ratio_pct95')), + ratioPct95Usd: createMetricPattern4(client, _m(acc, 'ratio_pct95_usd')), + ratioPct98: createMetricPattern4(client, _m(acc, 'ratio_pct98')), + ratioPct98Usd: createMetricPattern4(client, _m(acc, 'ratio_pct98_usd')), + ratioPct99: createMetricPattern4(client, _m(acc, 'ratio_pct99')), + ratioPct99Usd: createMetricPattern4(client, _m(acc, 'ratio_pct99_usd')), + ratioSd: createRatio1ySdPattern(client, _m(acc, 'ratio')), }; } @@ -2071,27 +1663,80 @@ function createPercentilesPattern(client, acc) { 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")), + 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 + * @property {MetricPattern4} pct10 + * @property {MetricPattern4} pct15 + * @property {MetricPattern4} pct20 + * @property {MetricPattern4} pct25 + * @property {MetricPattern4} pct30 + * @property {MetricPattern4} pct35 + * @property {MetricPattern4} pct40 + * @property {MetricPattern4} pct45 + * @property {MetricPattern4} pct50 + * @property {MetricPattern4} pct55 + * @property {MetricPattern4} pct60 + * @property {MetricPattern4} pct65 + * @property {MetricPattern4} pct70 + * @property {MetricPattern4} pct75 + * @property {MetricPattern4} pct80 + * @property {MetricPattern4} pct85 + * @property {MetricPattern4} pct90 + * @property {MetricPattern4} pct95 + */ + +/** + * Create a PercentilesPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {PercentilesPattern} + */ +function createPercentilesPattern(client, acc) { + return { + pct05: createMetricPattern4(client, _m(acc, 'pct05')), + pct10: createMetricPattern4(client, _m(acc, 'pct10')), + pct15: createMetricPattern4(client, _m(acc, 'pct15')), + pct20: createMetricPattern4(client, _m(acc, 'pct20')), + pct25: createMetricPattern4(client, _m(acc, 'pct25')), + pct30: createMetricPattern4(client, _m(acc, 'pct30')), + pct35: createMetricPattern4(client, _m(acc, 'pct35')), + pct40: createMetricPattern4(client, _m(acc, 'pct40')), + pct45: createMetricPattern4(client, _m(acc, 'pct45')), + pct50: createMetricPattern4(client, _m(acc, 'pct50')), + pct55: createMetricPattern4(client, _m(acc, 'pct55')), + pct60: createMetricPattern4(client, _m(acc, 'pct60')), + pct65: createMetricPattern4(client, _m(acc, 'pct65')), + pct70: createMetricPattern4(client, _m(acc, 'pct70')), + pct75: createMetricPattern4(client, _m(acc, 'pct75')), + pct80: createMetricPattern4(client, _m(acc, 'pct80')), + pct85: createMetricPattern4(client, _m(acc, 'pct85')), + pct90: createMetricPattern4(client, _m(acc, 'pct90')), + pct95: createMetricPattern4(client, _m(acc, 'pct95')), + }; +} + /** * @typedef {Object} RelativePattern5 * @property {MetricPattern1} negUnrealizedLossRelToMarketCap @@ -2122,75 +1767,24 @@ function createActivePriceRatioPattern(client, acc) { */ function createRelativePattern5(client, acc) { return { - negUnrealizedLossRelToMarketCap: createMetricPattern1( - client, - _m(acc, "neg_unrealized_loss_rel_to_market_cap"), - ), - negUnrealizedLossRelToOwnMarketCap: createMetricPattern1( - client, - _m(acc, "neg_unrealized_loss_rel_to_own_market_cap"), - ), - negUnrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1( - client, - _m(acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - netUnrealizedPnlRelToMarketCap: createMetricPattern1( - client, - _m(acc, "net_unrealized_pnl_rel_to_market_cap"), - ), - netUnrealizedPnlRelToOwnMarketCap: createMetricPattern1( - client, - _m(acc, "net_unrealized_pnl_rel_to_own_market_cap"), - ), - netUnrealizedPnlRelToOwnTotalUnrealizedPnl: createMetricPattern1( - client, - _m(acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl"), - ), - nupl: createMetricPattern1(client, _m(acc, "nupl")), - supplyInLossRelToCirculatingSupply: createMetricPattern1( - client, - _m(acc, "supply_in_loss_rel_to_circulating_supply"), - ), - supplyInLossRelToOwnSupply: createMetricPattern1( - client, - _m(acc, "supply_in_loss_rel_to_own_supply"), - ), - supplyInProfitRelToCirculatingSupply: createMetricPattern1( - client, - _m(acc, "supply_in_profit_rel_to_circulating_supply"), - ), - supplyInProfitRelToOwnSupply: createMetricPattern1( - client, - _m(acc, "supply_in_profit_rel_to_own_supply"), - ), - supplyRelToCirculatingSupply: createMetricPattern4( - client, - _m(acc, "supply_rel_to_circulating_supply"), - ), - unrealizedLossRelToMarketCap: createMetricPattern1( - client, - _m(acc, "unrealized_loss_rel_to_market_cap"), - ), - unrealizedLossRelToOwnMarketCap: createMetricPattern1( - client, - _m(acc, "unrealized_loss_rel_to_own_market_cap"), - ), - unrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1( - client, - _m(acc, "unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - unrealizedProfitRelToMarketCap: createMetricPattern1( - client, - _m(acc, "unrealized_profit_rel_to_market_cap"), - ), - unrealizedProfitRelToOwnMarketCap: createMetricPattern1( - client, - _m(acc, "unrealized_profit_rel_to_own_market_cap"), - ), - unrealizedProfitRelToOwnTotalUnrealizedPnl: createMetricPattern1( - client, - _m(acc, "unrealized_profit_rel_to_own_total_unrealized_pnl"), - ), + negUnrealizedLossRelToMarketCap: createMetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_market_cap')), + negUnrealizedLossRelToOwnMarketCap: createMetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_market_cap')), + negUnrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_total_unrealized_pnl')), + netUnrealizedPnlRelToMarketCap: createMetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap')), + netUnrealizedPnlRelToOwnMarketCap: createMetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_market_cap')), + netUnrealizedPnlRelToOwnTotalUnrealizedPnl: createMetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_total_unrealized_pnl')), + nupl: createMetricPattern1(client, _m(acc, 'nupl')), + supplyInLossRelToCirculatingSupply: createMetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_circulating_supply')), + supplyInLossRelToOwnSupply: createMetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_own_supply')), + supplyInProfitRelToCirculatingSupply: createMetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_circulating_supply')), + supplyInProfitRelToOwnSupply: createMetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_own_supply')), + supplyRelToCirculatingSupply: createMetricPattern4(client, _m(acc, 'supply_rel_to_circulating_supply')), + unrealizedLossRelToMarketCap: createMetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_market_cap')), + unrealizedLossRelToOwnMarketCap: createMetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_market_cap')), + unrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_total_unrealized_pnl')), + unrealizedProfitRelToMarketCap: createMetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_market_cap')), + unrealizedProfitRelToOwnMarketCap: createMetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_market_cap')), + unrealizedProfitRelToOwnTotalUnrealizedPnl: createMetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_total_unrealized_pnl')), }; } @@ -2220,20 +1814,20 @@ function createRelativePattern5(client, acc) { */ function createAaopoolPattern(client, acc) { return { - _1mBlocksMined: createMetricPattern1(client, _m(acc, "1m_blocks_mined")), - _1mDominance: createMetricPattern1(client, _m(acc, "1m_dominance")), - _1wBlocksMined: createMetricPattern1(client, _m(acc, "1w_blocks_mined")), - _1wDominance: createMetricPattern1(client, _m(acc, "1w_dominance")), - _1yBlocksMined: createMetricPattern1(client, _m(acc, "1y_blocks_mined")), - _1yDominance: createMetricPattern1(client, _m(acc, "1y_dominance")), - _24hBlocksMined: createMetricPattern1(client, _m(acc, "24h_blocks_mined")), - _24hDominance: createMetricPattern1(client, _m(acc, "24h_dominance")), - blocksMined: createBlockCountPattern(client, _m(acc, "blocks_mined")), - coinbase: createCoinbasePattern2(client, _m(acc, "coinbase")), - daysSinceBlock: createMetricPattern4(client, _m(acc, "days_since_block")), - dominance: createMetricPattern1(client, _m(acc, "dominance")), - fee: createUnclaimedRewardsPattern(client, _m(acc, "fee")), - subsidy: createUnclaimedRewardsPattern(client, _m(acc, "subsidy")), + _1mBlocksMined: createMetricPattern1(client, _m(acc, '1m_blocks_mined')), + _1mDominance: createMetricPattern1(client, _m(acc, '1m_dominance')), + _1wBlocksMined: createMetricPattern1(client, _m(acc, '1w_blocks_mined')), + _1wDominance: createMetricPattern1(client, _m(acc, '1w_dominance')), + _1yBlocksMined: createMetricPattern1(client, _m(acc, '1y_blocks_mined')), + _1yDominance: createMetricPattern1(client, _m(acc, '1y_dominance')), + _24hBlocksMined: createMetricPattern1(client, _m(acc, '24h_blocks_mined')), + _24hDominance: createMetricPattern1(client, _m(acc, '24h_dominance')), + blocksMined: createBlockCountPattern(client, _m(acc, 'blocks_mined')), + coinbase: createCoinbasePattern2(client, _m(acc, 'coinbase')), + daysSinceBlock: createMetricPattern4(client, _m(acc, 'days_since_block')), + dominance: createMetricPattern1(client, _m(acc, 'dominance')), + fee: createUnclaimedRewardsPattern(client, _m(acc, 'fee')), + subsidy: createUnclaimedRewardsPattern(client, _m(acc, 'subsidy')), }; } @@ -2264,19 +1858,19 @@ function createAaopoolPattern(client, acc) { */ function createLookbackPattern(client, acc) { return { - _10y: createMetricPattern4(client, _m(acc, "10y_ago")), - _1d: createMetricPattern4(client, _m(acc, "1d_ago")), - _1m: createMetricPattern4(client, _m(acc, "1m_ago")), - _1w: createMetricPattern4(client, _m(acc, "1w_ago")), - _1y: createMetricPattern4(client, _m(acc, "1y_ago")), - _2y: createMetricPattern4(client, _m(acc, "2y_ago")), - _3m: createMetricPattern4(client, _m(acc, "3m_ago")), - _3y: createMetricPattern4(client, _m(acc, "3y_ago")), - _4y: createMetricPattern4(client, _m(acc, "4y_ago")), - _5y: createMetricPattern4(client, _m(acc, "5y_ago")), - _6m: createMetricPattern4(client, _m(acc, "6m_ago")), - _6y: createMetricPattern4(client, _m(acc, "6y_ago")), - _8y: createMetricPattern4(client, _m(acc, "8y_ago")), + _10y: createMetricPattern4(client, _m(acc, '10y_ago')), + _1d: createMetricPattern4(client, _m(acc, '1d_ago')), + _1m: createMetricPattern4(client, _m(acc, '1m_ago')), + _1w: createMetricPattern4(client, _m(acc, '1w_ago')), + _1y: createMetricPattern4(client, _m(acc, '1y_ago')), + _2y: createMetricPattern4(client, _m(acc, '2y_ago')), + _3m: createMetricPattern4(client, _m(acc, '3m_ago')), + _3y: createMetricPattern4(client, _m(acc, '3y_ago')), + _4y: createMetricPattern4(client, _m(acc, '4y_ago')), + _5y: createMetricPattern4(client, _m(acc, '5y_ago')), + _6m: createMetricPattern4(client, _m(acc, '6m_ago')), + _6y: createMetricPattern4(client, _m(acc, '6y_ago')), + _8y: createMetricPattern4(client, _m(acc, '8y_ago')), }; } @@ -2304,18 +1898,18 @@ function createLookbackPattern(client, acc) { */ function createPeriodLumpSumStackPattern(client, acc) { return { - _10y: create_2015Pattern(client, _p("10y", acc)), - _1m: create_2015Pattern(client, _p("1m", acc)), - _1w: create_2015Pattern(client, _p("1w", acc)), - _1y: create_2015Pattern(client, _p("1y", acc)), - _2y: create_2015Pattern(client, _p("2y", acc)), - _3m: create_2015Pattern(client, _p("3m", acc)), - _3y: create_2015Pattern(client, _p("3y", acc)), - _4y: create_2015Pattern(client, _p("4y", acc)), - _5y: create_2015Pattern(client, _p("5y", acc)), - _6m: create_2015Pattern(client, _p("6m", acc)), - _6y: create_2015Pattern(client, _p("6y", acc)), - _8y: create_2015Pattern(client, _p("8y", acc)), + _10y: create_2015Pattern(client, _p('10y', acc)), + _1m: create_2015Pattern(client, _p('1m', acc)), + _1w: create_2015Pattern(client, _p('1w', acc)), + _1y: create_2015Pattern(client, _p('1y', acc)), + _2y: create_2015Pattern(client, _p('2y', acc)), + _3m: create_2015Pattern(client, _p('3m', acc)), + _3y: create_2015Pattern(client, _p('3y', acc)), + _4y: create_2015Pattern(client, _p('4y', acc)), + _5y: create_2015Pattern(client, _p('5y', acc)), + _6m: create_2015Pattern(client, _p('6m', acc)), + _6y: create_2015Pattern(client, _p('6y', acc)), + _8y: create_2015Pattern(client, _p('8y', acc)), }; } @@ -2345,18 +1939,18 @@ function createPeriodLumpSumStackPattern(client, acc) { */ function createPeriodAveragePricePattern(client, acc) { return { - _10y: createMetricPattern4(client, _p("10y", acc)), - _1m: createMetricPattern4(client, _p("1m", acc)), - _1w: createMetricPattern4(client, _p("1w", acc)), - _1y: createMetricPattern4(client, _p("1y", acc)), - _2y: createMetricPattern4(client, _p("2y", acc)), - _3m: createMetricPattern4(client, _p("3m", acc)), - _3y: createMetricPattern4(client, _p("3y", acc)), - _4y: createMetricPattern4(client, _p("4y", acc)), - _5y: createMetricPattern4(client, _p("5y", acc)), - _6m: createMetricPattern4(client, _p("6m", acc)), - _6y: createMetricPattern4(client, _p("6y", acc)), - _8y: createMetricPattern4(client, _p("8y", acc)), + _10y: createMetricPattern4(client, _p('10y', acc)), + _1m: createMetricPattern4(client, _p('1m', acc)), + _1w: createMetricPattern4(client, _p('1w', acc)), + _1y: createMetricPattern4(client, _p('1y', acc)), + _2y: createMetricPattern4(client, _p('2y', acc)), + _3m: createMetricPattern4(client, _p('3m', acc)), + _3y: createMetricPattern4(client, _p('3y', acc)), + _4y: createMetricPattern4(client, _p('4y', acc)), + _5y: createMetricPattern4(client, _p('5y', acc)), + _6m: createMetricPattern4(client, _p('6m', acc)), + _6y: createMetricPattern4(client, _p('6y', acc)), + _8y: createMetricPattern4(client, _p('8y', acc)), }; } @@ -2383,17 +1977,17 @@ function createPeriodAveragePricePattern(client, acc) { */ function createBitcoinPattern(client, acc) { return { - average: createMetricPattern2(client, _m(acc, "average")), + average: createMetricPattern2(client, _m(acc, 'average')), base: createMetricPattern11(client, acc), - cumulative: createMetricPattern2(client, _m(acc, "cumulative")), - max: createMetricPattern2(client, _m(acc, "max")), - median: createMetricPattern6(client, _m(acc, "median")), - min: createMetricPattern2(client, _m(acc, "min")), - pct10: createMetricPattern6(client, _m(acc, "pct10")), - pct25: createMetricPattern6(client, _m(acc, "pct25")), - pct75: createMetricPattern6(client, _m(acc, "pct75")), - pct90: createMetricPattern6(client, _m(acc, "pct90")), - sum: createMetricPattern2(client, _m(acc, "sum")), + cumulative: createMetricPattern2(client, _m(acc, 'cumulative')), + max: createMetricPattern2(client, _m(acc, 'max')), + median: createMetricPattern6(client, _m(acc, 'median')), + min: createMetricPattern2(client, _m(acc, 'min')), + pct10: createMetricPattern6(client, _m(acc, 'pct10')), + pct25: createMetricPattern6(client, _m(acc, 'pct25')), + pct75: createMetricPattern6(client, _m(acc, 'pct75')), + pct90: createMetricPattern6(client, _m(acc, 'pct90')), + sum: createMetricPattern2(client, _m(acc, 'sum')), }; } @@ -2422,17 +2016,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')), }; } @@ -2461,17 +2055,17 @@ function createClassAveragePricePattern(client, acc) { */ function createDollarsPattern(client, acc) { return { - average: createMetricPattern2(client, _m(acc, "average")), + average: createMetricPattern2(client, _m(acc, 'average')), base: createMetricPattern11(client, acc), - cumulative: createMetricPattern1(client, _m(acc, "cumulative")), - max: createMetricPattern2(client, _m(acc, "max")), - median: createMetricPattern6(client, _m(acc, "median")), - min: createMetricPattern2(client, _m(acc, "min")), - pct10: createMetricPattern6(client, _m(acc, "pct10")), - pct25: createMetricPattern6(client, _m(acc, "pct25")), - pct75: createMetricPattern6(client, _m(acc, "pct75")), - pct90: createMetricPattern6(client, _m(acc, "pct90")), - sum: createMetricPattern2(client, _m(acc, "sum")), + cumulative: createMetricPattern1(client, _m(acc, 'cumulative')), + max: createMetricPattern2(client, _m(acc, 'max')), + median: createMetricPattern6(client, _m(acc, 'median')), + min: createMetricPattern2(client, _m(acc, 'min')), + pct10: createMetricPattern6(client, _m(acc, 'pct10')), + pct25: createMetricPattern6(client, _m(acc, 'pct25')), + pct75: createMetricPattern6(client, _m(acc, 'pct75')), + pct90: createMetricPattern6(client, _m(acc, 'pct90')), + sum: createMetricPattern2(client, _m(acc, 'sum')), }; } @@ -2497,46 +2091,16 @@ function createDollarsPattern(client, acc) { */ function createRelativePattern2(client, acc) { return { - negUnrealizedLossRelToOwnMarketCap: createMetricPattern1( - client, - _m(acc, "neg_unrealized_loss_rel_to_own_market_cap"), - ), - negUnrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1( - client, - _m(acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - netUnrealizedPnlRelToOwnMarketCap: createMetricPattern1( - client, - _m(acc, "net_unrealized_pnl_rel_to_own_market_cap"), - ), - netUnrealizedPnlRelToOwnTotalUnrealizedPnl: createMetricPattern1( - client, - _m(acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl"), - ), - supplyInLossRelToOwnSupply: createMetricPattern1( - client, - _m(acc, "supply_in_loss_rel_to_own_supply"), - ), - supplyInProfitRelToOwnSupply: createMetricPattern1( - client, - _m(acc, "supply_in_profit_rel_to_own_supply"), - ), - unrealizedLossRelToOwnMarketCap: createMetricPattern1( - client, - _m(acc, "unrealized_loss_rel_to_own_market_cap"), - ), - unrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1( - client, - _m(acc, "unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - unrealizedProfitRelToOwnMarketCap: createMetricPattern1( - client, - _m(acc, "unrealized_profit_rel_to_own_market_cap"), - ), - unrealizedProfitRelToOwnTotalUnrealizedPnl: createMetricPattern1( - client, - _m(acc, "unrealized_profit_rel_to_own_total_unrealized_pnl"), - ), + negUnrealizedLossRelToOwnMarketCap: createMetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_market_cap')), + negUnrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_total_unrealized_pnl')), + netUnrealizedPnlRelToOwnMarketCap: createMetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_market_cap')), + netUnrealizedPnlRelToOwnTotalUnrealizedPnl: createMetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_total_unrealized_pnl')), + supplyInLossRelToOwnSupply: createMetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_own_supply')), + supplyInProfitRelToOwnSupply: createMetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_own_supply')), + unrealizedLossRelToOwnMarketCap: createMetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_market_cap')), + unrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_total_unrealized_pnl')), + unrealizedProfitRelToOwnMarketCap: createMetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_market_cap')), + unrealizedProfitRelToOwnTotalUnrealizedPnl: createMetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_total_unrealized_pnl')), }; } @@ -2562,43 +2126,16 @@ function createRelativePattern2(client, acc) { */ function createRelativePattern(client, acc) { return { - negUnrealizedLossRelToMarketCap: createMetricPattern1( - client, - _m(acc, "neg_unrealized_loss_rel_to_market_cap"), - ), - netUnrealizedPnlRelToMarketCap: createMetricPattern1( - client, - _m(acc, "net_unrealized_pnl_rel_to_market_cap"), - ), - nupl: createMetricPattern1(client, _m(acc, "nupl")), - supplyInLossRelToCirculatingSupply: createMetricPattern1( - client, - _m(acc, "supply_in_loss_rel_to_circulating_supply"), - ), - supplyInLossRelToOwnSupply: createMetricPattern1( - client, - _m(acc, "supply_in_loss_rel_to_own_supply"), - ), - supplyInProfitRelToCirculatingSupply: createMetricPattern1( - client, - _m(acc, "supply_in_profit_rel_to_circulating_supply"), - ), - supplyInProfitRelToOwnSupply: createMetricPattern1( - client, - _m(acc, "supply_in_profit_rel_to_own_supply"), - ), - supplyRelToCirculatingSupply: createMetricPattern4( - client, - _m(acc, "supply_rel_to_circulating_supply"), - ), - unrealizedLossRelToMarketCap: createMetricPattern1( - client, - _m(acc, "unrealized_loss_rel_to_market_cap"), - ), - unrealizedProfitRelToMarketCap: createMetricPattern1( - client, - _m(acc, "unrealized_profit_rel_to_market_cap"), - ), + negUnrealizedLossRelToMarketCap: createMetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_market_cap')), + netUnrealizedPnlRelToMarketCap: createMetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap')), + nupl: createMetricPattern1(client, _m(acc, 'nupl')), + supplyInLossRelToCirculatingSupply: createMetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_circulating_supply')), + supplyInLossRelToOwnSupply: createMetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_own_supply')), + supplyInProfitRelToCirculatingSupply: createMetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_circulating_supply')), + supplyInProfitRelToOwnSupply: createMetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_own_supply')), + supplyRelToCirculatingSupply: createMetricPattern4(client, _m(acc, 'supply_rel_to_circulating_supply')), + unrealizedLossRelToMarketCap: createMetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_market_cap')), + unrealizedProfitRelToMarketCap: createMetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_market_cap')), }; } @@ -2626,16 +2163,16 @@ function createRelativePattern(client, acc) { */ function createCountPattern2(client, acc) { return { - average: createMetricPattern1(client, _m(acc, "average")), - cumulative: createMetricPattern1(client, _m(acc, "cumulative")), - max: createMetricPattern1(client, _m(acc, "max")), - median: createMetricPattern11(client, _m(acc, "median")), - min: createMetricPattern1(client, _m(acc, "min")), - pct10: createMetricPattern11(client, _m(acc, "pct10")), - pct25: createMetricPattern11(client, _m(acc, "pct25")), - pct75: createMetricPattern11(client, _m(acc, "pct75")), - pct90: createMetricPattern11(client, _m(acc, "pct90")), - sum: createMetricPattern1(client, _m(acc, "sum")), + average: createMetricPattern1(client, _m(acc, 'average')), + cumulative: createMetricPattern1(client, _m(acc, 'cumulative')), + max: createMetricPattern1(client, _m(acc, 'max')), + median: createMetricPattern11(client, _m(acc, 'median')), + min: createMetricPattern1(client, _m(acc, 'min')), + pct10: createMetricPattern11(client, _m(acc, 'pct10')), + pct25: createMetricPattern11(client, _m(acc, 'pct25')), + pct75: createMetricPattern11(client, _m(acc, 'pct75')), + pct90: createMetricPattern11(client, _m(acc, 'pct90')), + sum: createMetricPattern1(client, _m(acc, 'sum')), }; } @@ -2661,14 +2198,14 @@ function createCountPattern2(client, acc) { function createAddrCountPattern(client, acc) { return { all: createMetricPattern1(client, acc), - p2a: createMetricPattern1(client, _p("p2a", acc)), - p2pk33: createMetricPattern1(client, _p("p2pk33", acc)), - p2pk65: createMetricPattern1(client, _p("p2pk65", acc)), - p2pkh: createMetricPattern1(client, _p("p2pkh", acc)), - p2sh: createMetricPattern1(client, _p("p2sh", acc)), - p2tr: createMetricPattern1(client, _p("p2tr", acc)), - p2wpkh: createMetricPattern1(client, _p("p2wpkh", acc)), - p2wsh: createMetricPattern1(client, _p("p2wsh", acc)), + p2a: createMetricPattern1(client, _p('p2a', acc)), + p2pk33: createMetricPattern1(client, _p('p2pk33', acc)), + p2pk65: createMetricPattern1(client, _p('p2pk65', acc)), + p2pkh: createMetricPattern1(client, _p('p2pkh', acc)), + p2sh: createMetricPattern1(client, _p('p2sh', acc)), + p2tr: createMetricPattern1(client, _p('p2tr', acc)), + p2wpkh: createMetricPattern1(client, _p('p2wpkh', acc)), + p2wsh: createMetricPattern1(client, _p('p2wsh', acc)), }; } @@ -2695,15 +2232,15 @@ function createAddrCountPattern(client, acc) { */ function createFullnessPattern(client, acc) { return { - average: createMetricPattern2(client, _m(acc, "average")), + average: createMetricPattern2(client, _m(acc, 'average')), base: createMetricPattern11(client, acc), - max: createMetricPattern2(client, _m(acc, "max")), - median: createMetricPattern6(client, _m(acc, "median")), - min: createMetricPattern2(client, _m(acc, "min")), - pct10: createMetricPattern6(client, _m(acc, "pct10")), - pct25: createMetricPattern6(client, _m(acc, "pct25")), - pct75: createMetricPattern6(client, _m(acc, "pct75")), - pct90: createMetricPattern6(client, _m(acc, "pct90")), + max: createMetricPattern2(client, _m(acc, 'max')), + median: createMetricPattern6(client, _m(acc, 'median')), + min: createMetricPattern2(client, _m(acc, 'min')), + pct10: createMetricPattern6(client, _m(acc, 'pct10')), + pct25: createMetricPattern6(client, _m(acc, 'pct25')), + pct75: createMetricPattern6(client, _m(acc, 'pct75')), + pct90: createMetricPattern6(client, _m(acc, 'pct90')), }; } @@ -2730,14 +2267,14 @@ function createFullnessPattern(client, acc) { */ function createFeeRatePattern(client, acc) { return { - average: createMetricPattern1(client, _m(acc, "average")), - max: createMetricPattern1(client, _m(acc, "max")), - median: createMetricPattern11(client, _m(acc, "median")), - min: createMetricPattern1(client, _m(acc, "min")), - pct10: createMetricPattern11(client, _m(acc, "pct10")), - pct25: createMetricPattern11(client, _m(acc, "pct25")), - pct75: createMetricPattern11(client, _m(acc, "pct75")), - pct90: createMetricPattern11(client, _m(acc, "pct90")), + average: createMetricPattern1(client, _m(acc, 'average')), + max: createMetricPattern1(client, _m(acc, 'max')), + median: createMetricPattern11(client, _m(acc, 'median')), + min: createMetricPattern1(client, _m(acc, 'min')), + pct10: createMetricPattern11(client, _m(acc, 'pct10')), + pct25: createMetricPattern11(client, _m(acc, 'pct25')), + pct75: createMetricPattern11(client, _m(acc, 'pct75')), + pct90: createMetricPattern11(client, _m(acc, 'pct90')), txindex: createMetricPattern27(client, acc), }; } @@ -2763,114 +2300,12 @@ function createFeeRatePattern(client, acc) { function create_0satsPattern(client, acc) { return { activity: createActivityPattern2(client, acc), - addrCount: createMetricPattern1(client, _m(acc, "addr_count")), + addrCount: createMetricPattern1(client, _m(acc, 'addr_count')), costBasis: createCostBasisPattern(client, acc), - outputs: createOutputsPattern(client, _m(acc, "utxo_count")), + 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} 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 - * @property {MetricPattern1} netUnrealizedPnl - * @property {ActiveSupplyPattern} supplyInLoss - * @property {ActiveSupplyPattern} supplyInProfit - * @property {MetricPattern1} totalUnrealizedPnl - * @property {MetricPattern1} unrealizedLoss - * @property {MetricPattern1} unrealizedProfit - */ - -/** - * Create a UnrealizedPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {UnrealizedPattern} - */ -function createUnrealizedPattern(client, acc) { - return { - negUnrealizedLoss: createMetricPattern1( - client, - _m(acc, "neg_unrealized_loss"), - ), - netUnrealizedPnl: createMetricPattern1( - client, - _m(acc, "net_unrealized_pnl"), - ), - supplyInLoss: createActiveSupplyPattern(client, _m(acc, "supply_in_loss")), - supplyInProfit: createActiveSupplyPattern( - client, - _m(acc, "supply_in_profit"), - ), - totalUnrealizedPnl: createMetricPattern1( - client, - _m(acc, "total_unrealized_pnl"), - ), - unrealizedLoss: createMetricPattern1(client, _m(acc, "unrealized_loss")), - unrealizedProfit: createMetricPattern1( - client, - _m(acc, "unrealized_profit"), - ), - }; -} - -/** - * @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")), + supply: createSupplyPattern2(client, _m(acc, 'supply')), unrealized: createUnrealizedPattern(client, acc), }; } @@ -2896,10 +2331,126 @@ function create_100btcPattern(client, acc) { return { activity: createActivityPattern2(client, acc), costBasis: createCostBasisPattern(client, acc), - outputs: createOutputsPattern(client, _m(acc, "utxo_count")), + outputs: createOutputsPattern(client, _m(acc, 'utxo_count')), realized: createRealizedPattern(client, acc), relative: createRelativePattern(client, acc), - supply: createSupplyPattern2(client, _m(acc, "supply")), + 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 + * @property {MetricPattern1} netUnrealizedPnl + * @property {ActiveSupplyPattern} supplyInLoss + * @property {ActiveSupplyPattern} supplyInProfit + * @property {MetricPattern1} totalUnrealizedPnl + * @property {MetricPattern1} unrealizedLoss + * @property {MetricPattern1} unrealizedProfit + */ + +/** + * Create a UnrealizedPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {UnrealizedPattern} + */ +function createUnrealizedPattern(client, acc) { + return { + negUnrealizedLoss: createMetricPattern1(client, _m(acc, 'neg_unrealized_loss')), + netUnrealizedPnl: createMetricPattern1(client, _m(acc, 'net_unrealized_pnl')), + supplyInLoss: createActiveSupplyPattern(client, _m(acc, 'supply_in_loss')), + supplyInProfit: createActiveSupplyPattern(client, _m(acc, 'supply_in_profit')), + totalUnrealizedPnl: createMetricPattern1(client, _m(acc, 'total_unrealized_pnl')), + unrealizedLoss: createMetricPattern1(client, _m(acc, 'unrealized_loss')), + unrealizedProfit: createMetricPattern1(client, _m(acc, 'unrealized_profit')), + }; +} + +/** + * @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), }; } @@ -2925,39 +2476,10 @@ function create_10yPattern(client, acc) { return { activity: createActivityPattern2(client, acc), costBasis: createCostBasisPattern(client, acc), - outputs: createOutputsPattern(client, _m(acc, "utxo_count")), + outputs: createOutputsPattern(client, _m(acc, 'utxo_count')), realized: createRealizedPattern4(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")), + supply: createSupplyPattern2(client, _m(acc, 'supply')), unrealized: createUnrealizedPattern(client, acc), }; } @@ -2979,23 +2501,11 @@ function create_10yTo12yPattern(client, acc) { */ function createActivityPattern2(client, acc) { return { - coinblocksDestroyed: createBlockCountPattern( - client, - _m(acc, "coinblocks_destroyed"), - ), - coindaysDestroyed: createBlockCountPattern( - client, - _m(acc, "coindays_destroyed"), - ), - satblocksDestroyed: createMetricPattern11( - client, - _m(acc, "satblocks_destroyed"), - ), - satdaysDestroyed: createMetricPattern11( - client, - _m(acc, "satdays_destroyed"), - ), - sent: createUnclaimedRewardsPattern(client, _m(acc, "sent")), + coinblocksDestroyed: createBlockCountPattern(client, _m(acc, 'coinblocks_destroyed')), + coindaysDestroyed: createBlockCountPattern(client, _m(acc, 'coindays_destroyed')), + satblocksDestroyed: createMetricPattern11(client, _m(acc, 'satblocks_destroyed')), + satdaysDestroyed: createMetricPattern11(client, _m(acc, 'satdays_destroyed')), + sent: createUnclaimedRewardsPattern(client, _m(acc, 'sent')), }; } @@ -3017,52 +2527,10 @@ function createActivityPattern2(client, acc) { */ function createSplitPattern2(client, acc) { return { - close: createMetricPattern1(client, _m(acc, "close")), - high: createMetricPattern1(client, _m(acc, "high")), - low: createMetricPattern1(client, _m(acc, "low")), - open: createMetricPattern1(client, _m(acc, "open")), - }; -} - -/** - * @typedef {Object} ActiveSupplyPattern - * @property {MetricPattern1} bitcoin - * @property {MetricPattern1} dollars - * @property {MetricPattern1} sats - */ - -/** - * Create a ActiveSupplyPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {ActiveSupplyPattern} - */ -function createActiveSupplyPattern(client, acc) { - return { - bitcoin: createMetricPattern1(client, _m(acc, "btc")), - dollars: createMetricPattern1(client, _m(acc, "usd")), - sats: createMetricPattern1(client, acc), - }; -} - -/** - * @typedef {Object} 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), + close: createMetricPattern1(client, _m(acc, 'close')), + high: createMetricPattern1(client, _m(acc, 'high')), + low: createMetricPattern1(client, _m(acc, 'low')), + open: createMetricPattern1(client, _m(acc, 'open')), }; } @@ -3081,8 +2549,8 @@ function createCoinbasePattern2(client, acc) { */ function create_2015Pattern(client, acc) { return { - bitcoin: createMetricPattern4(client, _m(acc, "btc")), - dollars: createMetricPattern4(client, _m(acc, "usd")), + bitcoin: createMetricPattern4(client, _m(acc, 'btc')), + dollars: createMetricPattern4(client, _m(acc, 'usd')), sats: createMetricPattern4(client, acc), }; } @@ -3102,29 +2570,29 @@ function create_2015Pattern(client, acc) { */ function createCoinbasePattern(client, acc) { return { - bitcoin: createBitcoinPattern(client, _m(acc, "btc")), - dollars: createDollarsPattern(client, _m(acc, "usd")), + bitcoin: createBitcoinPattern(client, _m(acc, 'btc')), + dollars: createDollarsPattern(client, _m(acc, 'usd')), sats: createDollarsPattern(client, acc), }; } /** - * @typedef {Object} UnclaimedRewardsPattern - * @property {BitcoinPattern2} bitcoin + * @typedef {Object} CoinbasePattern2 + * @property {BlockCountPattern} bitcoin * @property {BlockCountPattern} dollars * @property {BlockCountPattern} sats */ /** - * Create a UnclaimedRewardsPattern pattern node + * Create a CoinbasePattern2 pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {UnclaimedRewardsPattern} + * @returns {CoinbasePattern2} */ -function createUnclaimedRewardsPattern(client, acc) { +function createCoinbasePattern2(client, acc) { return { - bitcoin: createBitcoinPattern2(client, _m(acc, "btc")), - dollars: createBlockCountPattern(client, _m(acc, "usd")), + bitcoin: createBlockCountPattern(client, _m(acc, 'btc')), + dollars: createBlockCountPattern(client, _m(acc, 'usd')), sats: createBlockCountPattern(client, acc), }; } @@ -3145,8 +2613,8 @@ function createUnclaimedRewardsPattern(client, acc) { function createSegwitAdoptionPattern(client, acc) { return { base: createMetricPattern11(client, acc), - cumulative: createMetricPattern2(client, _m(acc, "cumulative")), - sum: createMetricPattern2(client, _m(acc, "sum")), + cumulative: createMetricPattern2(client, _m(acc, 'cumulative')), + sum: createMetricPattern2(client, _m(acc, 'sum')), }; } @@ -3165,9 +2633,51 @@ function createSegwitAdoptionPattern(client, acc) { */ function createCostBasisPattern2(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")), + 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), + }; +} + +/** + * @typedef {Object} UnclaimedRewardsPattern + * @property {BitcoinPattern2} bitcoin + * @property {BlockCountPattern} dollars + * @property {BlockCountPattern} sats + */ + +/** + * Create a UnclaimedRewardsPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {UnclaimedRewardsPattern} + */ +function createUnclaimedRewardsPattern(client, acc) { + return { + bitcoin: createBitcoinPattern2(client, _m(acc, 'btc')), + dollars: createBlockCountPattern(client, _m(acc, 'usd')), + sats: createBlockCountPattern(client, acc), }; } @@ -3185,8 +2695,8 @@ function createCostBasisPattern2(client, acc) { */ function createCostBasisPattern(client, acc) { return { - max: createMetricPattern1(client, _m(acc, "max_cost_basis")), - min: createMetricPattern1(client, _m(acc, "min_cost_basis")), + max: createMetricPattern1(client, _m(acc, 'max_cost_basis')), + min: createMetricPattern1(client, _m(acc, 'min_cost_basis')), }; } @@ -3204,7 +2714,7 @@ function createCostBasisPattern(client, acc) { */ function createSupplyPattern2(client, acc) { return { - halved: createActiveSupplyPattern(client, _m(acc, "halved")), + halved: createActiveSupplyPattern(client, _m(acc, 'halved')), total: createActiveSupplyPattern(client, acc), }; } @@ -3223,14 +2733,8 @@ function createSupplyPattern2(client, acc) { */ function createRelativePattern4(client, acc) { return { - supplyInLossRelToOwnSupply: createMetricPattern1( - client, - _m(acc, "loss_rel_to_own_supply"), - ), - supplyInProfitRelToOwnSupply: createMetricPattern1( - client, - _m(acc, "profit_rel_to_own_supply"), - ), + supplyInLossRelToOwnSupply: createMetricPattern1(client, _m(acc, 'loss_rel_to_own_supply')), + supplyInProfitRelToOwnSupply: createMetricPattern1(client, _m(acc, 'profit_rel_to_own_supply')), }; } @@ -3248,8 +2752,8 @@ function createRelativePattern4(client, acc) { */ function create_1dReturns1mSdPattern(client, acc) { return { - sd: createMetricPattern4(client, _m(acc, "sd")), - sma: createMetricPattern4(client, _m(acc, "sma")), + sd: createMetricPattern4(client, _m(acc, 'sd')), + sma: createMetricPattern4(client, _m(acc, 'sma')), }; } @@ -3269,7 +2773,28 @@ function create_1dReturns1mSdPattern(client, acc) { */ function createBlockCountPattern(client, acc) { return { - cumulative: createMetricPattern1(client, _m(acc, "cumulative")), + cumulative: createMetricPattern1(client, _m(acc, 'cumulative')), + sum: createMetricPattern1(client, acc), + }; +} + +/** + * @template T + * @typedef {Object} BitcoinPattern2 + * @property {MetricPattern2} cumulative + * @property {MetricPattern1} sum + */ + +/** + * Create a BitcoinPattern2 pattern node + * @template T + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {BitcoinPattern2} + */ +function createBitcoinPattern2(client, acc) { + return { + cumulative: createMetricPattern2(client, _m(acc, 'cumulative')), sum: createMetricPattern1(client, acc), }; } @@ -3290,46 +2815,8 @@ function createBlockCountPattern(client, acc) { */ function createSatsPattern(client, acc) { return { - ohlc: createMetricPattern1(client, _m(acc, "ohlc_sats")), - split: createSplitPattern2(client, _m(acc, "sats")), - }; -} - -/** - * @template T - * @typedef {Object} BitcoinPattern2 - * @property {MetricPattern2} cumulative - * @property {MetricPattern1} sum - */ - -/** - * Create a BitcoinPattern2 pattern node - * @template T - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {BitcoinPattern2} - */ -function createBitcoinPattern2(client, acc) { - return { - cumulative: createMetricPattern2(client, _m(acc, "cumulative")), - sum: createMetricPattern1(client, acc), - }; -} - -/** - * @typedef {Object} OutputsPattern - * @property {MetricPattern1} utxoCount - */ - -/** - * Create a OutputsPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {OutputsPattern} - */ -function createOutputsPattern(client, acc) { - return { - utxoCount: createMetricPattern1(client, acc), + ohlc: createMetricPattern1(client, _m(acc, 'ohlc_sats')), + split: createSplitPattern2(client, _m(acc, 'sats')), }; } @@ -3350,6 +2837,23 @@ function createRealizedPriceExtraPattern(client, acc) { }; } +/** + * @typedef {Object} OutputsPattern + * @property {MetricPattern1} utxoCount + */ + +/** + * Create a OutputsPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {OutputsPattern} + */ +function createOutputsPattern(client, acc) { + return { + utxoCount: createMetricPattern1(client, acc), + }; +} + // Catalog tree typedefs /** @@ -3535,105 +3039,13 @@ function createRealizedPriceExtraPattern(client, acc) { /** * @typedef {Object} MetricsTree_Cointime_Pricing * @property {MetricPattern1} activePrice - * @property {MetricsTree_Cointime_Pricing_ActivePriceRatio} activePriceRatio + * @property {ActivePriceRatioPattern} activePriceRatio * @property {MetricPattern1} cointimePrice - * @property {MetricsTree_Cointime_Pricing_CointimePriceRatio} cointimePriceRatio + * @property {ActivePriceRatioPattern} cointimePriceRatio * @property {MetricPattern1} trueMarketMean - * @property {MetricsTree_Cointime_Pricing_TrueMarketMeanRatio} trueMarketMeanRatio + * @property {ActivePriceRatioPattern} trueMarketMeanRatio * @property {MetricPattern1} vaultedPrice - * @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 + * @property {ActivePriceRatioPattern} vaultedPriceRatio */ /** @@ -3693,547 +3105,55 @@ function createRealizedPriceExtraPattern(client, acc) { /** * @typedef {Object} MetricsTree_Distribution_AddressCohorts_AmountRange - * @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 + * @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 */ /** * @typedef {Object} MetricsTree_Distribution_AddressCohorts_GeAmount - * @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 + * @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 */ /** * @typedef {Object} MetricsTree_Distribution_AddressCohorts_LtAmount - * @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 + * @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 */ /** @@ -4271,425 +3191,38 @@ function createRealizedPriceExtraPattern(client, acc) { /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_AgeRange - * @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 + * @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 */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_All - * @property {MetricsTree_Distribution_UtxoCohorts_All_Activity} activity + * @property {ActivityPattern2} activity * @property {MetricsTree_Distribution_UtxoCohorts_All_CostBasis} costBasis * @property {OutputsPattern} outputs - * @property {MetricsTree_Distribution_UtxoCohorts_All_Realized} realized + * @property {RealizedPattern3} realized * @property {MetricsTree_Distribution_UtxoCohorts_All_Relative} relative * @property {SupplyPattern2} supply - * @property {MetricsTree_Distribution_UtxoCohorts_All_Unrealized} unrealized - */ - -/** - * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_All_Activity - * @property {BlockCountPattern} coinblocksDestroyed - * @property {BlockCountPattern} coindaysDestroyed - * @property {MetricPattern11} satblocksDestroyed - * @property {MetricPattern11} satdaysDestroyed - * @property {UnclaimedRewardsPattern} sent + * @property {UnrealizedPattern} unrealized */ /** @@ -4699,65 +3232,6 @@ function createRealizedPriceExtraPattern(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 @@ -4768,1023 +3242,110 @@ function createRealizedPriceExtraPattern(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 {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 + * @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 */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Epoch - * @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 + * @property {_0satsPattern2} _0 + * @property {_0satsPattern2} _1 + * @property {_0satsPattern2} _2 + * @property {_0satsPattern2} _3 + * @property {_0satsPattern2} _4 */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_GeAmount - * @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 + * @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 */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_LtAmount - * @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 + * @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 */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MaxAge - * @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 + * @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 */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_MinAge - * @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 + * @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 */ /** @@ -5796,7 +3357,7 @@ function createRealizedPriceExtraPattern(client, acc) { /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Term_Long * @property {ActivityPattern2} activity - * @property {MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis} costBasis + * @property {CostBasisPattern2} costBasis * @property {OutputsPattern} outputs * @property {RealizedPattern2} realized * @property {RelativePattern5} relative @@ -5804,17 +3365,10 @@ function createRealizedPriceExtraPattern(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 {MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis} costBasis + * @property {CostBasisPattern2} costBasis * @property {OutputsPattern} outputs * @property {RealizedPattern3} realized * @property {RelativePattern5} relative @@ -5822,367 +3376,41 @@ function createRealizedPriceExtraPattern(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 {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 + * @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 */ /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_Year - * @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 + * @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 */ /** @@ -6421,8 +3649,8 @@ function createRealizedPriceExtraPattern(client, acc) { /** * @typedef {Object} MetricsTree_Market_Dca - * @property {ClassAveragePricePattern} classAveragePrice - * @property {MetricsTree_Market_Dca_ClassReturns} classReturns + * @property {MetricsTree_Market_Dca_ClassAveragePrice} classAveragePrice + * @property {ClassAveragePricePattern} classReturns * @property {MetricsTree_Market_Dca_ClassStack} classStack * @property {PeriodAveragePricePattern} periodAveragePrice * @property {PeriodCagrPattern} periodCagr @@ -6432,18 +3660,18 @@ function createRealizedPriceExtraPattern(client, acc) { */ /** - * @typedef {Object} MetricsTree_Market_Dca_ClassReturns - * @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_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 */ /** @@ -6486,809 +3714,41 @@ function createRealizedPriceExtraPattern(client, acc) { /** * @typedef {Object} MetricsTree_Market_MovingAverage - * @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 {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 {MetricPattern4} price200dSmaX08 * @property {MetricPattern4} price200dSmaX24 - * @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 {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 {MetricPattern4} price350dSmaX2 - * @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 + * @property {Price111dSmaPattern} price4yEma + * @property {Price111dSmaPattern} price4ySma + * @property {Price111dSmaPattern} price55dEma + * @property {Price111dSmaPattern} price55dSma + * @property {Price111dSmaPattern} price89dEma + * @property {Price111dSmaPattern} price89dSma + * @property {Price111dSmaPattern} price8dEma + * @property {Price111dSmaPattern} price8dSma */ /** @@ -7549,7 +4009,7 @@ function createRealizedPriceExtraPattern(client, acc) { * @typedef {Object} MetricsTree_Price * @property {MetricsTree_Price_Cents} cents * @property {MetricsTree_Price_Oracle} oracle - * @property {MetricsTree_Price_Sats} sats + * @property {SatsPattern} sats * @property {MetricsTree_Price_Usd} usd */ @@ -7575,12 +4035,6 @@ function createRealizedPriceExtraPattern(client, acc) { * @property {MetricPattern6} txCount */ -/** - * @typedef {Object} MetricsTree_Price_Sats - * @property {MetricPattern1} ohlc - * @property {SplitPattern2} split - */ - /** * @typedef {Object} MetricsTree_Price_Usd * @property {MetricPattern1} ohlc @@ -7765,868 +4219,868 @@ class BrkClient extends BrkClientBase { "weekindex", "yearindex", "loadedaddressindex", - "emptyaddressindex", + "emptyaddressindex" ]); POOL_ID_TO_POOL_NAME = /** @type {const} */ ({ - unknown: "Unknown", - blockfills: "BlockFills", - ultimuspool: "ULTIMUSPOOL", - terrapool: "Terra Pool", - luxor: "Luxor", - onethash: "1THash", - btccom: "BTC.com", - bitfarms: "Bitfarms", - huobipool: "Huobi.pool", - wayicn: "WAYI.CN", - canoepool: "CanoePool", - btctop: "BTC.TOP", - bitcoincom: "Bitcoin.com", - pool175btc: "175btc", - gbminers: "GBMiners", - axbt: "A-XBT", - asicminer: "ASICMiner", - bitminter: "BitMinter", - bitcoinrussia: "BitcoinRussia", - btcserv: "BTCServ", - simplecoinus: "simplecoin.us", - btcguild: "BTC Guild", - eligius: "Eligius", - ozcoin: "OzCoin", - eclipsemc: "EclipseMC", - maxbtc: "MaxBTC", - triplemining: "TripleMining", - coinlab: "CoinLab", - pool50btc: "50BTC", - ghashio: "GHash.IO", - stminingcorp: "ST Mining Corp", - bitparking: "Bitparking", - mmpool: "mmpool", - polmine: "Polmine", - kncminer: "KnCMiner", - bitalo: "Bitalo", - f2pool: "F2Pool", - hhtt: "HHTT", - megabigpower: "MegaBigPower", - mtred: "Mt Red", - nmcbit: "NMCbit", - yourbtcnet: "Yourbtc.net", - givemecoins: "Give Me Coins", - braiinspool: "Braiins Pool", - antpool: "AntPool", - multicoinco: "MultiCoin.co", - bcpoolio: "bcpool.io", - cointerra: "Cointerra", - kanopool: "KanoPool", - solock: "Solo CK", - ckpool: "CKPool", - nicehash: "NiceHash", - bitclub: "BitClub", - bitcoinaffiliatenetwork: "Bitcoin Affiliate Network", - btcc: "BTCC", - bwpool: "BWPool", - exxbw: "EXX&BW", - bitsolo: "Bitsolo", - bitfury: "BitFury", - twentyoneinc: "21 Inc.", - digitalbtc: "digitalBTC", - eightbaochi: "8baochi", - mybtccoinpool: "myBTCcoin Pool", - tbdice: "TBDice", - hashpool: "HASHPOOL", - nexious: "Nexious", - bravomining: "Bravo Mining", - hotpool: "HotPool", - okexpool: "OKExPool", - bcmonster: "BCMonster", - onehash: "1Hash", - bixin: "Bixin", - tatmaspool: "TATMAS Pool", - viabtc: "ViaBTC", - connectbtc: "ConnectBTC", - batpool: "BATPOOL", - waterhole: "Waterhole", - dcexploration: "DCExploration", - dcex: "DCEX", - btpool: "BTPOOL", - fiftyeightcoin: "58COIN", - bitcoinindia: "Bitcoin India", - shawnp0wers: "shawnp0wers", - phashio: "PHash.IO", - rigpool: "RigPool", - haozhuzhu: "HAOZHUZHU", - sevenpool: "7pool", - miningkings: "MiningKings", - hashbx: "HashBX", - dpool: "DPOOL", - rawpool: "Rawpool", - haominer: "haominer", - helix: "Helix", - bitcoinukraine: "Bitcoin-Ukraine", - poolin: "Poolin", - secretsuperstar: "SecretSuperstar", - tigerpoolnet: "tigerpool.net", - sigmapoolcom: "Sigmapool.com", - okpooltop: "okpool.top", - hummerpool: "Hummerpool", - tangpool: "Tangpool", - bytepool: "BytePool", - spiderpool: "SpiderPool", - novablock: "NovaBlock", - miningcity: "MiningCity", - binancepool: "Binance Pool", - minerium: "Minerium", - lubiancom: "Lubian.com", - okkong: "OKKONG", - aaopool: "AAO Pool", - emcdpool: "EMCDPool", - foundryusa: "Foundry USA", - sbicrypto: "SBI Crypto", - arkpool: "ArkPool", - purebtccom: "PureBTC.COM", - marapool: "MARA Pool", - kucoinpool: "KuCoinPool", - entrustcharitypool: "Entrust Charity Pool", - okminer: "OKMINER", - titan: "Titan", - pegapool: "PEGA Pool", - btcnuggets: "BTC Nuggets", - cloudhashing: "CloudHashing", - digitalxmintsy: "digitalX Mintsy", - telco214: "Telco 214", - btcpoolparty: "BTC Pool Party", - multipool: "Multipool", - transactioncoinmining: "transactioncoinmining", - btcdig: "BTCDig", - trickysbtcpool: "Tricky's BTC Pool", - btcmp: "BTCMP", - eobot: "Eobot", - unomp: "UNOMP", - patels: "Patels", - gogreenlight: "GoGreenLight", - ekanembtc: "EkanemBTC", - canoe: "CANOE", - tiger: "tiger", - onem1x: "1M1X", - zulupool: "Zulupool", - secpool: "SECPOOL", - ocean: "OCEAN", - whitepool: "WhitePool", - wk057: "wk057", - futurebitapollosolo: "FutureBit Apollo Solo", - carbonnegative: "Carbon Negative", - portlandhodl: "Portland.HODL", - phoenix: "Phoenix", - neopool: "Neopool", - maxipool: "MaxiPool", - bitfufupool: "BitFuFuPool", - luckypool: "luckyPool", - miningdutch: "Mining-Dutch", - publicpool: "Public Pool", - miningsquared: "Mining Squared", - innopolistech: "Innopolis Tech", - btclab: "BTCLab", - parasite: "Parasite", + "unknown": "Unknown", + "blockfills": "BlockFills", + "ultimuspool": "ULTIMUSPOOL", + "terrapool": "Terra Pool", + "luxor": "Luxor", + "onethash": "1THash", + "btccom": "BTC.com", + "bitfarms": "Bitfarms", + "huobipool": "Huobi.pool", + "wayicn": "WAYI.CN", + "canoepool": "CanoePool", + "btctop": "BTC.TOP", + "bitcoincom": "Bitcoin.com", + "pool175btc": "175btc", + "gbminers": "GBMiners", + "axbt": "A-XBT", + "asicminer": "ASICMiner", + "bitminter": "BitMinter", + "bitcoinrussia": "BitcoinRussia", + "btcserv": "BTCServ", + "simplecoinus": "simplecoin.us", + "btcguild": "BTC Guild", + "eligius": "Eligius", + "ozcoin": "OzCoin", + "eclipsemc": "EclipseMC", + "maxbtc": "MaxBTC", + "triplemining": "TripleMining", + "coinlab": "CoinLab", + "pool50btc": "50BTC", + "ghashio": "GHash.IO", + "stminingcorp": "ST Mining Corp", + "bitparking": "Bitparking", + "mmpool": "mmpool", + "polmine": "Polmine", + "kncminer": "KnCMiner", + "bitalo": "Bitalo", + "f2pool": "F2Pool", + "hhtt": "HHTT", + "megabigpower": "MegaBigPower", + "mtred": "Mt Red", + "nmcbit": "NMCbit", + "yourbtcnet": "Yourbtc.net", + "givemecoins": "Give Me Coins", + "braiinspool": "Braiins Pool", + "antpool": "AntPool", + "multicoinco": "MultiCoin.co", + "bcpoolio": "bcpool.io", + "cointerra": "Cointerra", + "kanopool": "KanoPool", + "solock": "Solo CK", + "ckpool": "CKPool", + "nicehash": "NiceHash", + "bitclub": "BitClub", + "bitcoinaffiliatenetwork": "Bitcoin Affiliate Network", + "btcc": "BTCC", + "bwpool": "BWPool", + "exxbw": "EXX&BW", + "bitsolo": "Bitsolo", + "bitfury": "BitFury", + "twentyoneinc": "21 Inc.", + "digitalbtc": "digitalBTC", + "eightbaochi": "8baochi", + "mybtccoinpool": "myBTCcoin Pool", + "tbdice": "TBDice", + "hashpool": "HASHPOOL", + "nexious": "Nexious", + "bravomining": "Bravo Mining", + "hotpool": "HotPool", + "okexpool": "OKExPool", + "bcmonster": "BCMonster", + "onehash": "1Hash", + "bixin": "Bixin", + "tatmaspool": "TATMAS Pool", + "viabtc": "ViaBTC", + "connectbtc": "ConnectBTC", + "batpool": "BATPOOL", + "waterhole": "Waterhole", + "dcexploration": "DCExploration", + "dcex": "DCEX", + "btpool": "BTPOOL", + "fiftyeightcoin": "58COIN", + "bitcoinindia": "Bitcoin India", + "shawnp0wers": "shawnp0wers", + "phashio": "PHash.IO", + "rigpool": "RigPool", + "haozhuzhu": "HAOZHUZHU", + "sevenpool": "7pool", + "miningkings": "MiningKings", + "hashbx": "HashBX", + "dpool": "DPOOL", + "rawpool": "Rawpool", + "haominer": "haominer", + "helix": "Helix", + "bitcoinukraine": "Bitcoin-Ukraine", + "poolin": "Poolin", + "secretsuperstar": "SecretSuperstar", + "tigerpoolnet": "tigerpool.net", + "sigmapoolcom": "Sigmapool.com", + "okpooltop": "okpool.top", + "hummerpool": "Hummerpool", + "tangpool": "Tangpool", + "bytepool": "BytePool", + "spiderpool": "SpiderPool", + "novablock": "NovaBlock", + "miningcity": "MiningCity", + "binancepool": "Binance Pool", + "minerium": "Minerium", + "lubiancom": "Lubian.com", + "okkong": "OKKONG", + "aaopool": "AAO Pool", + "emcdpool": "EMCDPool", + "foundryusa": "Foundry USA", + "sbicrypto": "SBI Crypto", + "arkpool": "ArkPool", + "purebtccom": "PureBTC.COM", + "marapool": "MARA Pool", + "kucoinpool": "KuCoinPool", + "entrustcharitypool": "Entrust Charity Pool", + "okminer": "OKMINER", + "titan": "Titan", + "pegapool": "PEGA Pool", + "btcnuggets": "BTC Nuggets", + "cloudhashing": "CloudHashing", + "digitalxmintsy": "digitalX Mintsy", + "telco214": "Telco 214", + "btcpoolparty": "BTC Pool Party", + "multipool": "Multipool", + "transactioncoinmining": "transactioncoinmining", + "btcdig": "BTCDig", + "trickysbtcpool": "Tricky's BTC Pool", + "btcmp": "BTCMP", + "eobot": "Eobot", + "unomp": "UNOMP", + "patels": "Patels", + "gogreenlight": "GoGreenLight", + "ekanembtc": "EkanemBTC", + "canoe": "CANOE", + "tiger": "tiger", + "onem1x": "1M1X", + "zulupool": "Zulupool", + "secpool": "SECPOOL", + "ocean": "OCEAN", + "whitepool": "WhitePool", + "wk057": "wk057", + "futurebitapollosolo": "FutureBit Apollo Solo", + "carbonnegative": "Carbon Negative", + "portlandhodl": "Portland.HODL", + "phoenix": "Phoenix", + "neopool": "Neopool", + "maxipool": "MaxiPool", + "bitfufupool": "BitFuFuPool", + "luckypool": "luckyPool", + "miningdutch": "Mining-Dutch", + "publicpool": "Public Pool", + "miningsquared": "Mining Squared", + "innopolistech": "Innopolis Tech", + "btclab": "BTCLab", + "parasite": "Parasite" }); TERM_NAMES = /** @type {const} */ ({ - short: { - id: "sth", - short: "STH", - long: "Short Term Holders", - }, - long: { - id: "lth", - short: "LTH", - long: "Long Term Holders", + "short": { + "id": "sth", + "short": "STH", + "long": "Short Term Holders" }, + "long": { + "id": "lth", + "short": "LTH", + "long": "Long Term Holders" + } }); EPOCH_NAMES = /** @type {const} */ ({ - _0: { - id: "epoch_0", - short: "Epoch 0", - long: "Epoch 0", + "_0": { + "id": "epoch_0", + "short": "Epoch 0", + "long": "Epoch 0" }, - _1: { - id: "epoch_1", - short: "Epoch 1", - long: "Epoch 1", + "_1": { + "id": "epoch_1", + "short": "Epoch 1", + "long": "Epoch 1" }, - _2: { - id: "epoch_2", - short: "Epoch 2", - long: "Epoch 2", + "_2": { + "id": "epoch_2", + "short": "Epoch 2", + "long": "Epoch 2" }, - _3: { - id: "epoch_3", - short: "Epoch 3", - long: "Epoch 3", - }, - _4: { - id: "epoch_4", - short: "Epoch 4", - long: "Epoch 4", + "_3": { + "id": "epoch_3", + "short": "Epoch 3", + "long": "Epoch 3" }, + "_4": { + "id": "epoch_4", + "short": "Epoch 4", + "long": "Epoch 4" + } }); YEAR_NAMES = /** @type {const} */ ({ - _2009: { - id: "year_2009", - short: "2009", - long: "Year 2009", + "_2009": { + "id": "year_2009", + "short": "2009", + "long": "Year 2009" }, - _2010: { - id: "year_2010", - short: "2010", - long: "Year 2010", + "_2010": { + "id": "year_2010", + "short": "2010", + "long": "Year 2010" }, - _2011: { - id: "year_2011", - short: "2011", - long: "Year 2011", + "_2011": { + "id": "year_2011", + "short": "2011", + "long": "Year 2011" }, - _2012: { - id: "year_2012", - short: "2012", - long: "Year 2012", + "_2012": { + "id": "year_2012", + "short": "2012", + "long": "Year 2012" }, - _2013: { - id: "year_2013", - short: "2013", - long: "Year 2013", + "_2013": { + "id": "year_2013", + "short": "2013", + "long": "Year 2013" }, - _2014: { - id: "year_2014", - short: "2014", - long: "Year 2014", + "_2014": { + "id": "year_2014", + "short": "2014", + "long": "Year 2014" }, - _2015: { - id: "year_2015", - short: "2015", - long: "Year 2015", + "_2015": { + "id": "year_2015", + "short": "2015", + "long": "Year 2015" }, - _2016: { - id: "year_2016", - short: "2016", - long: "Year 2016", + "_2016": { + "id": "year_2016", + "short": "2016", + "long": "Year 2016" }, - _2017: { - id: "year_2017", - short: "2017", - long: "Year 2017", + "_2017": { + "id": "year_2017", + "short": "2017", + "long": "Year 2017" }, - _2018: { - id: "year_2018", - short: "2018", - long: "Year 2018", + "_2018": { + "id": "year_2018", + "short": "2018", + "long": "Year 2018" }, - _2019: { - id: "year_2019", - short: "2019", - long: "Year 2019", + "_2019": { + "id": "year_2019", + "short": "2019", + "long": "Year 2019" }, - _2020: { - id: "year_2020", - short: "2020", - long: "Year 2020", + "_2020": { + "id": "year_2020", + "short": "2020", + "long": "Year 2020" }, - _2021: { - id: "year_2021", - short: "2021", - long: "Year 2021", + "_2021": { + "id": "year_2021", + "short": "2021", + "long": "Year 2021" }, - _2022: { - id: "year_2022", - short: "2022", - long: "Year 2022", + "_2022": { + "id": "year_2022", + "short": "2022", + "long": "Year 2022" }, - _2023: { - id: "year_2023", - short: "2023", - long: "Year 2023", + "_2023": { + "id": "year_2023", + "short": "2023", + "long": "Year 2023" }, - _2024: { - id: "year_2024", - short: "2024", - long: "Year 2024", + "_2024": { + "id": "year_2024", + "short": "2024", + "long": "Year 2024" }, - _2025: { - id: "year_2025", - short: "2025", - long: "Year 2025", - }, - _2026: { - id: "year_2026", - short: "2026", - long: "Year 2026", + "_2025": { + "id": "year_2025", + "short": "2025", + "long": "Year 2025" }, + "_2026": { + "id": "year_2026", + "short": "2026", + "long": "Year 2026" + } }); SPENDABLE_TYPE_NAMES = /** @type {const} */ ({ - p2pk65: { - id: "p2pk65", - short: "P2PK65", - long: "Pay to Public Key (65 bytes)", + "p2pk65": { + "id": "p2pk65", + "short": "P2PK65", + "long": "Pay to Public Key (65 bytes)" }, - p2pk33: { - id: "p2pk33", - short: "P2PK33", - long: "Pay to Public Key (33 bytes)", + "p2pk33": { + "id": "p2pk33", + "short": "P2PK33", + "long": "Pay to Public Key (33 bytes)" }, - p2pkh: { - id: "p2pkh", - short: "P2PKH", - long: "Pay to Public Key Hash", + "p2pkh": { + "id": "p2pkh", + "short": "P2PKH", + "long": "Pay to Public Key Hash" }, - p2ms: { - id: "p2ms", - short: "P2MS", - long: "Pay to Multisig", + "p2ms": { + "id": "p2ms", + "short": "P2MS", + "long": "Pay to Multisig" }, - p2sh: { - id: "p2sh", - short: "P2SH", - long: "Pay to Script Hash", + "p2sh": { + "id": "p2sh", + "short": "P2SH", + "long": "Pay to Script Hash" }, - p2wpkh: { - id: "p2wpkh", - short: "P2WPKH", - long: "Pay to Witness Public Key Hash", + "p2wpkh": { + "id": "p2wpkh", + "short": "P2WPKH", + "long": "Pay to Witness Public Key Hash" }, - p2wsh: { - id: "p2wsh", - short: "P2WSH", - long: "Pay to Witness Script Hash", + "p2wsh": { + "id": "p2wsh", + "short": "P2WSH", + "long": "Pay to Witness Script Hash" }, - p2tr: { - id: "p2tr", - short: "P2TR", - long: "Pay to Taproot", + "p2tr": { + "id": "p2tr", + "short": "P2TR", + "long": "Pay to Taproot" }, - p2a: { - id: "p2a", - short: "P2A", - long: "Pay to Anchor", + "p2a": { + "id": "p2a", + "short": "P2A", + "long": "Pay to Anchor" }, - unknown: { - id: "unknown_outputs", - short: "Unknown", - long: "Unknown Output Type", - }, - empty: { - id: "empty_outputs", - short: "Empty", - long: "Empty Output", + "unknown": { + "id": "unknown_outputs", + "short": "Unknown", + "long": "Unknown Output Type" }, + "empty": { + "id": "empty_outputs", + "short": "Empty", + "long": "Empty Output" + } }); AGE_RANGE_NAMES = /** @type {const} */ ({ - upTo1h: { - id: "up_to_1h_old", - short: "<1h", - long: "Up to 1 Hour Old", + "upTo1h": { + "id": "up_to_1h_old", + "short": "<1h", + "long": "Up to 1 Hour Old" }, - _1hTo1d: { - id: "at_least_1h_up_to_1d_old", - short: "1h-1d", - long: "1 Hour to 1 Day Old", + "_1hTo1d": { + "id": "at_least_1h_up_to_1d_old", + "short": "1h-1d", + "long": "1 Hour to 1 Day Old" }, - _1dTo1w: { - id: "at_least_1d_up_to_1w_old", - short: "1d-1w", - long: "1 Day to 1 Week Old", + "_1dTo1w": { + "id": "at_least_1d_up_to_1w_old", + "short": "1d-1w", + "long": "1 Day to 1 Week Old" }, - _1wTo1m: { - id: "at_least_1w_up_to_1m_old", - short: "1w-1m", - long: "1 Week to 1 Month Old", + "_1wTo1m": { + "id": "at_least_1w_up_to_1m_old", + "short": "1w-1m", + "long": "1 Week to 1 Month Old" }, - _1mTo2m: { - id: "at_least_1m_up_to_2m_old", - short: "1m-2m", - long: "1 to 2 Months Old", + "_1mTo2m": { + "id": "at_least_1m_up_to_2m_old", + "short": "1m-2m", + "long": "1 to 2 Months Old" }, - _2mTo3m: { - id: "at_least_2m_up_to_3m_old", - short: "2m-3m", - long: "2 to 3 Months Old", + "_2mTo3m": { + "id": "at_least_2m_up_to_3m_old", + "short": "2m-3m", + "long": "2 to 3 Months Old" }, - _3mTo4m: { - id: "at_least_3m_up_to_4m_old", - short: "3m-4m", - long: "3 to 4 Months Old", + "_3mTo4m": { + "id": "at_least_3m_up_to_4m_old", + "short": "3m-4m", + "long": "3 to 4 Months Old" }, - _4mTo5m: { - id: "at_least_4m_up_to_5m_old", - short: "4m-5m", - long: "4 to 5 Months Old", + "_4mTo5m": { + "id": "at_least_4m_up_to_5m_old", + "short": "4m-5m", + "long": "4 to 5 Months Old" }, - _5mTo6m: { - id: "at_least_5m_up_to_6m_old", - short: "5m-6m", - long: "5 to 6 Months Old", + "_5mTo6m": { + "id": "at_least_5m_up_to_6m_old", + "short": "5m-6m", + "long": "5 to 6 Months Old" }, - _6mTo1y: { - id: "at_least_6m_up_to_1y_old", - short: "6m-1y", - long: "6 Months to 1 Year Old", + "_6mTo1y": { + "id": "at_least_6m_up_to_1y_old", + "short": "6m-1y", + "long": "6 Months to 1 Year Old" }, - _1yTo2y: { - id: "at_least_1y_up_to_2y_old", - short: "1y-2y", - long: "1 to 2 Years Old", + "_1yTo2y": { + "id": "at_least_1y_up_to_2y_old", + "short": "1y-2y", + "long": "1 to 2 Years Old" }, - _2yTo3y: { - id: "at_least_2y_up_to_3y_old", - short: "2y-3y", - long: "2 to 3 Years Old", + "_2yTo3y": { + "id": "at_least_2y_up_to_3y_old", + "short": "2y-3y", + "long": "2 to 3 Years Old" }, - _3yTo4y: { - id: "at_least_3y_up_to_4y_old", - short: "3y-4y", - long: "3 to 4 Years Old", + "_3yTo4y": { + "id": "at_least_3y_up_to_4y_old", + "short": "3y-4y", + "long": "3 to 4 Years Old" }, - _4yTo5y: { - id: "at_least_4y_up_to_5y_old", - short: "4y-5y", - long: "4 to 5 Years Old", + "_4yTo5y": { + "id": "at_least_4y_up_to_5y_old", + "short": "4y-5y", + "long": "4 to 5 Years Old" }, - _5yTo6y: { - id: "at_least_5y_up_to_6y_old", - short: "5y-6y", - long: "5 to 6 Years Old", + "_5yTo6y": { + "id": "at_least_5y_up_to_6y_old", + "short": "5y-6y", + "long": "5 to 6 Years Old" }, - _6yTo7y: { - id: "at_least_6y_up_to_7y_old", - short: "6y-7y", - long: "6 to 7 Years Old", + "_6yTo7y": { + "id": "at_least_6y_up_to_7y_old", + "short": "6y-7y", + "long": "6 to 7 Years Old" }, - _7yTo8y: { - id: "at_least_7y_up_to_8y_old", - short: "7y-8y", - long: "7 to 8 Years Old", + "_7yTo8y": { + "id": "at_least_7y_up_to_8y_old", + "short": "7y-8y", + "long": "7 to 8 Years Old" }, - _8yTo10y: { - id: "at_least_8y_up_to_10y_old", - short: "8y-10y", - long: "8 to 10 Years Old", + "_8yTo10y": { + "id": "at_least_8y_up_to_10y_old", + "short": "8y-10y", + "long": "8 to 10 Years Old" }, - _10yTo12y: { - id: "at_least_10y_up_to_12y_old", - short: "10y-12y", - long: "10 to 12 Years Old", + "_10yTo12y": { + "id": "at_least_10y_up_to_12y_old", + "short": "10y-12y", + "long": "10 to 12 Years Old" }, - _12yTo15y: { - id: "at_least_12y_up_to_15y_old", - short: "12y-15y", - long: "12 to 15 Years Old", - }, - from15y: { - id: "at_least_15y_old", - short: "15y+", - long: "15+ Years Old", + "_12yTo15y": { + "id": "at_least_12y_up_to_15y_old", + "short": "12y-15y", + "long": "12 to 15 Years Old" }, + "from15y": { + "id": "at_least_15y_old", + "short": "15y+", + "long": "15+ Years Old" + } }); MAX_AGE_NAMES = /** @type {const} */ ({ - _1w: { - id: "up_to_1w_old", - short: "<1w", - long: "Up to 1 Week Old", + "_1w": { + "id": "up_to_1w_old", + "short": "<1w", + "long": "Up to 1 Week Old" }, - _1m: { - id: "up_to_1m_old", - short: "<1m", - long: "Up to 1 Month Old", + "_1m": { + "id": "up_to_1m_old", + "short": "<1m", + "long": "Up to 1 Month Old" }, - _2m: { - id: "up_to_2m_old", - short: "<2m", - long: "Up to 2 Months Old", + "_2m": { + "id": "up_to_2m_old", + "short": "<2m", + "long": "Up to 2 Months Old" }, - _3m: { - id: "up_to_3m_old", - short: "<3m", - long: "Up to 3 Months Old", + "_3m": { + "id": "up_to_3m_old", + "short": "<3m", + "long": "Up to 3 Months Old" }, - _4m: { - id: "up_to_4m_old", - short: "<4m", - long: "Up to 4 Months Old", + "_4m": { + "id": "up_to_4m_old", + "short": "<4m", + "long": "Up to 4 Months Old" }, - _5m: { - id: "up_to_5m_old", - short: "<5m", - long: "Up to 5 Months Old", + "_5m": { + "id": "up_to_5m_old", + "short": "<5m", + "long": "Up to 5 Months Old" }, - _6m: { - id: "up_to_6m_old", - short: "<6m", - long: "Up to 6 Months Old", + "_6m": { + "id": "up_to_6m_old", + "short": "<6m", + "long": "Up to 6 Months Old" }, - _1y: { - id: "up_to_1y_old", - short: "<1y", - long: "Up to 1 Year Old", + "_1y": { + "id": "up_to_1y_old", + "short": "<1y", + "long": "Up to 1 Year Old" }, - _2y: { - id: "up_to_2y_old", - short: "<2y", - long: "Up to 2 Years Old", + "_2y": { + "id": "up_to_2y_old", + "short": "<2y", + "long": "Up to 2 Years Old" }, - _3y: { - id: "up_to_3y_old", - short: "<3y", - long: "Up to 3 Years Old", + "_3y": { + "id": "up_to_3y_old", + "short": "<3y", + "long": "Up to 3 Years Old" }, - _4y: { - id: "up_to_4y_old", - short: "<4y", - long: "Up to 4 Years Old", + "_4y": { + "id": "up_to_4y_old", + "short": "<4y", + "long": "Up to 4 Years Old" }, - _5y: { - id: "up_to_5y_old", - short: "<5y", - long: "Up to 5 Years Old", + "_5y": { + "id": "up_to_5y_old", + "short": "<5y", + "long": "Up to 5 Years Old" }, - _6y: { - id: "up_to_6y_old", - short: "<6y", - long: "Up to 6 Years Old", + "_6y": { + "id": "up_to_6y_old", + "short": "<6y", + "long": "Up to 6 Years Old" }, - _7y: { - id: "up_to_7y_old", - short: "<7y", - long: "Up to 7 Years Old", + "_7y": { + "id": "up_to_7y_old", + "short": "<7y", + "long": "Up to 7 Years Old" }, - _8y: { - id: "up_to_8y_old", - short: "<8y", - long: "Up to 8 Years Old", + "_8y": { + "id": "up_to_8y_old", + "short": "<8y", + "long": "Up to 8 Years Old" }, - _10y: { - id: "up_to_10y_old", - short: "<10y", - long: "Up to 10 Years Old", + "_10y": { + "id": "up_to_10y_old", + "short": "<10y", + "long": "Up to 10 Years Old" }, - _12y: { - id: "up_to_12y_old", - short: "<12y", - long: "Up to 12 Years Old", - }, - _15y: { - id: "up_to_15y_old", - short: "<15y", - long: "Up to 15 Years Old", + "_12y": { + "id": "up_to_12y_old", + "short": "<12y", + "long": "Up to 12 Years Old" }, + "_15y": { + "id": "up_to_15y_old", + "short": "<15y", + "long": "Up to 15 Years Old" + } }); MIN_AGE_NAMES = /** @type {const} */ ({ - _1d: { - id: "at_least_1d_old", - short: "1d+", - long: "At Least 1 Day Old", + "_1d": { + "id": "at_least_1d_old", + "short": "1d+", + "long": "At Least 1 Day Old" }, - _1w: { - id: "at_least_1w_old", - short: "1w+", - long: "At Least 1 Week Old", + "_1w": { + "id": "at_least_1w_old", + "short": "1w+", + "long": "At Least 1 Week Old" }, - _1m: { - id: "at_least_1m_old", - short: "1m+", - long: "At Least 1 Month Old", + "_1m": { + "id": "at_least_1m_old", + "short": "1m+", + "long": "At Least 1 Month Old" }, - _2m: { - id: "at_least_2m_old", - short: "2m+", - long: "At Least 2 Months Old", + "_2m": { + "id": "at_least_2m_old", + "short": "2m+", + "long": "At Least 2 Months Old" }, - _3m: { - id: "at_least_3m_old", - short: "3m+", - long: "At Least 3 Months Old", + "_3m": { + "id": "at_least_3m_old", + "short": "3m+", + "long": "At Least 3 Months Old" }, - _4m: { - id: "at_least_4m_old", - short: "4m+", - long: "At Least 4 Months Old", + "_4m": { + "id": "at_least_4m_old", + "short": "4m+", + "long": "At Least 4 Months Old" }, - _5m: { - id: "at_least_5m_old", - short: "5m+", - long: "At Least 5 Months Old", + "_5m": { + "id": "at_least_5m_old", + "short": "5m+", + "long": "At Least 5 Months Old" }, - _6m: { - id: "at_least_6m_old", - short: "6m+", - long: "At Least 6 Months Old", + "_6m": { + "id": "at_least_6m_old", + "short": "6m+", + "long": "At Least 6 Months Old" }, - _1y: { - id: "at_least_1y_old", - short: "1y+", - long: "At Least 1 Year Old", + "_1y": { + "id": "at_least_1y_old", + "short": "1y+", + "long": "At Least 1 Year Old" }, - _2y: { - id: "at_least_2y_old", - short: "2y+", - long: "At Least 2 Years Old", + "_2y": { + "id": "at_least_2y_old", + "short": "2y+", + "long": "At Least 2 Years Old" }, - _3y: { - id: "at_least_3y_old", - short: "3y+", - long: "At Least 3 Years Old", + "_3y": { + "id": "at_least_3y_old", + "short": "3y+", + "long": "At Least 3 Years Old" }, - _4y: { - id: "at_least_4y_old", - short: "4y+", - long: "At Least 4 Years Old", + "_4y": { + "id": "at_least_4y_old", + "short": "4y+", + "long": "At Least 4 Years Old" }, - _5y: { - id: "at_least_5y_old", - short: "5y+", - long: "At Least 5 Years Old", + "_5y": { + "id": "at_least_5y_old", + "short": "5y+", + "long": "At Least 5 Years Old" }, - _6y: { - id: "at_least_6y_old", - short: "6y+", - long: "At Least 6 Years Old", + "_6y": { + "id": "at_least_6y_old", + "short": "6y+", + "long": "At Least 6 Years Old" }, - _7y: { - id: "at_least_7y_old", - short: "7y+", - long: "At Least 7 Years Old", + "_7y": { + "id": "at_least_7y_old", + "short": "7y+", + "long": "At Least 7 Years Old" }, - _8y: { - id: "at_least_8y_old", - short: "8y+", - long: "At Least 8 Years Old", + "_8y": { + "id": "at_least_8y_old", + "short": "8y+", + "long": "At Least 8 Years Old" }, - _10y: { - id: "at_least_10y_old", - short: "10y+", - long: "At Least 10 Years Old", - }, - _12y: { - id: "at_least_12y_old", - short: "12y+", - long: "At Least 12 Years Old", + "_10y": { + "id": "at_least_10y_old", + "short": "10y+", + "long": "At Least 10 Years Old" }, + "_12y": { + "id": "at_least_12y_old", + "short": "12y+", + "long": "At Least 12 Years Old" + } }); AMOUNT_RANGE_NAMES = /** @type {const} */ ({ - _0sats: { - id: "with_0sats", - short: "0 sats", - long: "0 Sats", + "_0sats": { + "id": "with_0sats", + "short": "0 sats", + "long": "0 Sats" }, - _1satTo10sats: { - id: "above_1sat_under_10sats", - short: "1-10 sats", - long: "1 to 10 Sats", + "_1satTo10sats": { + "id": "above_1sat_under_10sats", + "short": "1-10 sats", + "long": "1 to 10 Sats" }, - _10satsTo100sats: { - id: "above_10sats_under_100sats", - short: "10-100 sats", - long: "10 to 100 Sats", + "_10satsTo100sats": { + "id": "above_10sats_under_100sats", + "short": "10-100 sats", + "long": "10 to 100 Sats" }, - _100satsTo1kSats: { - id: "above_100sats_under_1k_sats", - short: "100-1k sats", - long: "100 to 1K Sats", + "_100satsTo1kSats": { + "id": "above_100sats_under_1k_sats", + "short": "100-1k sats", + "long": "100 to 1K Sats" }, - _1kSatsTo10kSats: { - id: "above_1k_sats_under_10k_sats", - short: "1k-10k sats", - long: "1K to 10K Sats", + "_1kSatsTo10kSats": { + "id": "above_1k_sats_under_10k_sats", + "short": "1k-10k sats", + "long": "1K to 10K Sats" }, - _10kSatsTo100kSats: { - id: "above_10k_sats_under_100k_sats", - short: "10k-100k sats", - long: "10K to 100K Sats", + "_10kSatsTo100kSats": { + "id": "above_10k_sats_under_100k_sats", + "short": "10k-100k sats", + "long": "10K to 100K Sats" }, - _100kSatsTo1mSats: { - id: "above_100k_sats_under_1m_sats", - short: "100k-1M sats", - long: "100K to 1M Sats", + "_100kSatsTo1mSats": { + "id": "above_100k_sats_under_1m_sats", + "short": "100k-1M sats", + "long": "100K to 1M Sats" }, - _1mSatsTo10mSats: { - id: "above_1m_sats_under_10m_sats", - short: "1M-10M sats", - long: "1M to 10M Sats", + "_1mSatsTo10mSats": { + "id": "above_1m_sats_under_10m_sats", + "short": "1M-10M sats", + "long": "1M to 10M Sats" }, - _10mSatsTo1btc: { - id: "above_10m_sats_under_1btc", - short: "0.1-1 BTC", - long: "0.1 to 1 BTC", + "_10mSatsTo1btc": { + "id": "above_10m_sats_under_1btc", + "short": "0.1-1 BTC", + "long": "0.1 to 1 BTC" }, - _1btcTo10btc: { - id: "above_1btc_under_10btc", - short: "1-10 BTC", - long: "1 to 10 BTC", + "_1btcTo10btc": { + "id": "above_1btc_under_10btc", + "short": "1-10 BTC", + "long": "1 to 10 BTC" }, - _10btcTo100btc: { - id: "above_10btc_under_100btc", - short: "10-100 BTC", - long: "10 to 100 BTC", + "_10btcTo100btc": { + "id": "above_10btc_under_100btc", + "short": "10-100 BTC", + "long": "10 to 100 BTC" }, - _100btcTo1kBtc: { - id: "above_100btc_under_1k_btc", - short: "100-1k BTC", - long: "100 to 1K BTC", + "_100btcTo1kBtc": { + "id": "above_100btc_under_1k_btc", + "short": "100-1k BTC", + "long": "100 to 1K BTC" }, - _1kBtcTo10kBtc: { - id: "above_1k_btc_under_10k_btc", - short: "1k-10k BTC", - long: "1K to 10K BTC", + "_1kBtcTo10kBtc": { + "id": "above_1k_btc_under_10k_btc", + "short": "1k-10k BTC", + "long": "1K to 10K BTC" }, - _10kBtcTo100kBtc: { - id: "above_10k_btc_under_100k_btc", - short: "10k-100k BTC", - long: "10K to 100K BTC", - }, - _100kBtcOrMore: { - id: "above_100k_btc", - short: "100k+ BTC", - long: "100K+ BTC", + "_10kBtcTo100kBtc": { + "id": "above_10k_btc_under_100k_btc", + "short": "10k-100k BTC", + "long": "10K to 100K BTC" }, + "_100kBtcOrMore": { + "id": "above_100k_btc", + "short": "100k+ BTC", + "long": "100K+ BTC" + } }); GE_AMOUNT_NAMES = /** @type {const} */ ({ - _1sat: { - id: "above_1sat", - short: "1+ sats", - long: "Above 1 Sat", + "_1sat": { + "id": "above_1sat", + "short": "1+ sats", + "long": "Above 1 Sat" }, - _10sats: { - id: "above_10sats", - short: "10+ sats", - long: "Above 10 Sats", + "_10sats": { + "id": "above_10sats", + "short": "10+ sats", + "long": "Above 10 Sats" }, - _100sats: { - id: "above_100sats", - short: "100+ sats", - long: "Above 100 Sats", + "_100sats": { + "id": "above_100sats", + "short": "100+ sats", + "long": "Above 100 Sats" }, - _1kSats: { - id: "above_1k_sats", - short: "1k+ sats", - long: "Above 1K Sats", + "_1kSats": { + "id": "above_1k_sats", + "short": "1k+ sats", + "long": "Above 1K Sats" }, - _10kSats: { - id: "above_10k_sats", - short: "10k+ sats", - long: "Above 10K Sats", + "_10kSats": { + "id": "above_10k_sats", + "short": "10k+ sats", + "long": "Above 10K Sats" }, - _100kSats: { - id: "above_100k_sats", - short: "100k+ sats", - long: "Above 100K Sats", + "_100kSats": { + "id": "above_100k_sats", + "short": "100k+ sats", + "long": "Above 100K Sats" }, - _1mSats: { - id: "above_1m_sats", - short: "1M+ sats", - long: "Above 1M Sats", + "_1mSats": { + "id": "above_1m_sats", + "short": "1M+ sats", + "long": "Above 1M Sats" }, - _10mSats: { - id: "above_10m_sats", - short: "0.1+ BTC", - long: "Above 0.1 BTC", + "_10mSats": { + "id": "above_10m_sats", + "short": "0.1+ BTC", + "long": "Above 0.1 BTC" }, - _1btc: { - id: "above_1btc", - short: "1+ BTC", - long: "Above 1 BTC", + "_1btc": { + "id": "above_1btc", + "short": "1+ BTC", + "long": "Above 1 BTC" }, - _10btc: { - id: "above_10btc", - short: "10+ BTC", - long: "Above 10 BTC", + "_10btc": { + "id": "above_10btc", + "short": "10+ BTC", + "long": "Above 10 BTC" }, - _100btc: { - id: "above_100btc", - short: "100+ BTC", - long: "Above 100 BTC", + "_100btc": { + "id": "above_100btc", + "short": "100+ BTC", + "long": "Above 100 BTC" }, - _1kBtc: { - id: "above_1k_btc", - short: "1k+ BTC", - long: "Above 1K BTC", - }, - _10kBtc: { - id: "above_10k_btc", - short: "10k+ BTC", - long: "Above 10K BTC", + "_1kBtc": { + "id": "above_1k_btc", + "short": "1k+ BTC", + "long": "Above 1K BTC" }, + "_10kBtc": { + "id": "above_10k_btc", + "short": "10k+ BTC", + "long": "Above 10K BTC" + } }); LT_AMOUNT_NAMES = /** @type {const} */ ({ - _10sats: { - id: "under_10sats", - short: "<10 sats", - long: "Under 10 Sats", + "_10sats": { + "id": "under_10sats", + "short": "<10 sats", + "long": "Under 10 Sats" }, - _100sats: { - id: "under_100sats", - short: "<100 sats", - long: "Under 100 Sats", + "_100sats": { + "id": "under_100sats", + "short": "<100 sats", + "long": "Under 100 Sats" }, - _1kSats: { - id: "under_1k_sats", - short: "<1k sats", - long: "Under 1K Sats", + "_1kSats": { + "id": "under_1k_sats", + "short": "<1k sats", + "long": "Under 1K Sats" }, - _10kSats: { - id: "under_10k_sats", - short: "<10k sats", - long: "Under 10K Sats", + "_10kSats": { + "id": "under_10k_sats", + "short": "<10k sats", + "long": "Under 10K Sats" }, - _100kSats: { - id: "under_100k_sats", - short: "<100k sats", - long: "Under 100K Sats", + "_100kSats": { + "id": "under_100k_sats", + "short": "<100k sats", + "long": "Under 100K Sats" }, - _1mSats: { - id: "under_1m_sats", - short: "<1M sats", - long: "Under 1M Sats", + "_1mSats": { + "id": "under_1m_sats", + "short": "<1M sats", + "long": "Under 1M Sats" }, - _10mSats: { - id: "under_10m_sats", - short: "<0.1 BTC", - long: "Under 0.1 BTC", + "_10mSats": { + "id": "under_10m_sats", + "short": "<0.1 BTC", + "long": "Under 0.1 BTC" }, - _1btc: { - id: "under_1btc", - short: "<1 BTC", - long: "Under 1 BTC", + "_1btc": { + "id": "under_1btc", + "short": "<1 BTC", + "long": "Under 1 BTC" }, - _10btc: { - id: "under_10btc", - short: "<10 BTC", - long: "Under 10 BTC", + "_10btc": { + "id": "under_10btc", + "short": "<10 BTC", + "long": "Under 10 BTC" }, - _100btc: { - id: "under_100btc", - short: "<100 BTC", - long: "Under 100 BTC", + "_100btc": { + "id": "under_100btc", + "short": "<100 BTC", + "long": "Under 100 BTC" }, - _1kBtc: { - id: "under_1k_btc", - short: "<1k BTC", - long: "Under 1K BTC", + "_1kBtc": { + "id": "under_1k_btc", + "short": "<1k BTC", + "long": "Under 1K BTC" }, - _10kBtc: { - id: "under_10k_btc", - short: "<10k BTC", - long: "Under 10K BTC", - }, - _100kBtc: { - id: "under_100k_btc", - short: "<100k BTC", - long: "Under 100K BTC", + "_10kBtc": { + "id": "under_10k_btc", + "short": "<10k BTC", + "long": "Under 10K BTC" }, + "_100kBtc": { + "id": "under_100k_btc", + "short": "<100k BTC", + "long": "Under 100K BTC" + } }); /** @@ -8635,7 +5089,7 @@ class BrkClient extends BrkClientBase { constructor(options) { super(options); /** @type {MetricsTree} */ - this.metrics = this._buildTree(""); + this.metrics = this._buildTree(''); } /** @@ -8646,6129 +5100,1007 @@ class BrkClient extends BrkClientBase { _buildTree(basePath) { return { addresses: { - firstP2aaddressindex: createMetricPattern11( - this, - "first_p2aaddressindex", - ), - firstP2pk33addressindex: createMetricPattern11( - this, - "first_p2pk33addressindex", - ), - firstP2pk65addressindex: createMetricPattern11( - this, - "first_p2pk65addressindex", - ), - firstP2pkhaddressindex: createMetricPattern11( - this, - "first_p2pkhaddressindex", - ), - firstP2shaddressindex: createMetricPattern11( - this, - "first_p2shaddressindex", - ), - firstP2traddressindex: createMetricPattern11( - this, - "first_p2traddressindex", - ), - firstP2wpkhaddressindex: createMetricPattern11( - this, - "first_p2wpkhaddressindex", - ), - firstP2wshaddressindex: createMetricPattern11( - this, - "first_p2wshaddressindex", - ), - p2abytes: createMetricPattern16(this, "p2abytes"), - p2pk33bytes: createMetricPattern18(this, "p2pk33bytes"), - p2pk65bytes: createMetricPattern19(this, "p2pk65bytes"), - p2pkhbytes: createMetricPattern20(this, "p2pkhbytes"), - p2shbytes: createMetricPattern21(this, "p2shbytes"), - p2trbytes: createMetricPattern22(this, "p2trbytes"), - p2wpkhbytes: createMetricPattern23(this, "p2wpkhbytes"), - p2wshbytes: createMetricPattern24(this, "p2wshbytes"), + firstP2aaddressindex: createMetricPattern11(this, 'first_p2aaddressindex'), + firstP2pk33addressindex: createMetricPattern11(this, 'first_p2pk33addressindex'), + firstP2pk65addressindex: createMetricPattern11(this, 'first_p2pk65addressindex'), + firstP2pkhaddressindex: createMetricPattern11(this, 'first_p2pkhaddressindex'), + firstP2shaddressindex: createMetricPattern11(this, 'first_p2shaddressindex'), + firstP2traddressindex: createMetricPattern11(this, 'first_p2traddressindex'), + firstP2wpkhaddressindex: createMetricPattern11(this, 'first_p2wpkhaddressindex'), + firstP2wshaddressindex: createMetricPattern11(this, 'first_p2wshaddressindex'), + p2abytes: createMetricPattern16(this, 'p2abytes'), + p2pk33bytes: createMetricPattern18(this, 'p2pk33bytes'), + p2pk65bytes: createMetricPattern19(this, 'p2pk65bytes'), + p2pkhbytes: createMetricPattern20(this, 'p2pkhbytes'), + p2shbytes: createMetricPattern21(this, 'p2shbytes'), + p2trbytes: createMetricPattern22(this, 'p2trbytes'), + p2wpkhbytes: createMetricPattern23(this, 'p2wpkhbytes'), + p2wshbytes: createMetricPattern24(this, 'p2wshbytes'), }, blocks: { - blockhash: createMetricPattern11(this, "blockhash"), + blockhash: createMetricPattern11(this, 'blockhash'), count: { - _1mBlockCount: createMetricPattern1(this, "1m_block_count"), - _1mStart: createMetricPattern11(this, "1m_start"), - _1wBlockCount: createMetricPattern1(this, "1w_block_count"), - _1wStart: createMetricPattern11(this, "1w_start"), - _1yBlockCount: createMetricPattern1(this, "1y_block_count"), - _1yStart: createMetricPattern11(this, "1y_start"), - _24hBlockCount: createMetricPattern1(this, "24h_block_count"), - _24hStart: createMetricPattern11(this, "24h_start"), - blockCount: createBlockCountPattern(this, "block_count"), - blockCountTarget: createMetricPattern4(this, "block_count_target"), + _1mBlockCount: createMetricPattern1(this, '1m_block_count'), + _1mStart: createMetricPattern11(this, '1m_start'), + _1wBlockCount: createMetricPattern1(this, '1w_block_count'), + _1wStart: createMetricPattern11(this, '1w_start'), + _1yBlockCount: createMetricPattern1(this, '1y_block_count'), + _1yStart: createMetricPattern11(this, '1y_start'), + _24hBlockCount: createMetricPattern1(this, '24h_block_count'), + _24hStart: createMetricPattern11(this, '24h_start'), + blockCount: createBlockCountPattern(this, 'block_count'), + blockCountTarget: createMetricPattern4(this, 'block_count_target'), }, difficulty: { - adjustment: createMetricPattern1(this, "difficulty_adjustment"), - asHash: createMetricPattern1(this, "difficulty_as_hash"), - blocksBeforeNextAdjustment: createMetricPattern1( - this, - "blocks_before_next_difficulty_adjustment", - ), - daysBeforeNextAdjustment: createMetricPattern1( - this, - "days_before_next_difficulty_adjustment", - ), - epoch: createMetricPattern4(this, "difficultyepoch"), - raw: createMetricPattern1(this, "difficulty"), + adjustment: createMetricPattern1(this, 'difficulty_adjustment'), + asHash: createMetricPattern1(this, 'difficulty_as_hash'), + blocksBeforeNextAdjustment: createMetricPattern1(this, 'blocks_before_next_difficulty_adjustment'), + daysBeforeNextAdjustment: createMetricPattern1(this, 'days_before_next_difficulty_adjustment'), + epoch: createMetricPattern4(this, 'difficultyepoch'), + raw: createMetricPattern1(this, 'difficulty'), }, - fullness: createFullnessPattern(this, "block_fullness"), + fullness: createFullnessPattern(this, 'block_fullness'), halving: { - blocksBeforeNextHalving: createMetricPattern1( - this, - "blocks_before_next_halving", - ), - daysBeforeNextHalving: createMetricPattern1( - this, - "days_before_next_halving", - ), - epoch: createMetricPattern4(this, "halvingepoch"), + blocksBeforeNextHalving: createMetricPattern1(this, 'blocks_before_next_halving'), + daysBeforeNextHalving: createMetricPattern1(this, 'days_before_next_halving'), + epoch: createMetricPattern4(this, 'halvingepoch'), }, - interval: createFullnessPattern(this, "block_interval"), + interval: createFullnessPattern(this, 'block_interval'), mining: { - hashPricePhs: createMetricPattern1(this, "hash_price_phs"), - hashPricePhsMin: createMetricPattern1(this, "hash_price_phs_min"), - hashPriceRebound: createMetricPattern1(this, "hash_price_rebound"), - hashPriceThs: createMetricPattern1(this, "hash_price_ths"), - hashPriceThsMin: createMetricPattern1(this, "hash_price_ths_min"), - hashRate: createMetricPattern1(this, "hash_rate"), - hashRate1mSma: createMetricPattern4(this, "hash_rate_1m_sma"), - hashRate1wSma: createMetricPattern4(this, "hash_rate_1w_sma"), - hashRate1ySma: createMetricPattern4(this, "hash_rate_1y_sma"), - hashRate2mSma: createMetricPattern4(this, "hash_rate_2m_sma"), - hashValuePhs: createMetricPattern1(this, "hash_value_phs"), - hashValuePhsMin: createMetricPattern1(this, "hash_value_phs_min"), - hashValueRebound: createMetricPattern1(this, "hash_value_rebound"), - hashValueThs: createMetricPattern1(this, "hash_value_ths"), - hashValueThsMin: createMetricPattern1(this, "hash_value_ths_min"), + hashPricePhs: createMetricPattern1(this, 'hash_price_phs'), + hashPricePhsMin: createMetricPattern1(this, 'hash_price_phs_min'), + hashPriceRebound: createMetricPattern1(this, 'hash_price_rebound'), + hashPriceThs: createMetricPattern1(this, 'hash_price_ths'), + hashPriceThsMin: createMetricPattern1(this, 'hash_price_ths_min'), + hashRate: createMetricPattern1(this, 'hash_rate'), + hashRate1mSma: createMetricPattern4(this, 'hash_rate_1m_sma'), + hashRate1wSma: createMetricPattern4(this, 'hash_rate_1w_sma'), + hashRate1ySma: createMetricPattern4(this, 'hash_rate_1y_sma'), + hashRate2mSma: createMetricPattern4(this, 'hash_rate_2m_sma'), + hashValuePhs: createMetricPattern1(this, 'hash_value_phs'), + hashValuePhsMin: createMetricPattern1(this, 'hash_value_phs_min'), + hashValueRebound: createMetricPattern1(this, 'hash_value_rebound'), + hashValueThs: createMetricPattern1(this, 'hash_value_ths'), + hashValueThsMin: createMetricPattern1(this, 'hash_value_ths_min'), }, rewards: { _24hCoinbaseSum: { - bitcoin: createMetricPattern11(this, "24h_coinbase_sum_btc"), - dollars: createMetricPattern11(this, "24h_coinbase_sum_usd"), - sats: createMetricPattern11(this, "24h_coinbase_sum"), + bitcoin: createMetricPattern11(this, '24h_coinbase_sum_btc'), + dollars: createMetricPattern11(this, '24h_coinbase_sum_usd'), + sats: createMetricPattern11(this, '24h_coinbase_sum'), }, - coinbase: createCoinbasePattern(this, "coinbase"), - feeDominance: createMetricPattern6(this, "fee_dominance"), - subsidy: createCoinbasePattern(this, "subsidy"), - subsidyDominance: createMetricPattern6(this, "subsidy_dominance"), - subsidyUsd1ySma: createMetricPattern4(this, "subsidy_usd_1y_sma"), - unclaimedRewards: createUnclaimedRewardsPattern( - this, - "unclaimed_rewards", - ), + coinbase: createCoinbasePattern(this, 'coinbase'), + feeDominance: createMetricPattern6(this, 'fee_dominance'), + subsidy: createCoinbasePattern(this, 'subsidy'), + subsidyDominance: createMetricPattern6(this, 'subsidy_dominance'), + subsidyUsd1ySma: createMetricPattern4(this, 'subsidy_usd_1y_sma'), + unclaimedRewards: createUnclaimedRewardsPattern(this, 'unclaimed_rewards'), }, size: { - average: createMetricPattern2(this, "block_size_average"), - cumulative: createMetricPattern1(this, "block_size_cumulative"), - max: createMetricPattern2(this, "block_size_max"), - median: createMetricPattern6(this, "block_size_median"), - min: createMetricPattern2(this, "block_size_min"), - pct10: createMetricPattern6(this, "block_size_pct10"), - pct25: createMetricPattern6(this, "block_size_pct25"), - pct75: createMetricPattern6(this, "block_size_pct75"), - pct90: createMetricPattern6(this, "block_size_pct90"), - sum: createMetricPattern2(this, "block_size_sum"), + average: createMetricPattern2(this, 'block_size_average'), + cumulative: createMetricPattern1(this, 'block_size_cumulative'), + max: createMetricPattern2(this, 'block_size_max'), + median: createMetricPattern6(this, 'block_size_median'), + min: createMetricPattern2(this, 'block_size_min'), + pct10: createMetricPattern6(this, 'block_size_pct10'), + pct25: createMetricPattern6(this, 'block_size_pct25'), + pct75: createMetricPattern6(this, 'block_size_pct75'), + pct90: createMetricPattern6(this, 'block_size_pct90'), + sum: createMetricPattern2(this, 'block_size_sum'), }, time: { - date: createMetricPattern11(this, "date"), - timestamp: createMetricPattern1(this, "timestamp"), - timestampMonotonic: createMetricPattern11( - this, - "timestamp_monotonic", - ), + date: createMetricPattern11(this, 'date'), + timestamp: createMetricPattern1(this, 'timestamp'), + timestampMonotonic: createMetricPattern11(this, 'timestamp_monotonic'), }, - totalSize: createMetricPattern11(this, "total_size"), - vbytes: createDollarsPattern(this, "block_vbytes"), - weight: createDollarsPattern(this, "block_weight"), + totalSize: createMetricPattern11(this, 'total_size'), + vbytes: createDollarsPattern(this, 'block_vbytes'), + weight: createDollarsPattern(this, 'block_weight'), }, cointime: { activity: { - activityToVaultednessRatio: createMetricPattern1( - this, - "activity_to_vaultedness_ratio", - ), - coinblocksCreated: createBlockCountPattern( - this, - "coinblocks_created", - ), - coinblocksStored: createBlockCountPattern(this, "coinblocks_stored"), - liveliness: createMetricPattern1(this, "liveliness"), - vaultedness: createMetricPattern1(this, "vaultedness"), + activityToVaultednessRatio: createMetricPattern1(this, 'activity_to_vaultedness_ratio'), + coinblocksCreated: createBlockCountPattern(this, 'coinblocks_created'), + coinblocksStored: createBlockCountPattern(this, 'coinblocks_stored'), + liveliness: createMetricPattern1(this, 'liveliness'), + vaultedness: createMetricPattern1(this, 'vaultedness'), }, adjusted: { - cointimeAdjInflationRate: createMetricPattern4( - this, - "cointime_adj_inflation_rate", - ), - cointimeAdjTxBtcVelocity: createMetricPattern4( - this, - "cointime_adj_tx_btc_velocity", - ), - cointimeAdjTxUsdVelocity: createMetricPattern4( - this, - "cointime_adj_tx_usd_velocity", - ), + cointimeAdjInflationRate: createMetricPattern4(this, 'cointime_adj_inflation_rate'), + cointimeAdjTxBtcVelocity: createMetricPattern4(this, 'cointime_adj_tx_btc_velocity'), + cointimeAdjTxUsdVelocity: createMetricPattern4(this, 'cointime_adj_tx_usd_velocity'), }, cap: { - activeCap: createMetricPattern1(this, "active_cap"), - cointimeCap: createMetricPattern1(this, "cointime_cap"), - investorCap: createMetricPattern1(this, "investor_cap"), - thermoCap: createMetricPattern1(this, "thermo_cap"), - vaultedCap: createMetricPattern1(this, "vaulted_cap"), + activeCap: createMetricPattern1(this, 'active_cap'), + cointimeCap: createMetricPattern1(this, 'cointime_cap'), + investorCap: createMetricPattern1(this, 'investor_cap'), + thermoCap: createMetricPattern1(this, 'thermo_cap'), + vaultedCap: createMetricPattern1(this, 'vaulted_cap'), }, pricing: { - activePrice: createMetricPattern1(this, "active_price"), - 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: { - 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: { - 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: { - 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"), - }, + activePrice: createMetricPattern1(this, 'active_price'), + activePriceRatio: createActivePriceRatioPattern(this, 'active_price_ratio'), + cointimePrice: createMetricPattern1(this, 'cointime_price'), + cointimePriceRatio: createActivePriceRatioPattern(this, 'cointime_price_ratio'), + trueMarketMean: createMetricPattern1(this, 'true_market_mean'), + trueMarketMeanRatio: createActivePriceRatioPattern(this, 'true_market_mean_ratio'), + vaultedPrice: createMetricPattern1(this, 'vaulted_price'), + vaultedPriceRatio: createActivePriceRatioPattern(this, 'vaulted_price_ratio'), }, supply: { - activeSupply: createActiveSupplyPattern(this, "active_supply"), - vaultedSupply: createActiveSupplyPattern(this, "vaulted_supply"), + activeSupply: createActiveSupplyPattern(this, 'active_supply'), + vaultedSupply: createActiveSupplyPattern(this, 'vaulted_supply'), }, value: { - cointimeValueCreated: createBlockCountPattern( - this, - "cointime_value_created", - ), - cointimeValueDestroyed: createBlockCountPattern( - this, - "cointime_value_destroyed", - ), - cointimeValueStored: createBlockCountPattern( - this, - "cointime_value_stored", - ), + cointimeValueCreated: createBlockCountPattern(this, 'cointime_value_created'), + cointimeValueDestroyed: createBlockCountPattern(this, 'cointime_value_destroyed'), + cointimeValueStored: createBlockCountPattern(this, 'cointime_value_stored'), }, }, constants: { - constant0: createMetricPattern1(this, "constant_0"), - constant1: createMetricPattern1(this, "constant_1"), - constant100: createMetricPattern1(this, "constant_100"), - constant2: createMetricPattern1(this, "constant_2"), - constant20: createMetricPattern1(this, "constant_20"), - constant3: createMetricPattern1(this, "constant_3"), - constant30: createMetricPattern1(this, "constant_30"), - constant382: createMetricPattern1(this, "constant_38_2"), - constant4: createMetricPattern1(this, "constant_4"), - constant50: createMetricPattern1(this, "constant_50"), - constant600: createMetricPattern1(this, "constant_600"), - constant618: createMetricPattern1(this, "constant_61_8"), - constant70: createMetricPattern1(this, "constant_70"), - constant80: createMetricPattern1(this, "constant_80"), - constantMinus1: createMetricPattern1(this, "constant_minus_1"), - constantMinus2: createMetricPattern1(this, "constant_minus_2"), - constantMinus3: createMetricPattern1(this, "constant_minus_3"), - constantMinus4: createMetricPattern1(this, "constant_minus_4"), + constant0: createMetricPattern1(this, 'constant_0'), + constant1: createMetricPattern1(this, 'constant_1'), + constant100: createMetricPattern1(this, 'constant_100'), + constant2: createMetricPattern1(this, 'constant_2'), + constant20: createMetricPattern1(this, 'constant_20'), + constant3: createMetricPattern1(this, 'constant_3'), + constant30: createMetricPattern1(this, 'constant_30'), + constant382: createMetricPattern1(this, 'constant_38_2'), + constant4: createMetricPattern1(this, 'constant_4'), + constant50: createMetricPattern1(this, 'constant_50'), + constant600: createMetricPattern1(this, 'constant_600'), + constant618: createMetricPattern1(this, 'constant_61_8'), + constant70: createMetricPattern1(this, 'constant_70'), + constant80: createMetricPattern1(this, 'constant_80'), + constantMinus1: createMetricPattern1(this, 'constant_minus_1'), + constantMinus2: createMetricPattern1(this, 'constant_minus_2'), + constantMinus3: createMetricPattern1(this, 'constant_minus_3'), + constantMinus4: createMetricPattern1(this, 'constant_minus_4'), }, distribution: { - addrCount: createAddrCountPattern(this, "addr_count"), + addrCount: createAddrCountPattern(this, 'addr_count'), addressCohorts: { amountRange: { - _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", - ), - }, + _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'), }, geAmount: { - _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"), - }, + _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'), }, ltAmount: { - _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"), - }, + _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'), }, }, addressesData: { - empty: createMetricPattern32(this, "emptyaddressdata"), - loaded: createMetricPattern31(this, "loadedaddressdata"), + empty: createMetricPattern32(this, 'emptyaddressdata'), + loaded: createMetricPattern31(this, 'loadedaddressdata'), }, anyAddressIndexes: { - p2a: createMetricPattern16(this, "anyaddressindex"), - p2pk33: createMetricPattern18(this, "anyaddressindex"), - p2pk65: createMetricPattern19(this, "anyaddressindex"), - p2pkh: createMetricPattern20(this, "anyaddressindex"), - p2sh: createMetricPattern21(this, "anyaddressindex"), - p2tr: createMetricPattern22(this, "anyaddressindex"), - p2wpkh: createMetricPattern23(this, "anyaddressindex"), - p2wsh: createMetricPattern24(this, "anyaddressindex"), + p2a: createMetricPattern16(this, 'anyaddressindex'), + p2pk33: createMetricPattern18(this, 'anyaddressindex'), + p2pk65: createMetricPattern19(this, 'anyaddressindex'), + p2pkh: createMetricPattern20(this, 'anyaddressindex'), + p2sh: createMetricPattern21(this, 'anyaddressindex'), + p2tr: createMetricPattern22(this, 'anyaddressindex'), + p2wpkh: createMetricPattern23(this, 'anyaddressindex'), + p2wsh: createMetricPattern24(this, 'anyaddressindex'), }, - chainState: createMetricPattern11(this, "chain"), - emptyAddrCount: createAddrCountPattern(this, "empty_addr_count"), - emptyaddressindex: createMetricPattern32(this, "emptyaddressindex"), - loadedaddressindex: createMetricPattern31(this, "loadedaddressindex"), + chainState: createMetricPattern11(this, 'chain'), + emptyAddrCount: createAddrCountPattern(this, 'empty_addr_count'), + emptyaddressindex: createMetricPattern32(this, 'emptyaddressindex'), + loadedaddressindex: createMetricPattern31(this, 'loadedaddressindex'), utxoCohorts: { ageRange: { - _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"), - }, + _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'), }, all: { - activity: { - coinblocksDestroyed: createBlockCountPattern( - this, - "coinblocks_destroyed", - ), - coindaysDestroyed: createBlockCountPattern( - this, - "coindays_destroyed", - ), - satblocksDestroyed: createMetricPattern11( - this, - "satblocks_destroyed", - ), - satdaysDestroyed: createMetricPattern11( - this, - "satdays_destroyed", - ), - sent: createUnclaimedRewardsPattern(this, "sent"), - }, + activity: createActivityPattern2(this, ''), costBasis: { - max: createMetricPattern1(this, "max_cost_basis"), - min: createMetricPattern1(this, "min_cost_basis"), - percentiles: createPercentilesPattern(this, "cost_basis"), - }, - outputs: createOutputsPattern(this, "utxo_count"), - 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"), + max: createMetricPattern1(this, 'max_cost_basis'), + min: createMetricPattern1(this, 'min_cost_basis'), + percentiles: createPercentilesPattern(this, 'cost_basis'), }, + outputs: createOutputsPattern(this, 'utxo_count'), + realized: createRealizedPattern3(this, ''), relative: { - negUnrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1( - this, - "neg_unrealized_loss_rel_to_own_total_unrealized_pnl", - ), - netUnrealizedPnlRelToOwnTotalUnrealizedPnl: createMetricPattern1( - this, - "net_unrealized_pnl_rel_to_own_total_unrealized_pnl", - ), - supplyInLossRelToOwnSupply: createMetricPattern1( - this, - "supply_in_loss_rel_to_own_supply", - ), - supplyInProfitRelToOwnSupply: createMetricPattern1( - this, - "supply_in_profit_rel_to_own_supply", - ), - unrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1( - this, - "unrealized_loss_rel_to_own_total_unrealized_pnl", - ), - unrealizedProfitRelToOwnTotalUnrealizedPnl: createMetricPattern1( - this, - "unrealized_profit_rel_to_own_total_unrealized_pnl", - ), - }, - supply: createSupplyPattern2(this, "supply"), - 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"), + negUnrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1(this, 'neg_unrealized_loss_rel_to_own_total_unrealized_pnl'), + netUnrealizedPnlRelToOwnTotalUnrealizedPnl: createMetricPattern1(this, 'net_unrealized_pnl_rel_to_own_total_unrealized_pnl'), + supplyInLossRelToOwnSupply: createMetricPattern1(this, 'supply_in_loss_rel_to_own_supply'), + supplyInProfitRelToOwnSupply: createMetricPattern1(this, 'supply_in_profit_rel_to_own_supply'), + unrealizedLossRelToOwnTotalUnrealizedPnl: createMetricPattern1(this, 'unrealized_loss_rel_to_own_total_unrealized_pnl'), + unrealizedProfitRelToOwnTotalUnrealizedPnl: createMetricPattern1(this, 'unrealized_profit_rel_to_own_total_unrealized_pnl'), }, + supply: createSupplyPattern2(this, 'supply'), + unrealized: createUnrealizedPattern(this, ''), }, amountRange: { - _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", - ), - }, + _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'), }, epoch: { - _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"), - }, + _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'), }, geAmount: { - _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"), - }, + _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'), }, ltAmount: { - _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"), - }, + _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'), }, maxAge: { - _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"), - }, + _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'), }, minAge: { - _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", - ), - }, + _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'), }, term: { long: { - activity: createActivityPattern2(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"), - supply: createSupplyPattern2(this, "lth_supply"), - unrealized: createUnrealizedPattern(this, "lth"), + activity: createActivityPattern2(this, 'lth'), + costBasis: createCostBasisPattern2(this, 'lth'), + outputs: createOutputsPattern(this, 'lth_utxo_count'), + realized: createRealizedPattern2(this, 'lth'), + relative: createRelativePattern5(this, 'lth'), + supply: createSupplyPattern2(this, 'lth_supply'), + unrealized: createUnrealizedPattern(this, 'lth'), }, short: { - activity: createActivityPattern2(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"), - supply: createSupplyPattern2(this, "sth_supply"), - unrealized: createUnrealizedPattern(this, "sth"), + activity: createActivityPattern2(this, 'sth'), + costBasis: createCostBasisPattern2(this, 'sth'), + outputs: createOutputsPattern(this, 'sth_utxo_count'), + realized: createRealizedPattern3(this, 'sth'), + relative: createRelativePattern5(this, 'sth'), + supply: createSupplyPattern2(this, 'sth_supply'), + unrealized: createUnrealizedPattern(this, 'sth'), }, }, type: { - 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"), - }, + 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'), }, year: { - _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"), - }, + _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'), }, }, }, indexes: { address: { empty: { - identity: createMetricPattern9(this, "emptyoutputindex"), + identity: createMetricPattern9(this, 'emptyoutputindex'), }, opreturn: { - identity: createMetricPattern14(this, "opreturnindex"), + identity: createMetricPattern14(this, 'opreturnindex'), }, p2a: { - identity: createMetricPattern16(this, "p2aaddressindex"), + identity: createMetricPattern16(this, 'p2aaddressindex'), }, p2ms: { - identity: createMetricPattern17(this, "p2msoutputindex"), + identity: createMetricPattern17(this, 'p2msoutputindex'), }, p2pk33: { - identity: createMetricPattern18(this, "p2pk33addressindex"), + identity: createMetricPattern18(this, 'p2pk33addressindex'), }, p2pk65: { - identity: createMetricPattern19(this, "p2pk65addressindex"), + identity: createMetricPattern19(this, 'p2pk65addressindex'), }, p2pkh: { - identity: createMetricPattern20(this, "p2pkhaddressindex"), + identity: createMetricPattern20(this, 'p2pkhaddressindex'), }, p2sh: { - identity: createMetricPattern21(this, "p2shaddressindex"), + identity: createMetricPattern21(this, 'p2shaddressindex'), }, p2tr: { - identity: createMetricPattern22(this, "p2traddressindex"), + identity: createMetricPattern22(this, 'p2traddressindex'), }, p2wpkh: { - identity: createMetricPattern23(this, "p2wpkhaddressindex"), + identity: createMetricPattern23(this, 'p2wpkhaddressindex'), }, p2wsh: { - identity: createMetricPattern24(this, "p2wshaddressindex"), + identity: createMetricPattern24(this, 'p2wshaddressindex'), }, unknown: { - identity: createMetricPattern28(this, "unknownoutputindex"), + identity: createMetricPattern28(this, 'unknownoutputindex'), }, }, dateindex: { - date: createMetricPattern6(this, "date"), - firstHeight: createMetricPattern6(this, "first_height"), - heightCount: createMetricPattern6(this, "height_count"), - identity: createMetricPattern6(this, "dateindex"), - monthindex: createMetricPattern6(this, "monthindex"), - weekindex: createMetricPattern6(this, "weekindex"), + date: createMetricPattern6(this, 'date'), + firstHeight: createMetricPattern6(this, 'first_height'), + heightCount: createMetricPattern6(this, 'height_count'), + identity: createMetricPattern6(this, 'dateindex'), + monthindex: createMetricPattern6(this, 'monthindex'), + weekindex: createMetricPattern6(this, 'weekindex'), }, decadeindex: { - date: createMetricPattern7(this, "date"), - firstYearindex: createMetricPattern7(this, "first_yearindex"), - identity: createMetricPattern7(this, "decadeindex"), - yearindexCount: createMetricPattern7(this, "yearindex_count"), + date: createMetricPattern7(this, 'date'), + firstYearindex: createMetricPattern7(this, 'first_yearindex'), + identity: createMetricPattern7(this, 'decadeindex'), + yearindexCount: createMetricPattern7(this, 'yearindex_count'), }, difficultyepoch: { - firstHeight: createMetricPattern8(this, "first_height"), - heightCount: createMetricPattern8(this, "height_count"), - identity: createMetricPattern8(this, "difficultyepoch"), + firstHeight: createMetricPattern8(this, 'first_height'), + heightCount: createMetricPattern8(this, 'height_count'), + identity: createMetricPattern8(this, 'difficultyepoch'), }, halvingepoch: { - firstHeight: createMetricPattern10(this, "first_height"), - identity: createMetricPattern10(this, "halvingepoch"), + firstHeight: createMetricPattern10(this, 'first_height'), + identity: createMetricPattern10(this, 'halvingepoch'), }, height: { - dateindex: createMetricPattern11(this, "height_dateindex"), - difficultyepoch: createMetricPattern11(this, "difficultyepoch"), - halvingepoch: createMetricPattern11(this, "halvingepoch"), - identity: createMetricPattern11(this, "height"), - txindexCount: createMetricPattern11(this, "txindex_count"), + dateindex: createMetricPattern11(this, 'height_dateindex'), + difficultyepoch: createMetricPattern11(this, 'difficultyepoch'), + halvingepoch: createMetricPattern11(this, 'halvingepoch'), + identity: createMetricPattern11(this, 'height'), + txindexCount: createMetricPattern11(this, 'txindex_count'), }, monthindex: { - date: createMetricPattern13(this, "date"), - dateindexCount: createMetricPattern13(this, "dateindex_count"), - firstDateindex: createMetricPattern13(this, "first_dateindex"), - identity: createMetricPattern13(this, "monthindex"), - quarterindex: createMetricPattern13(this, "quarterindex"), - semesterindex: createMetricPattern13(this, "semesterindex"), - yearindex: createMetricPattern13(this, "yearindex"), + date: createMetricPattern13(this, 'date'), + dateindexCount: createMetricPattern13(this, 'dateindex_count'), + firstDateindex: createMetricPattern13(this, 'first_dateindex'), + identity: createMetricPattern13(this, 'monthindex'), + quarterindex: createMetricPattern13(this, 'quarterindex'), + semesterindex: createMetricPattern13(this, 'semesterindex'), + yearindex: createMetricPattern13(this, 'yearindex'), }, quarterindex: { - date: createMetricPattern25(this, "date"), - firstMonthindex: createMetricPattern25(this, "first_monthindex"), - identity: createMetricPattern25(this, "quarterindex"), - monthindexCount: createMetricPattern25(this, "monthindex_count"), + date: createMetricPattern25(this, 'date'), + firstMonthindex: createMetricPattern25(this, 'first_monthindex'), + identity: createMetricPattern25(this, 'quarterindex'), + monthindexCount: createMetricPattern25(this, 'monthindex_count'), }, semesterindex: { - date: createMetricPattern26(this, "date"), - firstMonthindex: createMetricPattern26(this, "first_monthindex"), - identity: createMetricPattern26(this, "semesterindex"), - monthindexCount: createMetricPattern26(this, "monthindex_count"), + date: createMetricPattern26(this, 'date'), + firstMonthindex: createMetricPattern26(this, 'first_monthindex'), + identity: createMetricPattern26(this, 'semesterindex'), + monthindexCount: createMetricPattern26(this, 'monthindex_count'), }, txindex: { - identity: createMetricPattern27(this, "txindex"), - inputCount: createMetricPattern27(this, "input_count"), - outputCount: createMetricPattern27(this, "output_count"), + identity: createMetricPattern27(this, 'txindex'), + inputCount: createMetricPattern27(this, 'input_count'), + outputCount: createMetricPattern27(this, 'output_count'), }, txinindex: { - identity: createMetricPattern12(this, "txinindex"), + identity: createMetricPattern12(this, 'txinindex'), }, txoutindex: { - identity: createMetricPattern15(this, "txoutindex"), + identity: createMetricPattern15(this, 'txoutindex'), }, weekindex: { - date: createMetricPattern29(this, "date"), - dateindexCount: createMetricPattern29(this, "dateindex_count"), - firstDateindex: createMetricPattern29(this, "first_dateindex"), - identity: createMetricPattern29(this, "weekindex"), + date: createMetricPattern29(this, 'date'), + dateindexCount: createMetricPattern29(this, 'dateindex_count'), + firstDateindex: createMetricPattern29(this, 'first_dateindex'), + identity: createMetricPattern29(this, 'weekindex'), }, yearindex: { - date: createMetricPattern30(this, "date"), - decadeindex: createMetricPattern30(this, "decadeindex"), - firstMonthindex: createMetricPattern30(this, "first_monthindex"), - identity: createMetricPattern30(this, "yearindex"), - monthindexCount: createMetricPattern30(this, "monthindex_count"), + date: createMetricPattern30(this, 'date'), + decadeindex: createMetricPattern30(this, 'decadeindex'), + firstMonthindex: createMetricPattern30(this, 'first_monthindex'), + identity: createMetricPattern30(this, 'yearindex'), + monthindexCount: createMetricPattern30(this, 'monthindex_count'), }, }, inputs: { - count: createCountPattern2(this, "input_count"), - firstTxinindex: createMetricPattern11(this, "first_txinindex"), - outpoint: createMetricPattern12(this, "outpoint"), - outputtype: createMetricPattern12(this, "outputtype"), + count: createCountPattern2(this, 'input_count'), + firstTxinindex: createMetricPattern11(this, 'first_txinindex'), + outpoint: createMetricPattern12(this, 'outpoint'), + outputtype: createMetricPattern12(this, 'outputtype'), spent: { - txoutindex: createMetricPattern12(this, "txoutindex"), - value: createMetricPattern12(this, "value"), + txoutindex: createMetricPattern12(this, 'txoutindex'), + value: createMetricPattern12(this, 'value'), }, - txindex: createMetricPattern12(this, "txindex"), - typeindex: createMetricPattern12(this, "typeindex"), + txindex: createMetricPattern12(this, 'txindex'), + typeindex: createMetricPattern12(this, 'typeindex'), }, market: { ath: { - daysSincePriceAth: createMetricPattern4(this, "days_since_price_ath"), - maxDaysBetweenPriceAths: createMetricPattern4( - this, - "max_days_between_price_aths", - ), - maxYearsBetweenPriceAths: createMetricPattern4( - this, - "max_years_between_price_aths", - ), - priceAth: createMetricPattern1(this, "price_ath"), - priceDrawdown: createMetricPattern3(this, "price_drawdown"), - yearsSincePriceAth: createMetricPattern4( - this, - "years_since_price_ath", - ), + daysSincePriceAth: createMetricPattern4(this, 'days_since_price_ath'), + maxDaysBetweenPriceAths: createMetricPattern4(this, 'max_days_between_price_aths'), + maxYearsBetweenPriceAths: createMetricPattern4(this, 'max_years_between_price_aths'), + priceAth: createMetricPattern1(this, 'price_ath'), + priceDrawdown: createMetricPattern3(this, 'price_drawdown'), + yearsSincePriceAth: createMetricPattern4(this, 'years_since_price_ath'), }, dca: { - classAveragePrice: createClassAveragePricePattern(this, "dca_class"), - classReturns: { - _2015: createMetricPattern4(this, "dca_class_2015_returns"), - _2016: createMetricPattern4(this, "dca_class_2016_returns"), - _2017: createMetricPattern4(this, "dca_class_2017_returns"), - _2018: createMetricPattern4(this, "dca_class_2018_returns"), - _2019: createMetricPattern4(this, "dca_class_2019_returns"), - _2020: createMetricPattern4(this, "dca_class_2020_returns"), - _2021: createMetricPattern4(this, "dca_class_2021_returns"), - _2022: createMetricPattern4(this, "dca_class_2022_returns"), - _2023: createMetricPattern4(this, "dca_class_2023_returns"), - _2024: createMetricPattern4(this, "dca_class_2024_returns"), - _2025: createMetricPattern4(this, "dca_class_2025_returns"), + 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"), - _2016: create_2015Pattern(this, "dca_class_2016_stack"), - _2017: create_2015Pattern(this, "dca_class_2017_stack"), - _2018: create_2015Pattern(this, "dca_class_2018_stack"), - _2019: create_2015Pattern(this, "dca_class_2019_stack"), - _2020: create_2015Pattern(this, "dca_class_2020_stack"), - _2021: create_2015Pattern(this, "dca_class_2021_stack"), - _2022: create_2015Pattern(this, "dca_class_2022_stack"), - _2023: create_2015Pattern(this, "dca_class_2023_stack"), - _2024: create_2015Pattern(this, "dca_class_2024_stack"), - _2025: create_2015Pattern(this, "dca_class_2025_stack"), + _2015: create_2015Pattern(this, 'dca_class_2015_stack'), + _2016: create_2015Pattern(this, 'dca_class_2016_stack'), + _2017: create_2015Pattern(this, 'dca_class_2017_stack'), + _2018: create_2015Pattern(this, 'dca_class_2018_stack'), + _2019: create_2015Pattern(this, 'dca_class_2019_stack'), + _2020: create_2015Pattern(this, 'dca_class_2020_stack'), + _2021: create_2015Pattern(this, 'dca_class_2021_stack'), + _2022: create_2015Pattern(this, 'dca_class_2022_stack'), + _2023: create_2015Pattern(this, 'dca_class_2023_stack'), + _2024: create_2015Pattern(this, 'dca_class_2024_stack'), + _2025: create_2015Pattern(this, 'dca_class_2025_stack'), }, - periodAveragePrice: createPeriodAveragePricePattern( - this, - "dca_average_price", - ), - periodCagr: createPeriodCagrPattern(this, "dca_cagr"), - periodLumpSumStack: createPeriodLumpSumStackPattern( - this, - "lump_sum_stack", - ), - periodReturns: createPeriodAveragePricePattern(this, "dca_returns"), - periodStack: createPeriodLumpSumStackPattern(this, "dca_stack"), + periodAveragePrice: createPeriodAveragePricePattern(this, 'dca_average_price'), + periodCagr: createPeriodCagrPattern(this, 'dca_cagr'), + periodLumpSumStack: createPeriodLumpSumStackPattern(this, 'lump_sum_stack'), + periodReturns: createPeriodAveragePricePattern(this, 'dca_returns'), + periodStack: createPeriodLumpSumStackPattern(this, 'dca_stack'), }, indicators: { - gini: createMetricPattern6(this, "gini"), - macdHistogram: createMetricPattern6(this, "macd_histogram"), - macdLine: createMetricPattern6(this, "macd_line"), - macdSignal: createMetricPattern6(this, "macd_signal"), - nvt: createMetricPattern4(this, "nvt"), - piCycle: createMetricPattern6(this, "pi_cycle"), - puellMultiple: createMetricPattern4(this, "puell_multiple"), - rsi14d: createMetricPattern6(this, "rsi_14d"), - rsi14dMax: createMetricPattern6(this, "rsi_14d_max"), - rsi14dMin: createMetricPattern6(this, "rsi_14d_min"), - rsiAverageGain14d: createMetricPattern6(this, "rsi_average_gain_14d"), - rsiAverageLoss14d: createMetricPattern6(this, "rsi_average_loss_14d"), - rsiGains: createMetricPattern6(this, "rsi_gains"), - rsiLosses: createMetricPattern6(this, "rsi_losses"), - stochD: createMetricPattern6(this, "stoch_d"), - stochK: createMetricPattern6(this, "stoch_k"), - stochRsi: createMetricPattern6(this, "stoch_rsi"), - stochRsiD: createMetricPattern6(this, "stoch_rsi_d"), - stochRsiK: createMetricPattern6(this, "stoch_rsi_k"), + gini: createMetricPattern6(this, 'gini'), + macdHistogram: createMetricPattern6(this, 'macd_histogram'), + macdLine: createMetricPattern6(this, 'macd_line'), + macdSignal: createMetricPattern6(this, 'macd_signal'), + nvt: createMetricPattern4(this, 'nvt'), + piCycle: createMetricPattern6(this, 'pi_cycle'), + puellMultiple: createMetricPattern4(this, 'puell_multiple'), + rsi14d: createMetricPattern6(this, 'rsi_14d'), + rsi14dMax: createMetricPattern6(this, 'rsi_14d_max'), + rsi14dMin: createMetricPattern6(this, 'rsi_14d_min'), + rsiAverageGain14d: createMetricPattern6(this, 'rsi_average_gain_14d'), + rsiAverageLoss14d: createMetricPattern6(this, 'rsi_average_loss_14d'), + rsiGains: createMetricPattern6(this, 'rsi_gains'), + rsiLosses: createMetricPattern6(this, 'rsi_losses'), + stochD: createMetricPattern6(this, 'stoch_d'), + stochK: createMetricPattern6(this, 'stoch_k'), + stochRsi: createMetricPattern6(this, 'stoch_rsi'), + stochRsiD: createMetricPattern6(this, 'stoch_rsi_d'), + stochRsiK: createMetricPattern6(this, 'stoch_rsi_k'), }, - lookback: createLookbackPattern(this, "price"), + lookback: createLookbackPattern(this, 'price'), movingAverage: { - 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: { - 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: { - 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"), - }, + 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'), + 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'), + 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'), }, range: { - price1mMax: createMetricPattern4(this, "price_1m_max"), - price1mMin: createMetricPattern4(this, "price_1m_min"), - price1wMax: createMetricPattern4(this, "price_1w_max"), - price1wMin: createMetricPattern4(this, "price_1w_min"), - price1yMax: createMetricPattern4(this, "price_1y_max"), - price1yMin: createMetricPattern4(this, "price_1y_min"), - price2wChoppinessIndex: createMetricPattern4( - this, - "price_2w_choppiness_index", - ), - price2wMax: createMetricPattern4(this, "price_2w_max"), - price2wMin: createMetricPattern4(this, "price_2w_min"), - priceTrueRange: createMetricPattern6(this, "price_true_range"), - priceTrueRange2wSum: createMetricPattern6( - this, - "price_true_range_2w_sum", - ), + price1mMax: createMetricPattern4(this, 'price_1m_max'), + price1mMin: createMetricPattern4(this, 'price_1m_min'), + price1wMax: createMetricPattern4(this, 'price_1w_max'), + price1wMin: createMetricPattern4(this, 'price_1w_min'), + price1yMax: createMetricPattern4(this, 'price_1y_max'), + price1yMin: createMetricPattern4(this, 'price_1y_min'), + price2wChoppinessIndex: createMetricPattern4(this, 'price_2w_choppiness_index'), + price2wMax: createMetricPattern4(this, 'price_2w_max'), + price2wMin: createMetricPattern4(this, 'price_2w_min'), + priceTrueRange: createMetricPattern6(this, 'price_true_range'), + priceTrueRange2wSum: createMetricPattern6(this, 'price_true_range_2w_sum'), }, returns: { - _1dReturns1mSd: create_1dReturns1mSdPattern(this, "1d_returns_1m_sd"), - _1dReturns1wSd: create_1dReturns1mSdPattern(this, "1d_returns_1w_sd"), - _1dReturns1ySd: create_1dReturns1mSdPattern(this, "1d_returns_1y_sd"), - cagr: createPeriodCagrPattern(this, "cagr"), - downside1mSd: create_1dReturns1mSdPattern(this, "downside_1m_sd"), - downside1wSd: create_1dReturns1mSdPattern(this, "downside_1w_sd"), - downside1ySd: create_1dReturns1mSdPattern(this, "downside_1y_sd"), - downsideReturns: createMetricPattern6(this, "downside_returns"), + _1dReturns1mSd: create_1dReturns1mSdPattern(this, '1d_returns_1m_sd'), + _1dReturns1wSd: create_1dReturns1mSdPattern(this, '1d_returns_1w_sd'), + _1dReturns1ySd: create_1dReturns1mSdPattern(this, '1d_returns_1y_sd'), + cagr: createPeriodCagrPattern(this, 'cagr'), + downside1mSd: create_1dReturns1mSdPattern(this, 'downside_1m_sd'), + downside1wSd: create_1dReturns1mSdPattern(this, 'downside_1w_sd'), + downside1ySd: create_1dReturns1mSdPattern(this, 'downside_1y_sd'), + downsideReturns: createMetricPattern6(this, 'downside_returns'), priceReturns: { - _10y: createMetricPattern4(this, "10y_price_returns"), - _1d: createMetricPattern4(this, "1d_price_returns"), - _1m: createMetricPattern4(this, "1m_price_returns"), - _1w: createMetricPattern4(this, "1w_price_returns"), - _1y: createMetricPattern4(this, "1y_price_returns"), - _2y: createMetricPattern4(this, "2y_price_returns"), - _3m: createMetricPattern4(this, "3m_price_returns"), - _3y: createMetricPattern4(this, "3y_price_returns"), - _4y: createMetricPattern4(this, "4y_price_returns"), - _5y: createMetricPattern4(this, "5y_price_returns"), - _6m: createMetricPattern4(this, "6m_price_returns"), - _6y: createMetricPattern4(this, "6y_price_returns"), - _8y: createMetricPattern4(this, "8y_price_returns"), + _10y: createMetricPattern4(this, '10y_price_returns'), + _1d: createMetricPattern4(this, '1d_price_returns'), + _1m: createMetricPattern4(this, '1m_price_returns'), + _1w: createMetricPattern4(this, '1w_price_returns'), + _1y: createMetricPattern4(this, '1y_price_returns'), + _2y: createMetricPattern4(this, '2y_price_returns'), + _3m: createMetricPattern4(this, '3m_price_returns'), + _3y: createMetricPattern4(this, '3y_price_returns'), + _4y: createMetricPattern4(this, '4y_price_returns'), + _5y: createMetricPattern4(this, '5y_price_returns'), + _6m: createMetricPattern4(this, '6m_price_returns'), + _6y: createMetricPattern4(this, '6y_price_returns'), + _8y: createMetricPattern4(this, '8y_price_returns'), }, }, volatility: { - price1mVolatility: createMetricPattern4(this, "price_1m_volatility"), - price1wVolatility: createMetricPattern4(this, "price_1w_volatility"), - price1yVolatility: createMetricPattern4(this, "price_1y_volatility"), - sharpe1m: createMetricPattern6(this, "sharpe_1m"), - sharpe1w: createMetricPattern6(this, "sharpe_1w"), - sharpe1y: createMetricPattern6(this, "sharpe_1y"), - sortino1m: createMetricPattern6(this, "sortino_1m"), - sortino1w: createMetricPattern6(this, "sortino_1w"), - sortino1y: createMetricPattern6(this, "sortino_1y"), + price1mVolatility: createMetricPattern4(this, 'price_1m_volatility'), + price1wVolatility: createMetricPattern4(this, 'price_1w_volatility'), + price1yVolatility: createMetricPattern4(this, 'price_1y_volatility'), + sharpe1m: createMetricPattern6(this, 'sharpe_1m'), + sharpe1w: createMetricPattern6(this, 'sharpe_1w'), + sharpe1y: createMetricPattern6(this, 'sharpe_1y'), + sortino1m: createMetricPattern6(this, 'sortino_1m'), + sortino1w: createMetricPattern6(this, 'sortino_1w'), + sortino1y: createMetricPattern6(this, 'sortino_1y'), }, }, outputs: { count: { - totalCount: createCountPattern2(this, "output_count"), - utxoCount: createMetricPattern1(this, "exact_utxo_count"), + totalCount: createCountPattern2(this, 'output_count'), + utxoCount: createMetricPattern1(this, 'exact_utxo_count'), }, - firstTxoutindex: createMetricPattern11(this, "first_txoutindex"), - outputtype: createMetricPattern15(this, "outputtype"), + firstTxoutindex: createMetricPattern11(this, 'first_txoutindex'), + outputtype: createMetricPattern15(this, 'outputtype'), spent: { - txinindex: createMetricPattern15(this, "txinindex"), + txinindex: createMetricPattern15(this, 'txinindex'), }, - txindex: createMetricPattern15(this, "txindex"), - typeindex: createMetricPattern15(this, "typeindex"), - value: createMetricPattern15(this, "value"), + txindex: createMetricPattern15(this, 'txindex'), + typeindex: createMetricPattern15(this, 'typeindex'), + value: createMetricPattern15(this, 'value'), }, pools: { - heightToPool: createMetricPattern11(this, "pool"), + heightToPool: createMetricPattern11(this, 'pool'), vecs: { - aaopool: createAaopoolPattern(this, "aaopool"), - antpool: createAaopoolPattern(this, "antpool"), - arkpool: createAaopoolPattern(this, "arkpool"), - asicminer: createAaopoolPattern(this, "asicminer"), - axbt: createAaopoolPattern(this, "axbt"), - batpool: createAaopoolPattern(this, "batpool"), - bcmonster: createAaopoolPattern(this, "bcmonster"), - bcpoolio: createAaopoolPattern(this, "bcpoolio"), - binancepool: createAaopoolPattern(this, "binancepool"), - bitalo: createAaopoolPattern(this, "bitalo"), - bitclub: createAaopoolPattern(this, "bitclub"), - bitcoinaffiliatenetwork: createAaopoolPattern( - this, - "bitcoinaffiliatenetwork", - ), - bitcoincom: createAaopoolPattern(this, "bitcoincom"), - bitcoinindia: createAaopoolPattern(this, "bitcoinindia"), - bitcoinrussia: createAaopoolPattern(this, "bitcoinrussia"), - bitcoinukraine: createAaopoolPattern(this, "bitcoinukraine"), - bitfarms: createAaopoolPattern(this, "bitfarms"), - bitfufupool: createAaopoolPattern(this, "bitfufupool"), - bitfury: createAaopoolPattern(this, "bitfury"), - bitminter: createAaopoolPattern(this, "bitminter"), - bitparking: createAaopoolPattern(this, "bitparking"), - bitsolo: createAaopoolPattern(this, "bitsolo"), - bixin: createAaopoolPattern(this, "bixin"), - blockfills: createAaopoolPattern(this, "blockfills"), - braiinspool: createAaopoolPattern(this, "braiinspool"), - bravomining: createAaopoolPattern(this, "bravomining"), - btcc: createAaopoolPattern(this, "btcc"), - btccom: createAaopoolPattern(this, "btccom"), - btcdig: createAaopoolPattern(this, "btcdig"), - btcguild: createAaopoolPattern(this, "btcguild"), - btclab: createAaopoolPattern(this, "btclab"), - btcmp: createAaopoolPattern(this, "btcmp"), - btcnuggets: createAaopoolPattern(this, "btcnuggets"), - btcpoolparty: createAaopoolPattern(this, "btcpoolparty"), - btcserv: createAaopoolPattern(this, "btcserv"), - btctop: createAaopoolPattern(this, "btctop"), - btpool: createAaopoolPattern(this, "btpool"), - bwpool: createAaopoolPattern(this, "bwpool"), - bytepool: createAaopoolPattern(this, "bytepool"), - canoe: createAaopoolPattern(this, "canoe"), - canoepool: createAaopoolPattern(this, "canoepool"), - carbonnegative: createAaopoolPattern(this, "carbonnegative"), - ckpool: createAaopoolPattern(this, "ckpool"), - cloudhashing: createAaopoolPattern(this, "cloudhashing"), - coinlab: createAaopoolPattern(this, "coinlab"), - cointerra: createAaopoolPattern(this, "cointerra"), - connectbtc: createAaopoolPattern(this, "connectbtc"), - dcex: createAaopoolPattern(this, "dcex"), - dcexploration: createAaopoolPattern(this, "dcexploration"), - digitalbtc: createAaopoolPattern(this, "digitalbtc"), - digitalxmintsy: createAaopoolPattern(this, "digitalxmintsy"), - dpool: createAaopoolPattern(this, "dpool"), - eclipsemc: createAaopoolPattern(this, "eclipsemc"), - eightbaochi: createAaopoolPattern(this, "eightbaochi"), - ekanembtc: createAaopoolPattern(this, "ekanembtc"), - eligius: createAaopoolPattern(this, "eligius"), - emcdpool: createAaopoolPattern(this, "emcdpool"), - entrustcharitypool: createAaopoolPattern(this, "entrustcharitypool"), - eobot: createAaopoolPattern(this, "eobot"), - exxbw: createAaopoolPattern(this, "exxbw"), - f2pool: createAaopoolPattern(this, "f2pool"), - fiftyeightcoin: createAaopoolPattern(this, "fiftyeightcoin"), - foundryusa: createAaopoolPattern(this, "foundryusa"), - futurebitapollosolo: createAaopoolPattern( - this, - "futurebitapollosolo", - ), - gbminers: createAaopoolPattern(this, "gbminers"), - ghashio: createAaopoolPattern(this, "ghashio"), - givemecoins: createAaopoolPattern(this, "givemecoins"), - gogreenlight: createAaopoolPattern(this, "gogreenlight"), - haominer: createAaopoolPattern(this, "haominer"), - haozhuzhu: createAaopoolPattern(this, "haozhuzhu"), - hashbx: createAaopoolPattern(this, "hashbx"), - hashpool: createAaopoolPattern(this, "hashpool"), - helix: createAaopoolPattern(this, "helix"), - hhtt: createAaopoolPattern(this, "hhtt"), - hotpool: createAaopoolPattern(this, "hotpool"), - hummerpool: createAaopoolPattern(this, "hummerpool"), - huobipool: createAaopoolPattern(this, "huobipool"), - innopolistech: createAaopoolPattern(this, "innopolistech"), - kanopool: createAaopoolPattern(this, "kanopool"), - kncminer: createAaopoolPattern(this, "kncminer"), - kucoinpool: createAaopoolPattern(this, "kucoinpool"), - lubiancom: createAaopoolPattern(this, "lubiancom"), - luckypool: createAaopoolPattern(this, "luckypool"), - luxor: createAaopoolPattern(this, "luxor"), - marapool: createAaopoolPattern(this, "marapool"), - maxbtc: createAaopoolPattern(this, "maxbtc"), - maxipool: createAaopoolPattern(this, "maxipool"), - megabigpower: createAaopoolPattern(this, "megabigpower"), - minerium: createAaopoolPattern(this, "minerium"), - miningcity: createAaopoolPattern(this, "miningcity"), - miningdutch: createAaopoolPattern(this, "miningdutch"), - miningkings: createAaopoolPattern(this, "miningkings"), - miningsquared: createAaopoolPattern(this, "miningsquared"), - mmpool: createAaopoolPattern(this, "mmpool"), - mtred: createAaopoolPattern(this, "mtred"), - multicoinco: createAaopoolPattern(this, "multicoinco"), - multipool: createAaopoolPattern(this, "multipool"), - mybtccoinpool: createAaopoolPattern(this, "mybtccoinpool"), - neopool: createAaopoolPattern(this, "neopool"), - nexious: createAaopoolPattern(this, "nexious"), - nicehash: createAaopoolPattern(this, "nicehash"), - nmcbit: createAaopoolPattern(this, "nmcbit"), - novablock: createAaopoolPattern(this, "novablock"), - ocean: createAaopoolPattern(this, "ocean"), - okexpool: createAaopoolPattern(this, "okexpool"), - okkong: createAaopoolPattern(this, "okkong"), - okminer: createAaopoolPattern(this, "okminer"), - okpooltop: createAaopoolPattern(this, "okpooltop"), - onehash: createAaopoolPattern(this, "onehash"), - onem1x: createAaopoolPattern(this, "onem1x"), - onethash: createAaopoolPattern(this, "onethash"), - ozcoin: createAaopoolPattern(this, "ozcoin"), - parasite: createAaopoolPattern(this, "parasite"), - patels: createAaopoolPattern(this, "patels"), - pegapool: createAaopoolPattern(this, "pegapool"), - phashio: createAaopoolPattern(this, "phashio"), - phoenix: createAaopoolPattern(this, "phoenix"), - polmine: createAaopoolPattern(this, "polmine"), - pool175btc: createAaopoolPattern(this, "pool175btc"), - pool50btc: createAaopoolPattern(this, "pool50btc"), - poolin: createAaopoolPattern(this, "poolin"), - portlandhodl: createAaopoolPattern(this, "portlandhodl"), - publicpool: createAaopoolPattern(this, "publicpool"), - purebtccom: createAaopoolPattern(this, "purebtccom"), - rawpool: createAaopoolPattern(this, "rawpool"), - rigpool: createAaopoolPattern(this, "rigpool"), - sbicrypto: createAaopoolPattern(this, "sbicrypto"), - secpool: createAaopoolPattern(this, "secpool"), - secretsuperstar: createAaopoolPattern(this, "secretsuperstar"), - sevenpool: createAaopoolPattern(this, "sevenpool"), - shawnp0wers: createAaopoolPattern(this, "shawnp0wers"), - sigmapoolcom: createAaopoolPattern(this, "sigmapoolcom"), - simplecoinus: createAaopoolPattern(this, "simplecoinus"), - solock: createAaopoolPattern(this, "solock"), - spiderpool: createAaopoolPattern(this, "spiderpool"), - stminingcorp: createAaopoolPattern(this, "stminingcorp"), - tangpool: createAaopoolPattern(this, "tangpool"), - tatmaspool: createAaopoolPattern(this, "tatmaspool"), - tbdice: createAaopoolPattern(this, "tbdice"), - telco214: createAaopoolPattern(this, "telco214"), - terrapool: createAaopoolPattern(this, "terrapool"), - tiger: createAaopoolPattern(this, "tiger"), - tigerpoolnet: createAaopoolPattern(this, "tigerpoolnet"), - titan: createAaopoolPattern(this, "titan"), - transactioncoinmining: createAaopoolPattern( - this, - "transactioncoinmining", - ), - trickysbtcpool: createAaopoolPattern(this, "trickysbtcpool"), - triplemining: createAaopoolPattern(this, "triplemining"), - twentyoneinc: createAaopoolPattern(this, "twentyoneinc"), - ultimuspool: createAaopoolPattern(this, "ultimuspool"), - unknown: createAaopoolPattern(this, "unknown"), - unomp: createAaopoolPattern(this, "unomp"), - viabtc: createAaopoolPattern(this, "viabtc"), - waterhole: createAaopoolPattern(this, "waterhole"), - wayicn: createAaopoolPattern(this, "wayicn"), - whitepool: createAaopoolPattern(this, "whitepool"), - wk057: createAaopoolPattern(this, "wk057"), - yourbtcnet: createAaopoolPattern(this, "yourbtcnet"), - zulupool: createAaopoolPattern(this, "zulupool"), + aaopool: createAaopoolPattern(this, 'aaopool'), + antpool: createAaopoolPattern(this, 'antpool'), + arkpool: createAaopoolPattern(this, 'arkpool'), + asicminer: createAaopoolPattern(this, 'asicminer'), + axbt: createAaopoolPattern(this, 'axbt'), + batpool: createAaopoolPattern(this, 'batpool'), + bcmonster: createAaopoolPattern(this, 'bcmonster'), + bcpoolio: createAaopoolPattern(this, 'bcpoolio'), + binancepool: createAaopoolPattern(this, 'binancepool'), + bitalo: createAaopoolPattern(this, 'bitalo'), + bitclub: createAaopoolPattern(this, 'bitclub'), + bitcoinaffiliatenetwork: createAaopoolPattern(this, 'bitcoinaffiliatenetwork'), + bitcoincom: createAaopoolPattern(this, 'bitcoincom'), + bitcoinindia: createAaopoolPattern(this, 'bitcoinindia'), + bitcoinrussia: createAaopoolPattern(this, 'bitcoinrussia'), + bitcoinukraine: createAaopoolPattern(this, 'bitcoinukraine'), + bitfarms: createAaopoolPattern(this, 'bitfarms'), + bitfufupool: createAaopoolPattern(this, 'bitfufupool'), + bitfury: createAaopoolPattern(this, 'bitfury'), + bitminter: createAaopoolPattern(this, 'bitminter'), + bitparking: createAaopoolPattern(this, 'bitparking'), + bitsolo: createAaopoolPattern(this, 'bitsolo'), + bixin: createAaopoolPattern(this, 'bixin'), + blockfills: createAaopoolPattern(this, 'blockfills'), + braiinspool: createAaopoolPattern(this, 'braiinspool'), + bravomining: createAaopoolPattern(this, 'bravomining'), + btcc: createAaopoolPattern(this, 'btcc'), + btccom: createAaopoolPattern(this, 'btccom'), + btcdig: createAaopoolPattern(this, 'btcdig'), + btcguild: createAaopoolPattern(this, 'btcguild'), + btclab: createAaopoolPattern(this, 'btclab'), + btcmp: createAaopoolPattern(this, 'btcmp'), + btcnuggets: createAaopoolPattern(this, 'btcnuggets'), + btcpoolparty: createAaopoolPattern(this, 'btcpoolparty'), + btcserv: createAaopoolPattern(this, 'btcserv'), + btctop: createAaopoolPattern(this, 'btctop'), + btpool: createAaopoolPattern(this, 'btpool'), + bwpool: createAaopoolPattern(this, 'bwpool'), + bytepool: createAaopoolPattern(this, 'bytepool'), + canoe: createAaopoolPattern(this, 'canoe'), + canoepool: createAaopoolPattern(this, 'canoepool'), + carbonnegative: createAaopoolPattern(this, 'carbonnegative'), + ckpool: createAaopoolPattern(this, 'ckpool'), + cloudhashing: createAaopoolPattern(this, 'cloudhashing'), + coinlab: createAaopoolPattern(this, 'coinlab'), + cointerra: createAaopoolPattern(this, 'cointerra'), + connectbtc: createAaopoolPattern(this, 'connectbtc'), + dcex: createAaopoolPattern(this, 'dcex'), + dcexploration: createAaopoolPattern(this, 'dcexploration'), + digitalbtc: createAaopoolPattern(this, 'digitalbtc'), + digitalxmintsy: createAaopoolPattern(this, 'digitalxmintsy'), + dpool: createAaopoolPattern(this, 'dpool'), + eclipsemc: createAaopoolPattern(this, 'eclipsemc'), + eightbaochi: createAaopoolPattern(this, 'eightbaochi'), + ekanembtc: createAaopoolPattern(this, 'ekanembtc'), + eligius: createAaopoolPattern(this, 'eligius'), + emcdpool: createAaopoolPattern(this, 'emcdpool'), + entrustcharitypool: createAaopoolPattern(this, 'entrustcharitypool'), + eobot: createAaopoolPattern(this, 'eobot'), + exxbw: createAaopoolPattern(this, 'exxbw'), + f2pool: createAaopoolPattern(this, 'f2pool'), + fiftyeightcoin: createAaopoolPattern(this, 'fiftyeightcoin'), + foundryusa: createAaopoolPattern(this, 'foundryusa'), + futurebitapollosolo: createAaopoolPattern(this, 'futurebitapollosolo'), + gbminers: createAaopoolPattern(this, 'gbminers'), + ghashio: createAaopoolPattern(this, 'ghashio'), + givemecoins: createAaopoolPattern(this, 'givemecoins'), + gogreenlight: createAaopoolPattern(this, 'gogreenlight'), + haominer: createAaopoolPattern(this, 'haominer'), + haozhuzhu: createAaopoolPattern(this, 'haozhuzhu'), + hashbx: createAaopoolPattern(this, 'hashbx'), + hashpool: createAaopoolPattern(this, 'hashpool'), + helix: createAaopoolPattern(this, 'helix'), + hhtt: createAaopoolPattern(this, 'hhtt'), + hotpool: createAaopoolPattern(this, 'hotpool'), + hummerpool: createAaopoolPattern(this, 'hummerpool'), + huobipool: createAaopoolPattern(this, 'huobipool'), + innopolistech: createAaopoolPattern(this, 'innopolistech'), + kanopool: createAaopoolPattern(this, 'kanopool'), + kncminer: createAaopoolPattern(this, 'kncminer'), + kucoinpool: createAaopoolPattern(this, 'kucoinpool'), + lubiancom: createAaopoolPattern(this, 'lubiancom'), + luckypool: createAaopoolPattern(this, 'luckypool'), + luxor: createAaopoolPattern(this, 'luxor'), + marapool: createAaopoolPattern(this, 'marapool'), + maxbtc: createAaopoolPattern(this, 'maxbtc'), + maxipool: createAaopoolPattern(this, 'maxipool'), + megabigpower: createAaopoolPattern(this, 'megabigpower'), + minerium: createAaopoolPattern(this, 'minerium'), + miningcity: createAaopoolPattern(this, 'miningcity'), + miningdutch: createAaopoolPattern(this, 'miningdutch'), + miningkings: createAaopoolPattern(this, 'miningkings'), + miningsquared: createAaopoolPattern(this, 'miningsquared'), + mmpool: createAaopoolPattern(this, 'mmpool'), + mtred: createAaopoolPattern(this, 'mtred'), + multicoinco: createAaopoolPattern(this, 'multicoinco'), + multipool: createAaopoolPattern(this, 'multipool'), + mybtccoinpool: createAaopoolPattern(this, 'mybtccoinpool'), + neopool: createAaopoolPattern(this, 'neopool'), + nexious: createAaopoolPattern(this, 'nexious'), + nicehash: createAaopoolPattern(this, 'nicehash'), + nmcbit: createAaopoolPattern(this, 'nmcbit'), + novablock: createAaopoolPattern(this, 'novablock'), + ocean: createAaopoolPattern(this, 'ocean'), + okexpool: createAaopoolPattern(this, 'okexpool'), + okkong: createAaopoolPattern(this, 'okkong'), + okminer: createAaopoolPattern(this, 'okminer'), + okpooltop: createAaopoolPattern(this, 'okpooltop'), + onehash: createAaopoolPattern(this, 'onehash'), + onem1x: createAaopoolPattern(this, 'onem1x'), + onethash: createAaopoolPattern(this, 'onethash'), + ozcoin: createAaopoolPattern(this, 'ozcoin'), + parasite: createAaopoolPattern(this, 'parasite'), + patels: createAaopoolPattern(this, 'patels'), + pegapool: createAaopoolPattern(this, 'pegapool'), + phashio: createAaopoolPattern(this, 'phashio'), + phoenix: createAaopoolPattern(this, 'phoenix'), + polmine: createAaopoolPattern(this, 'polmine'), + pool175btc: createAaopoolPattern(this, 'pool175btc'), + pool50btc: createAaopoolPattern(this, 'pool50btc'), + poolin: createAaopoolPattern(this, 'poolin'), + portlandhodl: createAaopoolPattern(this, 'portlandhodl'), + publicpool: createAaopoolPattern(this, 'publicpool'), + purebtccom: createAaopoolPattern(this, 'purebtccom'), + rawpool: createAaopoolPattern(this, 'rawpool'), + rigpool: createAaopoolPattern(this, 'rigpool'), + sbicrypto: createAaopoolPattern(this, 'sbicrypto'), + secpool: createAaopoolPattern(this, 'secpool'), + secretsuperstar: createAaopoolPattern(this, 'secretsuperstar'), + sevenpool: createAaopoolPattern(this, 'sevenpool'), + shawnp0wers: createAaopoolPattern(this, 'shawnp0wers'), + sigmapoolcom: createAaopoolPattern(this, 'sigmapoolcom'), + simplecoinus: createAaopoolPattern(this, 'simplecoinus'), + solock: createAaopoolPattern(this, 'solock'), + spiderpool: createAaopoolPattern(this, 'spiderpool'), + stminingcorp: createAaopoolPattern(this, 'stminingcorp'), + tangpool: createAaopoolPattern(this, 'tangpool'), + tatmaspool: createAaopoolPattern(this, 'tatmaspool'), + tbdice: createAaopoolPattern(this, 'tbdice'), + telco214: createAaopoolPattern(this, 'telco214'), + terrapool: createAaopoolPattern(this, 'terrapool'), + tiger: createAaopoolPattern(this, 'tiger'), + tigerpoolnet: createAaopoolPattern(this, 'tigerpoolnet'), + titan: createAaopoolPattern(this, 'titan'), + transactioncoinmining: createAaopoolPattern(this, 'transactioncoinmining'), + trickysbtcpool: createAaopoolPattern(this, 'trickysbtcpool'), + triplemining: createAaopoolPattern(this, 'triplemining'), + twentyoneinc: createAaopoolPattern(this, 'twentyoneinc'), + ultimuspool: createAaopoolPattern(this, 'ultimuspool'), + unknown: createAaopoolPattern(this, 'unknown'), + unomp: createAaopoolPattern(this, 'unomp'), + viabtc: createAaopoolPattern(this, 'viabtc'), + waterhole: createAaopoolPattern(this, 'waterhole'), + wayicn: createAaopoolPattern(this, 'wayicn'), + whitepool: createAaopoolPattern(this, 'whitepool'), + wk057: createAaopoolPattern(this, 'wk057'), + yourbtcnet: createAaopoolPattern(this, 'yourbtcnet'), + zulupool: createAaopoolPattern(this, 'zulupool'), }, }, positions: { - blockPosition: createMetricPattern11(this, "position"), - txPosition: createMetricPattern27(this, "position"), + blockPosition: createMetricPattern11(this, 'position'), + txPosition: createMetricPattern27(this, 'position'), }, price: { cents: { - ohlc: createMetricPattern5(this, "ohlc_cents"), + ohlc: createMetricPattern5(this, 'ohlc_cents'), split: { - close: createMetricPattern5(this, "price_close_cents"), - high: createMetricPattern5(this, "price_high_cents"), - low: createMetricPattern5(this, "price_low_cents"), - open: createMetricPattern5(this, "price_open_cents"), + close: createMetricPattern5(this, 'price_close_cents'), + high: createMetricPattern5(this, 'price_high_cents'), + low: createMetricPattern5(this, 'price_low_cents'), + open: createMetricPattern5(this, 'price_open_cents'), }, }, oracle: { - ohlcCents: createMetricPattern6(this, "oracle_ohlc_cents"), - ohlcDollars: createMetricPattern6(this, "oracle_ohlc"), - priceCents: createMetricPattern11(this, "oracle_price_cents"), - txCount: createMetricPattern6(this, "oracle_tx_count"), - }, - sats: { - ohlc: createMetricPattern1(this, "price_ohlc_sats"), - split: createSplitPattern2(this, "price_sats"), + ohlcCents: createMetricPattern6(this, 'oracle_ohlc_cents'), + ohlcDollars: createMetricPattern6(this, 'oracle_ohlc'), + priceCents: createMetricPattern11(this, 'oracle_price_cents'), + txCount: createMetricPattern6(this, 'oracle_tx_count'), }, + sats: createSatsPattern(this, 'price'), usd: { - ohlc: createMetricPattern1(this, "price_ohlc"), - split: createSplitPattern2(this, "price"), + ohlc: createMetricPattern1(this, 'price_ohlc'), + split: createSplitPattern2(this, 'price'), }, }, scripts: { count: { - emptyoutput: createDollarsPattern(this, "emptyoutput_count"), - opreturn: createDollarsPattern(this, "opreturn_count"), - p2a: createDollarsPattern(this, "p2a_count"), - p2ms: createDollarsPattern(this, "p2ms_count"), - p2pk33: createDollarsPattern(this, "p2pk33_count"), - p2pk65: createDollarsPattern(this, "p2pk65_count"), - p2pkh: createDollarsPattern(this, "p2pkh_count"), - p2sh: createDollarsPattern(this, "p2sh_count"), - p2tr: createDollarsPattern(this, "p2tr_count"), - p2wpkh: createDollarsPattern(this, "p2wpkh_count"), - p2wsh: createDollarsPattern(this, "p2wsh_count"), - segwit: createDollarsPattern(this, "segwit_count"), - segwitAdoption: createSegwitAdoptionPattern(this, "segwit_adoption"), - taprootAdoption: createSegwitAdoptionPattern( - this, - "taproot_adoption", - ), - unknownoutput: createDollarsPattern(this, "unknownoutput_count"), + emptyoutput: createDollarsPattern(this, 'emptyoutput_count'), + opreturn: createDollarsPattern(this, 'opreturn_count'), + p2a: createDollarsPattern(this, 'p2a_count'), + p2ms: createDollarsPattern(this, 'p2ms_count'), + p2pk33: createDollarsPattern(this, 'p2pk33_count'), + p2pk65: createDollarsPattern(this, 'p2pk65_count'), + p2pkh: createDollarsPattern(this, 'p2pkh_count'), + p2sh: createDollarsPattern(this, 'p2sh_count'), + p2tr: createDollarsPattern(this, 'p2tr_count'), + p2wpkh: createDollarsPattern(this, 'p2wpkh_count'), + p2wsh: createDollarsPattern(this, 'p2wsh_count'), + segwit: createDollarsPattern(this, 'segwit_count'), + segwitAdoption: createSegwitAdoptionPattern(this, 'segwit_adoption'), + taprootAdoption: createSegwitAdoptionPattern(this, 'taproot_adoption'), + unknownoutput: createDollarsPattern(this, 'unknownoutput_count'), }, - emptyToTxindex: createMetricPattern9(this, "txindex"), - firstEmptyoutputindex: createMetricPattern11( - this, - "first_emptyoutputindex", - ), - firstOpreturnindex: createMetricPattern11(this, "first_opreturnindex"), - firstP2msoutputindex: createMetricPattern11( - this, - "first_p2msoutputindex", - ), - firstUnknownoutputindex: createMetricPattern11( - this, - "first_unknownoutputindex", - ), - opreturnToTxindex: createMetricPattern14(this, "txindex"), - p2msToTxindex: createMetricPattern17(this, "txindex"), - unknownToTxindex: createMetricPattern28(this, "txindex"), + emptyToTxindex: createMetricPattern9(this, 'txindex'), + firstEmptyoutputindex: createMetricPattern11(this, 'first_emptyoutputindex'), + firstOpreturnindex: createMetricPattern11(this, 'first_opreturnindex'), + firstP2msoutputindex: createMetricPattern11(this, 'first_p2msoutputindex'), + firstUnknownoutputindex: createMetricPattern11(this, 'first_unknownoutputindex'), + opreturnToTxindex: createMetricPattern14(this, 'txindex'), + p2msToTxindex: createMetricPattern17(this, 'txindex'), + unknownToTxindex: createMetricPattern28(this, 'txindex'), value: { - opreturn: createCoinbasePattern(this, "opreturn_value"), + opreturn: createCoinbasePattern(this, 'opreturn_value'), }, }, supply: { burned: { - opreturn: createUnclaimedRewardsPattern(this, "opreturn_supply"), - unspendable: createUnclaimedRewardsPattern( - this, - "unspendable_supply", - ), + opreturn: createUnclaimedRewardsPattern(this, 'opreturn_supply'), + unspendable: createUnclaimedRewardsPattern(this, 'unspendable_supply'), }, circulating: { - bitcoin: createMetricPattern3(this, "circulating_supply_btc"), - dollars: createMetricPattern3(this, "circulating_supply_usd"), - sats: createMetricPattern3(this, "circulating_supply"), + bitcoin: createMetricPattern3(this, 'circulating_supply_btc'), + dollars: createMetricPattern3(this, 'circulating_supply_usd'), + sats: createMetricPattern3(this, 'circulating_supply'), }, - inflation: createMetricPattern4(this, "inflation_rate"), - marketCap: createMetricPattern1(this, "market_cap"), + inflation: createMetricPattern4(this, 'inflation_rate'), + marketCap: createMetricPattern1(this, 'market_cap'), velocity: { - btc: createMetricPattern4(this, "btc_velocity"), - usd: createMetricPattern4(this, "usd_velocity"), + btc: createMetricPattern4(this, 'btc_velocity'), + usd: createMetricPattern4(this, 'usd_velocity'), }, }, transactions: { - baseSize: createMetricPattern27(this, "base_size"), + baseSize: createMetricPattern27(this, 'base_size'), count: { - isCoinbase: createMetricPattern27(this, "is_coinbase"), - txCount: createDollarsPattern(this, "tx_count"), + isCoinbase: createMetricPattern27(this, 'is_coinbase'), + txCount: createDollarsPattern(this, 'tx_count'), }, fees: { fee: { - bitcoin: createCountPattern2(this, "fee_btc"), + bitcoin: createCountPattern2(this, 'fee_btc'), dollars: { - average: createMetricPattern1(this, "fee_usd_average"), - cumulative: createMetricPattern2(this, "fee_usd_cumulative"), - heightCumulative: createMetricPattern11( - this, - "fee_usd_cumulative", - ), - max: createMetricPattern1(this, "fee_usd_max"), - median: createMetricPattern11(this, "fee_usd_median"), - min: createMetricPattern1(this, "fee_usd_min"), - pct10: createMetricPattern11(this, "fee_usd_pct10"), - pct25: createMetricPattern11(this, "fee_usd_pct25"), - pct75: createMetricPattern11(this, "fee_usd_pct75"), - pct90: createMetricPattern11(this, "fee_usd_pct90"), - sum: createMetricPattern1(this, "fee_usd_sum"), + average: createMetricPattern1(this, 'fee_usd_average'), + cumulative: createMetricPattern2(this, 'fee_usd_cumulative'), + heightCumulative: createMetricPattern11(this, 'fee_usd_cumulative'), + max: createMetricPattern1(this, 'fee_usd_max'), + median: createMetricPattern11(this, 'fee_usd_median'), + min: createMetricPattern1(this, 'fee_usd_min'), + pct10: createMetricPattern11(this, 'fee_usd_pct10'), + pct25: createMetricPattern11(this, 'fee_usd_pct25'), + pct75: createMetricPattern11(this, 'fee_usd_pct75'), + pct90: createMetricPattern11(this, 'fee_usd_pct90'), + sum: createMetricPattern1(this, 'fee_usd_sum'), }, - sats: createCountPattern2(this, "fee"), - txindex: createMetricPattern27(this, "fee"), + sats: createCountPattern2(this, 'fee'), + txindex: createMetricPattern27(this, 'fee'), }, - feeRate: createFeeRatePattern(this, "fee_rate"), - inputValue: createMetricPattern27(this, "input_value"), - outputValue: createMetricPattern27(this, "output_value"), + feeRate: createFeeRatePattern(this, 'fee_rate'), + inputValue: createMetricPattern27(this, 'input_value'), + outputValue: createMetricPattern27(this, 'output_value'), }, - firstTxindex: createMetricPattern11(this, "first_txindex"), - firstTxinindex: createMetricPattern27(this, "first_txinindex"), - firstTxoutindex: createMetricPattern27(this, "first_txoutindex"), - height: createMetricPattern27(this, "height"), - isExplicitlyRbf: createMetricPattern27(this, "is_explicitly_rbf"), - rawlocktime: createMetricPattern27(this, "rawlocktime"), + firstTxindex: createMetricPattern11(this, 'first_txindex'), + firstTxinindex: createMetricPattern27(this, 'first_txinindex'), + firstTxoutindex: createMetricPattern27(this, 'first_txoutindex'), + height: createMetricPattern27(this, 'height'), + isExplicitlyRbf: createMetricPattern27(this, 'is_explicitly_rbf'), + rawlocktime: createMetricPattern27(this, 'rawlocktime'), size: { - vsize: createFeeRatePattern(this, "tx_vsize"), - weight: createFeeRatePattern(this, "tx_weight"), + vsize: createFeeRatePattern(this, 'tx_vsize'), + weight: createFeeRatePattern(this, 'tx_weight'), }, - totalSize: createMetricPattern27(this, "total_size"), - txid: createMetricPattern27(this, "txid"), - txversion: createMetricPattern27(this, "txversion"), + totalSize: createMetricPattern27(this, 'total_size'), + txid: createMetricPattern27(this, 'txid'), + txversion: createMetricPattern27(this, 'txversion'), versions: { - v1: createBlockCountPattern(this, "tx_v1"), - v2: createBlockCountPattern(this, "tx_v2"), - v3: createBlockCountPattern(this, "tx_v3"), + v1: createBlockCountPattern(this, 'tx_v1'), + v2: createBlockCountPattern(this, 'tx_v2'), + v3: createBlockCountPattern(this, 'tx_v3'), }, volume: { - annualizedVolume: create_2015Pattern(this, "annualized_volume"), - inputsPerSec: createMetricPattern4(this, "inputs_per_sec"), - outputsPerSec: createMetricPattern4(this, "outputs_per_sec"), - sentSum: createActiveSupplyPattern(this, "sent_sum"), - txPerSec: createMetricPattern4(this, "tx_per_sec"), + annualizedVolume: create_2015Pattern(this, 'annualized_volume'), + inputsPerSec: createMetricPattern4(this, 'inputs_per_sec'), + outputsPerSec: createMetricPattern4(this, 'outputs_per_sec'), + sentSum: createActiveSupplyPattern(this, 'sent_sum'), + txPerSec: createMetricPattern4(this, 'tx_per_sec'), }, }, }; @@ -14820,10 +6152,10 @@ class BrkClient extends BrkClientBase { */ async getAddressTxs(address, after_txid, limit) { const params = new URLSearchParams(); - if (after_txid !== undefined) params.set("after_txid", String(after_txid)); - if (limit !== undefined) params.set("limit", String(limit)); + if (after_txid !== undefined) params.set('after_txid', String(after_txid)); + if (limit !== undefined) params.set('limit', String(limit)); const query = params.toString(); - const path = `/api/address/${address}/txs${query ? "?" + query : ""}`; + const path = `/api/address/${address}/txs${query ? '?' + query : ''}`; return this.getJson(path); } @@ -14843,10 +6175,10 @@ class BrkClient extends BrkClientBase { */ async getAddressConfirmedTxs(address, after_txid, limit) { const params = new URLSearchParams(); - if (after_txid !== undefined) params.set("after_txid", String(after_txid)); - if (limit !== undefined) params.set("limit", String(limit)); + if (after_txid !== undefined) params.set('after_txid', String(after_txid)); + if (limit !== undefined) params.set('limit', String(limit)); const query = params.toString(); - const path = `/api/address/${address}/txs/chain${query ? "?" + query : ""}`; + const path = `/api/address/${address}/txs/chain${query ? '?' + query : ''}`; return this.getJson(path); } @@ -15085,13 +6417,13 @@ class BrkClient extends BrkClientBase { */ async getMetric(metric, index, start, end, limit, format) { const params = new URLSearchParams(); - if (start !== undefined) params.set("start", String(start)); - if (end !== undefined) params.set("end", String(end)); - if (limit !== undefined) params.set("limit", String(limit)); - if (format !== undefined) params.set("format", String(format)); + if (start !== undefined) params.set('start', String(start)); + if (end !== undefined) params.set('end', String(end)); + if (limit !== undefined) params.set('limit', String(limit)); + if (format !== undefined) params.set('format', String(format)); const query = params.toString(); - const path = `/api/metric/${metric}/${index}${query ? "?" + query : ""}`; - if (format === "csv") { + const path = `/api/metric/${metric}/${index}${query ? '?' + query : ''}`; + if (format === 'csv') { return this.getText(path); } return this.getJson(path); @@ -15126,15 +6458,15 @@ class BrkClient extends BrkClientBase { */ async getMetrics(metrics, index, start, end, limit, format) { const params = new URLSearchParams(); - params.set("metrics", String(metrics)); - params.set("index", String(index)); - if (start !== undefined) params.set("start", String(start)); - if (end !== undefined) params.set("end", String(end)); - if (limit !== undefined) params.set("limit", String(limit)); - if (format !== undefined) params.set("format", String(format)); + params.set('metrics', String(metrics)); + params.set('index', String(index)); + if (start !== undefined) params.set('start', String(start)); + if (end !== undefined) params.set('end', String(end)); + if (limit !== undefined) params.set('limit', String(limit)); + if (format !== undefined) params.set('format', String(format)); const query = params.toString(); - const path = `/api/metrics/bulk${query ? "?" + query : ""}`; - if (format === "csv") { + const path = `/api/metrics/bulk${query ? '?' + query : ''}`; + if (format === 'csv') { return this.getText(path); } return this.getJson(path); @@ -15176,9 +6508,9 @@ class BrkClient extends BrkClientBase { */ async listMetrics(page) { const params = new URLSearchParams(); - if (page !== undefined) params.set("page", String(page)); + if (page !== undefined) params.set('page', String(page)); const query = params.toString(); - const path = `/api/metrics/list${query ? "?" + query : ""}`; + const path = `/api/metrics/list${query ? '?' + query : ''}`; return this.getJson(path); } @@ -15195,9 +6527,9 @@ class BrkClient extends BrkClientBase { */ async searchMetrics(metric, limit) { const params = new URLSearchParams(); - if (limit !== undefined) params.set("limit", String(limit)); + if (limit !== undefined) params.set('limit', String(limit)); const query = params.toString(); - const path = `/api/metrics/search/${metric}${query ? "?" + query : ""}`; + const path = `/api/metrics/search/${metric}${query ? '?' + query : ''}`; return this.getJson(path); } @@ -15589,6 +6921,7 @@ class BrkClient extends BrkClientBase { async getVersion() { return this.getJson(`/version`); } + } export { BrkClient, BrkError }; diff --git a/packages/brk_client/brk_client/__init__.py b/packages/brk_client/brk_client/__init__.py index b2a8d9425..d4664f887 100644 --- a/packages/brk_client/brk_client/__init__.py +++ b/packages/brk_client/brk_client/__init__.py @@ -1864,31 +1864,6 @@ class Price111dSmaPattern: self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'ratio_pct99_usd')) self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, 'ratio')) -class PercentilesPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.pct05: 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.""" @@ -1914,6 +1889,31 @@ class ActivePriceRatioPattern: self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct99_usd')) 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.""" @@ -2035,17 +2035,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]): """Pattern struct for repeated tree structure.""" @@ -2171,6 +2171,19 @@ class _0satsPattern: self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) +class _100btcPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.activity: ActivityPattern2 = ActivityPattern2(client, acc) + self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) + self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count')) + self.realized: RealizedPattern = RealizedPattern(client, acc) + self.relative: RelativePattern = RelativePattern(client, acc) + self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) + class PeriodCagrPattern: """Pattern struct for repeated tree structure.""" @@ -2197,6 +2210,19 @@ class UnrealizedPattern: self.unrealized_loss: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'unrealized_loss')) self.unrealized_profit: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'unrealized_profit')) +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.""" @@ -2210,19 +2236,6 @@ class _0satsPattern2: self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) -class _100btcPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.activity: ActivityPattern2 = ActivityPattern2(client, acc) - self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) - self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count')) - self.realized: RealizedPattern = RealizedPattern(client, acc) - self.relative: RelativePattern = RelativePattern(client, acc) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) - class _10yPattern: """Pattern struct for repeated tree structure.""" @@ -2236,19 +2249,6 @@ class _10yPattern: 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.""" @@ -2270,24 +2270,6 @@ class SplitPattern2(Generic[T]): self.low: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'low')) self.open: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'open')) -class ActiveSupplyPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.bitcoin: MetricPattern1[Bitcoin] = MetricPattern1(client, _m(acc, 'btc')) - self.dollars: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'usd')) - self.sats: MetricPattern1[Sats] = MetricPattern1(client, acc) - -class 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 _2015Pattern: """Pattern struct for repeated tree structure.""" @@ -2306,12 +2288,12 @@ class CoinbasePattern: self.dollars: DollarsPattern[Dollars] = DollarsPattern(client, _m(acc, 'usd')) self.sats: DollarsPattern[Sats] = DollarsPattern(client, acc) -class UnclaimedRewardsPattern: +class CoinbasePattern2: """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.bitcoin: BlockCountPattern[Bitcoin] = BlockCountPattern(client, _m(acc, 'btc')) self.dollars: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'usd')) self.sats: BlockCountPattern[Sats] = BlockCountPattern(client, acc) @@ -2333,6 +2315,24 @@ class CostBasisPattern2: self.min: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'min_cost_basis')) self.percentiles: PercentilesPattern = PercentilesPattern(client, _m(acc, 'cost_basis')) +class ActiveSupplyPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.bitcoin: MetricPattern1[Bitcoin] = MetricPattern1(client, _m(acc, 'btc')) + self.dollars: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'usd')) + self.sats: MetricPattern1[Sats] = MetricPattern1(client, acc) + +class 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 CostBasisPattern: """Pattern struct for repeated tree structure.""" @@ -2373,14 +2373,6 @@ class BlockCountPattern(Generic[T]): 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_sats')) - self.split: SplitPattern2[T] = SplitPattern2(client, _m(acc, 'sats')) - class BitcoinPattern2(Generic[T]): """Pattern struct for repeated tree structure.""" @@ -2389,12 +2381,13 @@ class BitcoinPattern2(Generic[T]): self.cumulative: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'cumulative')) self.sum: MetricPattern1[T] = MetricPattern1(client, acc) -class OutputsPattern: +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.utxo_count: MetricPattern1[StoredU64] = MetricPattern1(client, acc) + self.ohlc: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'ohlc_sats')) + self.split: SplitPattern2[T] = SplitPattern2(client, _m(acc, 'sats')) class RealizedPriceExtraPattern: """Pattern struct for repeated tree structure.""" @@ -2403,6 +2396,13 @@ class RealizedPriceExtraPattern: """Create pattern node with accumulated metric name.""" self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, acc) +class OutputsPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.utxo_count: MetricPattern1[StoredU64] = MetricPattern1(client, acc) + # Metrics tree classes class MetricsTree_Addresses: @@ -2569,114 +2569,18 @@ class MetricsTree_Cointime_Cap: self.thermo_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'thermo_cap') self.vaulted_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'vaulted_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.""" def __init__(self, client: BrkClientBase, base_path: str = ''): self.active_price: MetricPattern1[Dollars] = MetricPattern1(client, 'active_price') - self.active_price_ratio: MetricsTree_Cointime_Pricing_ActivePriceRatio = MetricsTree_Cointime_Pricing_ActivePriceRatio(client) + self.active_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern(client, 'active_price_ratio') self.cointime_price: MetricPattern1[Dollars] = MetricPattern1(client, 'cointime_price') - self.cointime_price_ratio: MetricsTree_Cointime_Pricing_CointimePriceRatio = MetricsTree_Cointime_Pricing_CointimePriceRatio(client) + self.cointime_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern(client, 'cointime_price_ratio') self.true_market_mean: MetricPattern1[Dollars] = MetricPattern1(client, 'true_market_mean') - self.true_market_mean_ratio: MetricsTree_Cointime_Pricing_TrueMarketMeanRatio = MetricsTree_Cointime_Pricing_TrueMarketMeanRatio(client) + self.true_market_mean_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern(client, 'true_market_mean_ratio') self.vaulted_price: MetricPattern1[Dollars] = MetricPattern1(client, 'vaulted_price') - self.vaulted_price_ratio: MetricsTree_Cointime_Pricing_VaultedPriceRatio = MetricsTree_Cointime_Pricing_VaultedPriceRatio(client) + self.vaulted_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern(client, 'vaulted_price_ratio') class MetricsTree_Cointime_Supply: """Metrics tree node.""" @@ -2727,594 +2631,61 @@ class MetricsTree_Constants: self.constant_minus_3: MetricPattern1[StoredI16] = MetricPattern1(client, 'constant_minus_3') self.constant_minus_4: MetricPattern1[StoredI16] = MetricPattern1(client, 'constant_minus_4') -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: MetricsTree_Distribution_AddressCohorts_AmountRange_0sats = MetricsTree_Distribution_AddressCohorts_AmountRange_0sats(client) - self._100btc_to_1k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_100btcTo1kBtc = MetricsTree_Distribution_AddressCohorts_AmountRange_100btcTo1kBtc(client) - self._100k_btc_or_more: MetricsTree_Distribution_AddressCohorts_AmountRange_100kBtcOrMore = MetricsTree_Distribution_AddressCohorts_AmountRange_100kBtcOrMore(client) - self._100k_sats_to_1m_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_100kSatsTo1mSats = MetricsTree_Distribution_AddressCohorts_AmountRange_100kSatsTo1mSats(client) - self._100sats_to_1k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_100satsTo1kSats = MetricsTree_Distribution_AddressCohorts_AmountRange_100satsTo1kSats(client) - self._10btc_to_100btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10btcTo100btc = MetricsTree_Distribution_AddressCohorts_AmountRange_10btcTo100btc(client) - self._10k_btc_to_100k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10kBtcTo100kBtc = MetricsTree_Distribution_AddressCohorts_AmountRange_10kBtcTo100kBtc(client) - self._10k_sats_to_100k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_10kSatsTo100kSats = MetricsTree_Distribution_AddressCohorts_AmountRange_10kSatsTo100kSats(client) - self._10m_sats_to_1btc: MetricsTree_Distribution_AddressCohorts_AmountRange_10mSatsTo1btc = MetricsTree_Distribution_AddressCohorts_AmountRange_10mSatsTo1btc(client) - self._10sats_to_100sats: MetricsTree_Distribution_AddressCohorts_AmountRange_10satsTo100sats = MetricsTree_Distribution_AddressCohorts_AmountRange_10satsTo100sats(client) - self._1btc_to_10btc: MetricsTree_Distribution_AddressCohorts_AmountRange_1btcTo10btc = MetricsTree_Distribution_AddressCohorts_AmountRange_1btcTo10btc(client) - self._1k_btc_to_10k_btc: MetricsTree_Distribution_AddressCohorts_AmountRange_1kBtcTo10kBtc = MetricsTree_Distribution_AddressCohorts_AmountRange_1kBtcTo10kBtc(client) - self._1k_sats_to_10k_sats: MetricsTree_Distribution_AddressCohorts_AmountRange_1kSatsTo10kSats = MetricsTree_Distribution_AddressCohorts_AmountRange_1kSatsTo10kSats(client) - 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') + self._0sats: _0satsPattern = _0satsPattern(client, 'addrs_with_0sats') + self._100btc_to_1k_btc: _0satsPattern = _0satsPattern(client, 'addrs_above_100btc_under_1k_btc') + self._100k_btc_or_more: _0satsPattern = _0satsPattern(client, 'addrs_above_100k_btc') + self._100k_sats_to_1m_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_100k_sats_under_1m_sats') + self._100sats_to_1k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_100sats_under_1k_sats') + self._10btc_to_100btc: _0satsPattern = _0satsPattern(client, 'addrs_above_10btc_under_100btc') + self._10k_btc_to_100k_btc: _0satsPattern = _0satsPattern(client, 'addrs_above_10k_btc_under_100k_btc') + self._10k_sats_to_100k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_10k_sats_under_100k_sats') + self._10m_sats_to_1btc: _0satsPattern = _0satsPattern(client, 'addrs_above_10m_sats_under_1btc') + self._10sats_to_100sats: _0satsPattern = _0satsPattern(client, 'addrs_above_10sats_under_100sats') + self._1btc_to_10btc: _0satsPattern = _0satsPattern(client, 'addrs_above_1btc_under_10btc') + self._1k_btc_to_10k_btc: _0satsPattern = _0satsPattern(client, 'addrs_above_1k_btc_under_10k_btc') + self._1k_sats_to_10k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_1k_sats_under_10k_sats') + self._1m_sats_to_10m_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_1m_sats_under_10m_sats') + self._1sat_to_10sats: _0satsPattern = _0satsPattern(client, 'addrs_above_1sat_under_10sats') class MetricsTree_Distribution_AddressCohorts_GeAmount: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._100btc: 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') + 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') class MetricsTree_Distribution_AddressCohorts_LtAmount: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - 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) + self._100btc: _0satsPattern = _0satsPattern(client, 'addrs_under_100btc') + self._100k_btc: _0satsPattern = _0satsPattern(client, 'addrs_under_100k_btc') + self._100k_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_100k_sats') + self._100sats: _0satsPattern = _0satsPattern(client, 'addrs_under_100sats') + self._10btc: _0satsPattern = _0satsPattern(client, 'addrs_under_10btc') + self._10k_btc: _0satsPattern = _0satsPattern(client, 'addrs_under_10k_btc') + self._10k_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_10k_sats') + self._10m_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_10m_sats') + self._10sats: _0satsPattern = _0satsPattern(client, 'addrs_under_10sats') + self._1btc: _0satsPattern = _0satsPattern(client, 'addrs_under_1btc') + self._1k_btc: _0satsPattern = _0satsPattern(client, 'addrs_under_1k_btc') + self._1k_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_1k_sats') + self._1m_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_1m_sats') class MetricsTree_Distribution_AddressCohorts: """Metrics tree node.""" @@ -3344,461 +2715,31 @@ class MetricsTree_Distribution_AnyAddressIndexes: self.p2wpkh: MetricPattern23[AnyAddressIndex] = MetricPattern23(client, 'anyaddressindex') self.p2wsh: MetricPattern24[AnyAddressIndex] = MetricPattern24(client, 'anyaddressindex') -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: MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y = MetricsTree_Distribution_UtxoCohorts_AgeRange_10yTo12y(client) - self._12y_to_15y: MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y = MetricsTree_Distribution_UtxoCohorts_AgeRange_12yTo15y(client) - self._1d_to_1w: MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w = MetricsTree_Distribution_UtxoCohorts_AgeRange_1dTo1w(client) - self._1h_to_1d: MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d = MetricsTree_Distribution_UtxoCohorts_AgeRange_1hTo1d(client) - self._1m_to_2m: MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m = MetricsTree_Distribution_UtxoCohorts_AgeRange_1mTo2m(client) - self._1w_to_1m: MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m = MetricsTree_Distribution_UtxoCohorts_AgeRange_1wTo1m(client) - self._1y_to_2y: MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y = MetricsTree_Distribution_UtxoCohorts_AgeRange_1yTo2y(client) - self._2m_to_3m: MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m = MetricsTree_Distribution_UtxoCohorts_AgeRange_2mTo3m(client) - self._2y_to_3y: MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y = MetricsTree_Distribution_UtxoCohorts_AgeRange_2yTo3y(client) - self._3m_to_4m: MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m = MetricsTree_Distribution_UtxoCohorts_AgeRange_3mTo4m(client) - self._3y_to_4y: MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y = MetricsTree_Distribution_UtxoCohorts_AgeRange_3yTo4y(client) - self._4m_to_5m: MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m = MetricsTree_Distribution_UtxoCohorts_AgeRange_4mTo5m(client) - self._4y_to_5y: MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y = MetricsTree_Distribution_UtxoCohorts_AgeRange_4yTo5y(client) - self._5m_to_6m: MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m = MetricsTree_Distribution_UtxoCohorts_AgeRange_5mTo6m(client) - self._5y_to_6y: MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y = MetricsTree_Distribution_UtxoCohorts_AgeRange_5yTo6y(client) - self._6m_to_1y: MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y = MetricsTree_Distribution_UtxoCohorts_AgeRange_6mTo1y(client) - self._6y_to_7y: MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y = MetricsTree_Distribution_UtxoCohorts_AgeRange_6yTo7y(client) - self._7y_to_8y: MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y = MetricsTree_Distribution_UtxoCohorts_AgeRange_7yTo8y(client) - self._8y_to_10y: MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y = MetricsTree_Distribution_UtxoCohorts_AgeRange_8yTo10y(client) - 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) - -class MetricsTree_Distribution_UtxoCohorts_All_Activity: - """Metrics tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.coinblocks_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'coinblocks_destroyed') - self.coindays_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'coindays_destroyed') - self.satblocks_destroyed: MetricPattern11[Sats] = MetricPattern11(client, 'satblocks_destroyed') - self.satdays_destroyed: MetricPattern11[Sats] = MetricPattern11(client, 'satdays_destroyed') - self.sent: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, 'sent') + self._10y_to_12y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_10y_up_to_12y_old') + self._12y_to_15y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_12y_up_to_15y_old') + self._1d_to_1w: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_1d_up_to_1w_old') + self._1h_to_1d: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_1h_up_to_1d_old') + self._1m_to_2m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_1m_up_to_2m_old') + self._1w_to_1m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_1w_up_to_1m_old') + self._1y_to_2y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_1y_up_to_2y_old') + self._2m_to_3m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_2m_up_to_3m_old') + self._2y_to_3y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_2y_up_to_3y_old') + self._3m_to_4m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_3m_up_to_4m_old') + self._3y_to_4y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_3y_up_to_4y_old') + self._4m_to_5m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_4m_up_to_5m_old') + self._4y_to_5y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_4y_up_to_5y_old') + self._5m_to_6m: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_5m_up_to_6m_old') + self._5y_to_6y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_5y_up_to_6y_old') + self._6m_to_1y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_6m_up_to_1y_old') + self._6y_to_7y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_6y_up_to_7y_old') + self._7y_to_8y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_7y_up_to_8y_old') + self._8y_to_10y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_8y_up_to_10y_old') + self.from_15y: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_at_least_15y_old') + self.up_to_1h: _10yTo12yPattern = _10yTo12yPattern(client, 'utxos_up_to_1h_old') class MetricsTree_Distribution_UtxoCohorts_All_CostBasis: """Metrics tree node.""" @@ -3808,67 +2749,6 @@ class MetricsTree_Distribution_UtxoCohorts_All_CostBasis: self.min: MetricPattern1[Dollars] = MetricPattern1(client, 'min_cost_basis') 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.""" @@ -3880,1160 +2760,148 @@ class MetricsTree_Distribution_UtxoCohorts_All_Relative: self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, 'unrealized_loss_rel_to_own_total_unrealized_pnl') self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, 'unrealized_profit_rel_to_own_total_unrealized_pnl') -class MetricsTree_Distribution_UtxoCohorts_All_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.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.activity: MetricsTree_Distribution_UtxoCohorts_All_Activity = MetricsTree_Distribution_UtxoCohorts_All_Activity(client) + self.activity: ActivityPattern2 = ActivityPattern2(client, '') self.cost_basis: MetricsTree_Distribution_UtxoCohorts_All_CostBasis = MetricsTree_Distribution_UtxoCohorts_All_CostBasis(client) self.outputs: OutputsPattern = OutputsPattern(client, 'utxo_count') - self.realized: MetricsTree_Distribution_UtxoCohorts_All_Realized = MetricsTree_Distribution_UtxoCohorts_All_Realized(client) + self.realized: RealizedPattern3 = RealizedPattern3(client, '') self.relative: MetricsTree_Distribution_UtxoCohorts_All_Relative = MetricsTree_Distribution_UtxoCohorts_All_Relative(client) self.supply: SupplyPattern2 = SupplyPattern2(client, 'supply') - self.unrealized: 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') + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, '') class MetricsTree_Distribution_UtxoCohorts_AmountRange: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._0sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_0sats = MetricsTree_Distribution_UtxoCohorts_AmountRange_0sats(client) - self._100btc_to_1k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_100btcTo1kBtc = MetricsTree_Distribution_UtxoCohorts_AmountRange_100btcTo1kBtc(client) - self._100k_btc_or_more: MetricsTree_Distribution_UtxoCohorts_AmountRange_100kBtcOrMore = MetricsTree_Distribution_UtxoCohorts_AmountRange_100kBtcOrMore(client) - self._100k_sats_to_1m_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_100kSatsTo1mSats = MetricsTree_Distribution_UtxoCohorts_AmountRange_100kSatsTo1mSats(client) - self._100sats_to_1k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_100satsTo1kSats = MetricsTree_Distribution_UtxoCohorts_AmountRange_100satsTo1kSats(client) - self._10btc_to_100btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10btcTo100btc = MetricsTree_Distribution_UtxoCohorts_AmountRange_10btcTo100btc(client) - self._10k_btc_to_100k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10kBtcTo100kBtc = MetricsTree_Distribution_UtxoCohorts_AmountRange_10kBtcTo100kBtc(client) - self._10k_sats_to_100k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_10kSatsTo100kSats = MetricsTree_Distribution_UtxoCohorts_AmountRange_10kSatsTo100kSats(client) - self._10m_sats_to_1btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_10mSatsTo1btc = MetricsTree_Distribution_UtxoCohorts_AmountRange_10mSatsTo1btc(client) - self._10sats_to_100sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_10satsTo100sats = MetricsTree_Distribution_UtxoCohorts_AmountRange_10satsTo100sats(client) - self._1btc_to_10btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_1btcTo10btc = MetricsTree_Distribution_UtxoCohorts_AmountRange_1btcTo10btc(client) - self._1k_btc_to_10k_btc: MetricsTree_Distribution_UtxoCohorts_AmountRange_1kBtcTo10kBtc = MetricsTree_Distribution_UtxoCohorts_AmountRange_1kBtcTo10kBtc(client) - self._1k_sats_to_10k_sats: MetricsTree_Distribution_UtxoCohorts_AmountRange_1kSatsTo10kSats = MetricsTree_Distribution_UtxoCohorts_AmountRange_1kSatsTo10kSats(client) - 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') + self._0sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_with_0sats') + self._100btc_to_1k_btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100btc_under_1k_btc') + self._100k_btc_or_more: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100k_btc') + self._100k_sats_to_1m_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100k_sats_under_1m_sats') + self._100sats_to_1k_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100sats_under_1k_sats') + self._10btc_to_100btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10btc_under_100btc') + self._10k_btc_to_100k_btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10k_btc_under_100k_btc') + self._10k_sats_to_100k_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10k_sats_under_100k_sats') + self._10m_sats_to_1btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10m_sats_under_1btc') + self._10sats_to_100sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10sats_under_100sats') + self._1btc_to_10btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1btc_under_10btc') + self._1k_btc_to_10k_btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1k_btc_under_10k_btc') + self._1k_sats_to_10k_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1k_sats_under_10k_sats') + self._1m_sats_to_10m_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1m_sats_under_10m_sats') + self._1sat_to_10sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1sat_under_10sats') class MetricsTree_Distribution_UtxoCohorts_Epoch: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._0: 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') + self._0: _0satsPattern2 = _0satsPattern2(client, 'epoch_0') + self._1: _0satsPattern2 = _0satsPattern2(client, 'epoch_1') + self._2: _0satsPattern2 = _0satsPattern2(client, 'epoch_2') + self._3: _0satsPattern2 = _0satsPattern2(client, 'epoch_3') + self._4: _0satsPattern2 = _0satsPattern2(client, 'epoch_4') class MetricsTree_Distribution_UtxoCohorts_GeAmount: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._100btc: 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._100btc: _100btcPattern = _100btcPattern(client, 'utxos_above_100btc') + self._100k_sats: _100btcPattern = _100btcPattern(client, 'utxos_above_100k_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: 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._100btc: _100btcPattern = _100btcPattern(client, 'utxos_under_100btc') + self._100k_btc: _100btcPattern = _100btcPattern(client, 'utxos_under_100k_btc') + self._100k_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_100k_sats') + self._100sats: _100btcPattern = _100btcPattern(client, 'utxos_under_100sats') + self._10btc: _100btcPattern = _100btcPattern(client, 'utxos_under_10btc') + self._10k_btc: _100btcPattern = _100btcPattern(client, 'utxos_under_10k_btc') + self._10k_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_10k_sats') + self._10m_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_10m_sats') + self._10sats: _100btcPattern = _100btcPattern(client, 'utxos_under_10sats') + self._1btc: _100btcPattern = _100btcPattern(client, 'utxos_under_1btc') + self._1k_btc: _100btcPattern = _100btcPattern(client, 'utxos_under_1k_btc') + self._1k_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_1k_sats') + self._1m_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_1m_sats') class MetricsTree_Distribution_UtxoCohorts_MaxAge: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._10y: 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') + 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') class MetricsTree_Distribution_UtxoCohorts_MinAge: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - 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') + 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') class MetricsTree_Distribution_UtxoCohorts_Term_Long: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): self.activity: ActivityPattern2 = ActivityPattern2(client, 'lth') - self.cost_basis: MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis = MetricsTree_Distribution_UtxoCohorts_Term_Long_CostBasis(client) + self.cost_basis: CostBasisPattern2 = CostBasisPattern2(client, 'lth') self.outputs: OutputsPattern = OutputsPattern(client, 'lth_utxo_count') self.realized: RealizedPattern2 = RealizedPattern2(client, 'lth') self.relative: RelativePattern5 = RelativePattern5(client, 'lth') self.supply: SupplyPattern2 = SupplyPattern2(client, 'lth_supply') self.unrealized: UnrealizedPattern = UnrealizedPattern(client, 'lth') -class MetricsTree_Distribution_UtxoCohorts_Term_Short_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: MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis = MetricsTree_Distribution_UtxoCohorts_Term_Short_CostBasis(client) + self.cost_basis: CostBasisPattern2 = CostBasisPattern2(client, 'sth') self.outputs: OutputsPattern = OutputsPattern(client, 'sth_utxo_count') self.realized: RealizedPattern3 = RealizedPattern3(client, 'sth') self.relative: RelativePattern5 = RelativePattern5(client, 'sth') @@ -5047,392 +2915,44 @@ class MetricsTree_Distribution_UtxoCohorts_Term: self.long: MetricsTree_Distribution_UtxoCohorts_Term_Long = MetricsTree_Distribution_UtxoCohorts_Term_Long(client) self.short: MetricsTree_Distribution_UtxoCohorts_Term_Short = MetricsTree_Distribution_UtxoCohorts_Term_Short(client) -class MetricsTree_Distribution_UtxoCohorts_Type_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: 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') + self.empty: _0satsPattern2 = _0satsPattern2(client, 'empty_outputs') + self.p2a: _0satsPattern2 = _0satsPattern2(client, 'p2a') + self.p2ms: _0satsPattern2 = _0satsPattern2(client, 'p2ms') + self.p2pk33: _0satsPattern2 = _0satsPattern2(client, 'p2pk33') + self.p2pk65: _0satsPattern2 = _0satsPattern2(client, 'p2pk65') + self.p2pkh: _0satsPattern2 = _0satsPattern2(client, 'p2pkh') + self.p2sh: _0satsPattern2 = _0satsPattern2(client, 'p2sh') + self.p2tr: _0satsPattern2 = _0satsPattern2(client, 'p2tr') + self.p2wpkh: _0satsPattern2 = _0satsPattern2(client, 'p2wpkh') + self.p2wsh: _0satsPattern2 = _0satsPattern2(client, 'p2wsh') + self.unknown: _0satsPattern2 = _0satsPattern2(client, 'unknown_outputs') class MetricsTree_Distribution_UtxoCohorts_Year: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._2009: 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) + self._2009: _0satsPattern2 = _0satsPattern2(client, 'year_2009') + self._2010: _0satsPattern2 = _0satsPattern2(client, 'year_2010') + self._2011: _0satsPattern2 = _0satsPattern2(client, 'year_2011') + self._2012: _0satsPattern2 = _0satsPattern2(client, 'year_2012') + self._2013: _0satsPattern2 = _0satsPattern2(client, 'year_2013') + self._2014: _0satsPattern2 = _0satsPattern2(client, 'year_2014') + self._2015: _0satsPattern2 = _0satsPattern2(client, 'year_2015') + self._2016: _0satsPattern2 = _0satsPattern2(client, 'year_2016') + self._2017: _0satsPattern2 = _0satsPattern2(client, 'year_2017') + self._2018: _0satsPattern2 = _0satsPattern2(client, 'year_2018') + self._2019: _0satsPattern2 = _0satsPattern2(client, 'year_2019') + self._2020: _0satsPattern2 = _0satsPattern2(client, 'year_2020') + self._2021: _0satsPattern2 = _0satsPattern2(client, 'year_2021') + self._2022: _0satsPattern2 = _0satsPattern2(client, 'year_2022') + self._2023: _0satsPattern2 = _0satsPattern2(client, 'year_2023') + self._2024: _0satsPattern2 = _0satsPattern2(client, 'year_2024') + self._2025: _0satsPattern2 = _0satsPattern2(client, 'year_2025') + self._2026: _0satsPattern2 = _0satsPattern2(client, 'year_2026') class MetricsTree_Distribution_UtxoCohorts: """Metrics tree node.""" @@ -5716,21 +3236,21 @@ class MetricsTree_Market_Ath: self.price_drawdown: MetricPattern3[StoredF32] = MetricPattern3(client, 'price_drawdown') self.years_since_price_ath: MetricPattern4[StoredF32] = MetricPattern4(client, 'years_since_price_ath') -class MetricsTree_Market_Dca_ClassReturns: +class MetricsTree_Market_Dca_ClassAveragePrice: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._2015: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2015_returns') - self._2016: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2016_returns') - self._2017: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2017_returns') - self._2018: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2018_returns') - self._2019: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2019_returns') - self._2020: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2020_returns') - self._2021: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2021_returns') - self._2022: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2022_returns') - self._2023: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2023_returns') - self._2024: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2024_returns') - self._2025: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2025_returns') + self._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.""" @@ -5752,8 +3272,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_returns: MetricsTree_Market_Dca_ClassReturns = MetricsTree_Market_Dca_ClassReturns(client) + self.class_average_price: MetricsTree_Market_Dca_ClassAveragePrice = MetricsTree_Market_Dca_ClassAveragePrice(client) + self.class_returns: ClassAveragePricePattern[StoredF32] = ClassAveragePricePattern(client, 'dca_class') self.class_stack: MetricsTree_Market_Dca_ClassStack = MetricsTree_Market_Dca_ClassStack(client) self.period_average_price: PeriodAveragePricePattern[Dollars] = PeriodAveragePricePattern(client, 'dca_average_price') self.period_cagr: PeriodCagrPattern = PeriodCagrPattern(client, 'dca_cagr') @@ -5785,845 +3305,45 @@ class MetricsTree_Market_Indicators: self.stoch_rsi_d: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_rsi_d') self.stoch_rsi_k: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_rsi_k') -class MetricsTree_Market_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: MetricsTree_Market_MovingAverage_Price111dSma = MetricsTree_Market_MovingAverage_Price111dSma(client) - self.price_12d_ema: MetricsTree_Market_MovingAverage_Price12dEma = MetricsTree_Market_MovingAverage_Price12dEma(client) - self.price_13d_ema: MetricsTree_Market_MovingAverage_Price13dEma = MetricsTree_Market_MovingAverage_Price13dEma(client) - self.price_13d_sma: MetricsTree_Market_MovingAverage_Price13dSma = MetricsTree_Market_MovingAverage_Price13dSma(client) - self.price_144d_ema: MetricsTree_Market_MovingAverage_Price144dEma = MetricsTree_Market_MovingAverage_Price144dEma(client) - self.price_144d_sma: MetricsTree_Market_MovingAverage_Price144dSma = MetricsTree_Market_MovingAverage_Price144dSma(client) - self.price_1m_ema: MetricsTree_Market_MovingAverage_Price1mEma = MetricsTree_Market_MovingAverage_Price1mEma(client) - self.price_1m_sma: MetricsTree_Market_MovingAverage_Price1mSma = MetricsTree_Market_MovingAverage_Price1mSma(client) - self.price_1w_ema: MetricsTree_Market_MovingAverage_Price1wEma = MetricsTree_Market_MovingAverage_Price1wEma(client) - self.price_1w_sma: MetricsTree_Market_MovingAverage_Price1wSma = MetricsTree_Market_MovingAverage_Price1wSma(client) - self.price_1y_ema: MetricsTree_Market_MovingAverage_Price1yEma = MetricsTree_Market_MovingAverage_Price1yEma(client) - self.price_1y_sma: MetricsTree_Market_MovingAverage_Price1ySma = MetricsTree_Market_MovingAverage_Price1ySma(client) - self.price_200d_ema: MetricsTree_Market_MovingAverage_Price200dEma = MetricsTree_Market_MovingAverage_Price200dEma(client) - self.price_200d_sma: MetricsTree_Market_MovingAverage_Price200dSma = MetricsTree_Market_MovingAverage_Price200dSma(client) + self.price_111d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_111d_sma') + self.price_12d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_12d_ema') + self.price_13d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_13d_ema') + self.price_13d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_13d_sma') + self.price_144d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_144d_ema') + self.price_144d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_144d_sma') + self.price_1m_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1m_ema') + self.price_1m_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1m_sma') + self.price_1w_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1w_ema') + self.price_1w_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1w_sma') + self.price_1y_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1y_ema') + self.price_1y_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1y_sma') + self.price_200d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_200d_ema') + self.price_200d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_200d_sma') self.price_200d_sma_x0_8: MetricPattern4[Dollars] = MetricPattern4(client, 'price_200d_sma_x0_8') self.price_200d_sma_x2_4: MetricPattern4[Dollars] = MetricPattern4(client, 'price_200d_sma_x2_4') - self.price_200w_ema: MetricsTree_Market_MovingAverage_Price200wEma = MetricsTree_Market_MovingAverage_Price200wEma(client) - self.price_200w_sma: MetricsTree_Market_MovingAverage_Price200wSma = MetricsTree_Market_MovingAverage_Price200wSma(client) - self.price_21d_ema: MetricsTree_Market_MovingAverage_Price21dEma = MetricsTree_Market_MovingAverage_Price21dEma(client) - self.price_21d_sma: MetricsTree_Market_MovingAverage_Price21dSma = MetricsTree_Market_MovingAverage_Price21dSma(client) - self.price_26d_ema: MetricsTree_Market_MovingAverage_Price26dEma = MetricsTree_Market_MovingAverage_Price26dEma(client) - self.price_2y_ema: MetricsTree_Market_MovingAverage_Price2yEma = MetricsTree_Market_MovingAverage_Price2yEma(client) - self.price_2y_sma: MetricsTree_Market_MovingAverage_Price2ySma = MetricsTree_Market_MovingAverage_Price2ySma(client) - self.price_34d_ema: MetricsTree_Market_MovingAverage_Price34dEma = MetricsTree_Market_MovingAverage_Price34dEma(client) - self.price_34d_sma: MetricsTree_Market_MovingAverage_Price34dSma = MetricsTree_Market_MovingAverage_Price34dSma(client) - self.price_350d_sma: MetricsTree_Market_MovingAverage_Price350dSma = MetricsTree_Market_MovingAverage_Price350dSma(client) + self.price_200w_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_200w_ema') + self.price_200w_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_200w_sma') + self.price_21d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_21d_ema') + self.price_21d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_21d_sma') + self.price_26d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_26d_ema') + self.price_2y_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_2y_ema') + self.price_2y_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_2y_sma') + self.price_34d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_34d_ema') + self.price_34d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_34d_sma') + self.price_350d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_350d_sma') self.price_350d_sma_x2: MetricPattern4[Dollars] = MetricPattern4(client, 'price_350d_sma_x2') - self.price_4y_ema: MetricsTree_Market_MovingAverage_Price4yEma = MetricsTree_Market_MovingAverage_Price4yEma(client) - self.price_4y_sma: MetricsTree_Market_MovingAverage_Price4ySma = MetricsTree_Market_MovingAverage_Price4ySma(client) - self.price_55d_ema: MetricsTree_Market_MovingAverage_Price55dEma = MetricsTree_Market_MovingAverage_Price55dEma(client) - self.price_55d_sma: MetricsTree_Market_MovingAverage_Price55dSma = MetricsTree_Market_MovingAverage_Price55dSma(client) - self.price_89d_ema: MetricsTree_Market_MovingAverage_Price89dEma = MetricsTree_Market_MovingAverage_Price89dEma(client) - self.price_89d_sma: MetricsTree_Market_MovingAverage_Price89dSma = MetricsTree_Market_MovingAverage_Price89dSma(client) - self.price_8d_ema: MetricsTree_Market_MovingAverage_Price8dEma = MetricsTree_Market_MovingAverage_Price8dEma(client) - self.price_8d_sma: MetricsTree_Market_MovingAverage_Price8dSma = MetricsTree_Market_MovingAverage_Price8dSma(client) + self.price_4y_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_4y_ema') + self.price_4y_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_4y_sma') + self.price_55d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_55d_ema') + self.price_55d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_55d_sma') + self.price_89d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_89d_ema') + self.price_89d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_89d_sma') + self.price_8d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_8d_ema') + self.price_8d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_8d_sma') class MetricsTree_Market_Range: """Metrics tree node.""" @@ -6927,13 +3647,6 @@ class MetricsTree_Price_Oracle: self.price_cents: MetricPattern11[Cents] = MetricPattern11(client, 'oracle_price_cents') self.tx_count: MetricPattern6[StoredU32] = MetricPattern6(client, 'oracle_tx_count') -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.""" @@ -6947,7 +3660,7 @@ class MetricsTree_Price: 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: MetricsTree_Price_Sats = MetricsTree_Price_Sats(client) + self.sats: SatsPattern[OHLCSats] = SatsPattern(client, 'price') self.usd: MetricsTree_Price_Usd = MetricsTree_Price_Usd(client) class MetricsTree_Scripts_Count: diff --git a/website/index.html b/website/index.html index d37375d0e..9bab8fc55 100644 --- a/website/index.html +++ b/website/index.html @@ -620,9 +620,14 @@ display: flex; gap: 1.25rem; - > label { + > label, + > button { pointer-events: auto; } + + > button { + color: var(--off-color); + } } } @@ -1824,6 +1829,8 @@ /> Search + + diff --git a/website/scripts/chart/index.js b/website/scripts/chart/index.js index d9ec7c8bc..68a307901 100644 --- a/website/scripts/chart/index.js +++ b/website/scripts/chart/index.js @@ -653,7 +653,10 @@ export function createChartElement({ ({ count, active }) => { showLine = count > 500; candlestickISeries.applyOptions({ visible: active && !showLine }); - lineISeries.applyOptions({ visible: active && showLine }); + lineISeries.applyOptions({ + visible: active && showLine, + priceLineVisible: active && showLine, + }); }, ); }, diff --git a/website/scripts/entry.js b/website/scripts/entry.js index df6b89cb3..9a0d8a733 100644 --- a/website/scripts/entry.js +++ b/website/scripts/entry.js @@ -52,7 +52,7 @@ * @typedef {Brk.AnyMetricEndpointBuilder} AnyMetricEndpoint * @typedef {Brk.AnyMetricData} AnyMetricData * @typedef {Brk.AddrCountPattern} AddrCountPattern - * @typedef {Brk.MetricsTree_Blocks_Interval} IntervalPattern + * @typedef {FullnessPattern} IntervalPattern * @typedef {Brk.MetricsTree_Supply_Circulating} SupplyPattern * @typedef {Brk.RelativePattern} GlobalRelativePattern * @typedef {Brk.RelativePattern2} OwnRelativePattern diff --git a/website/scripts/main.js b/website/scripts/main.js index 37c5c5c5c..c25a5c825 100644 --- a/website/scripts/main.js +++ b/website/scripts/main.js @@ -545,6 +545,11 @@ signals.createRoot(() => { function initShare() { const shareDiv = getElementById("share-div"); const shareContentDiv = getElementById("share-content-div"); + const shareButton = getElementById("share-button"); + + shareButton.addEventListener("click", () => { + qrcode.set(window.location.href); + }); shareDiv.addEventListener("click", () => { qrcode.set(null); diff --git a/website/scripts/options/chain.js b/website/scripts/options/chain.js index ad9750300..285531ad0 100644 --- a/website/scripts/options/chain.js +++ b/website/scripts/options/chain.js @@ -12,6 +12,7 @@ export function createChainSection(ctx) { colors, brk, line, + baseline, dots, createPriceLine, fromSizePattern, @@ -638,6 +639,17 @@ export function createChainSection(ctx) { }), ], }, + { + name: "Adjustment", + title: "Difficulty Adjustment", + bottom: [ + baseline({ + metric: blocks.difficulty.adjustment, + name: "Difficulty Change", + unit: Unit.percentage, + }), + ], + }, { name: "Hash Price", title: "Hash Price", diff --git a/website/scripts/options/cohorts/data.js b/website/scripts/options/cohorts/data.js index 34901188e..5f56981c8 100644 --- a/website/scripts/options/cohorts/data.js +++ b/website/scripts/options/cohorts/data.js @@ -10,6 +10,7 @@ import { ltAmountColors, amountRangeColors, spendableTypeColors, + yearColors, } from "../colors/index.js"; /** @@ -40,6 +41,7 @@ export function buildCohortData(colors, brk) { LT_AMOUNT_NAMES, AMOUNT_RANGE_NAMES, SPENDABLE_TYPE_NAMES, + YEAR_NAMES, } = brk; // Base cohort representing "all" - CohortAll (adjustedSopr + percentiles but no RelToMarketCap) @@ -210,6 +212,18 @@ export function buildCohortData(colors, brk) { }; }); + // Year cohorts - CohortBasic (neither adjustedSopr nor percentiles) + /** @type {readonly CohortBasic[]} */ + const year = entries(utxoCohorts.year).map(([key, tree]) => { + const names = YEAR_NAMES[key]; + return { + name: names.short, + title: names.long, + color: colors[yearColors[key]], + tree, + }; + }); + return { cohortAll, termShort, @@ -225,5 +239,6 @@ export function buildCohortData(colors, brk) { utxosAmountRanges, addressesAmountRanges, type, + year, }; } diff --git a/website/scripts/options/cointime.js b/website/scripts/options/cointime.js index 654e2400a..921fee4cc 100644 --- a/website/scripts/options/cointime.js +++ b/website/scripts/options/cointime.js @@ -139,28 +139,102 @@ function createCointimePriceWithRatioOptions( }, { name: "ZScores", - tree: sdPatterns.map(({ nameAddon, titleAddon, sd }) => ({ - name: nameAddon, - title: `${title} ${titleAddon} Z-Score`, - top: getSdBands(sd).map(({ name: bandName, prop, color: bandColor }) => - line({ - metric: prop, - name: bandName, - color: bandColor, - unit: Unit.usd, - }), - ), - bottom: [ - line({ metric: sd.zscore, name: "Z-Score", color, unit: Unit.sd }), - createPriceLine({ unit: Unit.sd, number: 3 }), - createPriceLine({ unit: Unit.sd, number: 2 }), - createPriceLine({ unit: Unit.sd, number: 1 }), - createPriceLine({ unit: Unit.sd, number: 0 }), - createPriceLine({ unit: Unit.sd, number: -1 }), - createPriceLine({ unit: Unit.sd, number: -2 }), - createPriceLine({ unit: Unit.sd, number: -3 }), - ], - })), + tree: [ + // Compare all Z-Scores + { + name: "Compare", + title: `Compare ${title} Z-Scores`, + top: [ + line({ metric: price, name: legend, color, unit: Unit.usd }), + line({ + metric: ratio.ratio1ySd._0sdUsd, + name: "1y 0sd", + color: colors.fuchsia, + defaultActive: false, + unit: Unit.usd, + }), + line({ + metric: ratio.ratio2ySd._0sdUsd, + name: "2y 0sd", + color: colors.purple, + defaultActive: false, + unit: Unit.usd, + }), + line({ + metric: ratio.ratio4ySd._0sdUsd, + name: "4y 0sd", + color: colors.violet, + defaultActive: false, + unit: Unit.usd, + }), + line({ + metric: ratio.ratioSd._0sdUsd, + name: "0sd", + color: colors.indigo, + defaultActive: false, + unit: Unit.usd, + }), + ], + bottom: [ + line({ + metric: ratio.ratioSd.zscore, + name: "All", + color: colors.default, + unit: Unit.sd, + }), + line({ + metric: ratio.ratio4ySd.zscore, + name: "4y", + color: colors.lime, + unit: Unit.sd, + }), + line({ + metric: ratio.ratio2ySd.zscore, + name: "2y", + color: colors.avocado, + unit: Unit.sd, + }), + line({ + metric: ratio.ratio1ySd.zscore, + name: "1y", + color: colors.yellow, + unit: Unit.sd, + }), + createPriceLine({ unit: Unit.sd, number: 4 }), + createPriceLine({ unit: Unit.sd, number: 3 }), + createPriceLine({ unit: Unit.sd, number: 2 }), + createPriceLine({ unit: Unit.sd, number: 1 }), + createPriceLine({ unit: Unit.sd, number: 0 }), + createPriceLine({ unit: Unit.sd, number: -1 }), + createPriceLine({ unit: Unit.sd, number: -2 }), + createPriceLine({ unit: Unit.sd, number: -3 }), + createPriceLine({ unit: Unit.sd, number: -4 }), + ], + }, + // Individual Z-Score charts + ...sdPatterns.map(({ nameAddon, titleAddon, sd }) => ({ + name: nameAddon, + title: `${title} ${titleAddon} Z-Score`, + top: getSdBands(sd).map(({ name: bandName, prop, color: bandColor }) => + line({ + metric: prop, + name: bandName, + color: bandColor, + unit: Unit.usd, + }), + ), + bottom: [ + line({ metric: sd.zscore, name: "Z-Score", color, unit: Unit.sd }), + createPriceLine({ unit: Unit.sd, number: 3 }), + createPriceLine({ unit: Unit.sd, number: 2 }), + createPriceLine({ unit: Unit.sd, number: 1 }), + createPriceLine({ unit: Unit.sd, number: 0 }), + createPriceLine({ unit: Unit.sd, number: -1 }), + createPriceLine({ unit: Unit.sd, number: -2 }), + createPriceLine({ unit: Unit.sd, number: -3 }), + ], + })), + ], }, ]; } diff --git a/website/scripts/options/colors/cohorts.js b/website/scripts/options/colors/cohorts.js index de194ea7c..3c03cacf8 100644 --- a/website/scripts/options/colors/cohorts.js +++ b/website/scripts/options/colors/cohorts.js @@ -150,3 +150,25 @@ export const spendableTypeColors = { unknown: "violet", empty: "fuchsia", }; + +/** @type {Readonly>} */ +export const yearColors = { + _2009: "red", + _2010: "orange", + _2011: "amber", + _2012: "yellow", + _2013: "lime", + _2014: "green", + _2015: "teal", + _2016: "cyan", + _2017: "sky", + _2018: "blue", + _2019: "indigo", + _2020: "violet", + _2021: "purple", + _2022: "fuchsia", + _2023: "pink", + _2024: "rose", + _2025: "red", + _2026: "orange", +}; diff --git a/website/scripts/options/colors/index.js b/website/scripts/options/colors/index.js index 38683d8d0..c7a2d2482 100644 --- a/website/scripts/options/colors/index.js +++ b/website/scripts/options/colors/index.js @@ -9,6 +9,7 @@ export { ltAmountColors, amountRangeColors, spendableTypeColors, + yearColors, } from "./cohorts.js"; export { averageColors, dcaColors } from "./misc.js"; diff --git a/website/scripts/options/partial.js b/website/scripts/options/partial.js index c78aed1a4..5378bc5eb 100644 --- a/website/scripts/options/partial.js +++ b/website/scripts/options/partial.js @@ -1,6 +1,5 @@ /** Partial options - Main entry point */ -import { localhost } from "../utils/env.js"; import { createContext } from "./context.js"; import { buildCohortData, @@ -45,6 +44,7 @@ export function createPartialOptions({ colors, brk }) { utxosAmountRanges, addressesAmountRanges, type, + year, } = buildCohortData(colors, brk); // Helpers to map cohorts by capability type @@ -58,16 +58,16 @@ export function createPartialOptions({ colors, brk }) { const mapAddressCohorts = (cohort) => createAddressCohortFolder(ctx, cohort); return [ - // Debug explorer (localhost only) - ...(localhost - ? [ - { - kind: /** @type {const} */ ("explorer"), - name: "Explorer", - title: "Debug explorer", - }, - ] - : []), + // Debug explorer (disabled) + // ...(localhost + // ? [ + // { + // kind: /** @type {const} */ ("explorer"), + // name: "Explorer", + // title: "Debug explorer", + // }, + // ] + // : []), // Charts section { @@ -88,7 +88,7 @@ export function createPartialOptions({ colors, brk }) { // Terms (STH/LTH) - Short is Full, Long is WithPercentiles { - name: "terms", + name: "Terms", tree: [ // Individual cohorts with their specific capabilities createCohortFolderFull(ctx, termShort), @@ -96,7 +96,149 @@ export function createPartialOptions({ colors, brk }) { ], }, - // Epochs - CohortBasic (neither adjustedSopr nor percentiles) + // Types - CohortBasic + { + name: "Types", + tree: [ + createCohortFolderBasic(ctx, { + name: "Compare", + title: "Type", + list: type, + }), + ...type.map(mapBasic), + ], + }, + + // Age cohorts + { + name: "Age", + tree: [ + // Up To (< X old) + { + name: "Up To", + tree: [ + createCohortFolderWithAdjusted(ctx, { + name: "Compare", + title: "Age Up To", + list: upToDate, + }), + ...upToDate.map(mapWithAdjusted), + ], + }, + // At Least (≥ X old) + { + name: "At Least", + tree: [ + createCohortFolderBasic(ctx, { + name: "Compare", + title: "Age At Least", + list: fromDate, + }), + ...fromDate.map(mapBasic), + ], + }, + // Range + { + name: "Range", + tree: [ + createCohortFolderWithPercentiles(ctx, { + name: "Compare", + title: "Age Range", + list: dateRange, + }), + ...dateRange.map(mapWithPercentiles), + ], + }, + ], + }, + + // Amount cohorts (UTXO size) + { + name: "Amount", + tree: [ + // Under (< X sats) + { + name: "Under", + tree: [ + createCohortFolderBasic(ctx, { + name: "Compare", + title: "Amount Under", + list: utxosUnderAmount, + }), + ...utxosUnderAmount.map(mapBasic), + ], + }, + // Above (≥ X sats) + { + name: "Above", + tree: [ + createCohortFolderBasic(ctx, { + name: "Compare", + title: "Amount Above", + list: utxosAboveAmount, + }), + ...utxosAboveAmount.map(mapBasic), + ], + }, + // Range + { + name: "Range", + tree: [ + createCohortFolderBasic(ctx, { + name: "Compare", + title: "Amount Range", + list: utxosAmountRanges, + }), + ...utxosAmountRanges.map(mapBasic), + ], + }, + ], + }, + + // Balance cohorts (Address balance) + { + name: "Balance", + tree: [ + // Under (< X sats) + { + name: "Under", + tree: [ + createAddressCohortFolder(ctx, { + name: "Compare", + title: "Balance Under", + list: addressesUnderAmount, + }), + ...addressesUnderAmount.map(mapAddressCohorts), + ], + }, + // Above (≥ X sats) + { + name: "Above", + tree: [ + createAddressCohortFolder(ctx, { + name: "Compare", + title: "Balance Above", + list: addressesAboveAmount, + }), + ...addressesAboveAmount.map(mapAddressCohorts), + ], + }, + // Range + { + name: "Range", + tree: [ + createAddressCohortFolder(ctx, { + name: "Compare", + title: "Balance Range", + list: addressesAmountRanges, + }), + ...addressesAmountRanges.map(mapAddressCohorts), + ], + }, + ], + }, + + // Epochs - CohortBasic { name: "Epochs", tree: [ @@ -109,133 +251,16 @@ export function createPartialOptions({ colors, brk }) { ], }, - // Types - CohortBasic + // Years - CohortBasic { - name: "types", + name: "Years", tree: [ createCohortFolderBasic(ctx, { name: "Compare", - title: "Type", - list: type, + title: "Year", + list: year, }), - ...type.map(mapBasic), - ], - }, - - // UTXOs Up to age - CohortWithAdjusted (adjustedSopr only) - { - name: "UTXOs Up to age", - tree: [ - createCohortFolderWithAdjusted(ctx, { - name: "Compare", - title: "UTXOs Up To Age", - list: upToDate, - }), - ...upToDate.map(mapWithAdjusted), - ], - }, - - // UTXOs from age - CohortBasic - { - name: "UTXOs from age", - tree: [ - createCohortFolderBasic(ctx, { - name: "Compare", - title: "UTXOs from age", - list: fromDate, - }), - ...fromDate.map(mapBasic), - ], - }, - - // UTXOs age ranges - CohortWithPercentiles (percentiles only) - { - name: "UTXOs age Ranges", - tree: [ - createCohortFolderWithPercentiles(ctx, { - name: "Compare", - title: "UTXOs Age Range", - list: dateRange, - }), - ...dateRange.map(mapWithPercentiles), - ], - }, - - // UTXOs under amounts - CohortBasic - { - name: "UTXOs under amounts", - tree: [ - createCohortFolderBasic(ctx, { - name: "Compare", - title: "UTXOs under amount", - list: utxosUnderAmount, - }), - ...utxosUnderAmount.map(mapBasic), - ], - }, - - // UTXOs above amounts - CohortBasic - { - name: "UTXOs Above Amounts", - tree: [ - createCohortFolderBasic(ctx, { - name: "Compare", - title: "UTXOs Above Amount", - list: utxosAboveAmount, - }), - ...utxosAboveAmount.map(mapBasic), - ], - }, - - // UTXOs between amounts - CohortBasic - { - name: "UTXOs between amounts", - tree: [ - createCohortFolderBasic(ctx, { - name: "Compare", - title: "UTXOs between amounts", - list: utxosAmountRanges, - }), - ...utxosAmountRanges.map(mapBasic), - ], - }, - - // Addresses under amount (TYPE SAFE - uses createAddressCohortFolder!) - { - name: "Addresses under amount", - tree: [ - createAddressCohortFolder(ctx, { - name: "Compare", - title: "Addresses under Amount", - list: addressesUnderAmount, - }), - ...addressesUnderAmount.map(mapAddressCohorts), - ], - }, - - // Addresses above amount (TYPE SAFE - uses createAddressCohortFolder!) - { - name: "Addresses above amount", - tree: [ - createAddressCohortFolder(ctx, { - name: "Compare", - title: "Addresses above amount", - list: addressesAboveAmount, - }), - ...addressesAboveAmount.map(mapAddressCohorts), - ], - }, - - // Addresses between amounts (TYPE SAFE - uses createAddressCohortFolder!) - { - name: "Addresses between amounts", - tree: [ - createAddressCohortFolder(ctx, { - name: "Compare", - title: "Addresses between amounts", - list: addressesAmountRanges, - }), - ...addressesAmountRanges.map(mapAddressCohorts), + ...year.map(mapBasic), ], }, ], @@ -246,117 +271,37 @@ export function createPartialOptions({ colors, brk }) { ], }, - // Table section + // Table section (disabled) + // { + // kind: /** @type {const} */ ("table"), + // title: "Table", + // name: "Table", + // }, + + // Simulations section (disabled) + // { + // name: "Simulations", + // tree: [ + // { + // kind: /** @type {const} */ ("simulation"), + // name: "Save In Bitcoin", + // title: "Save In Bitcoin", + // }, + // ], + // }, + + // API documentation { - kind: /** @type {const} */ ("table"), - title: "Table", - name: "Table", + name: "API", + url: () => "/api", + title: "API documentation", }, - // Simulations section + // Project link { - name: "Simulations", - tree: [ - { - kind: /** @type {const} */ ("simulation"), - name: "Save In Bitcoin", - title: "Save In Bitcoin", - }, - ], - }, - - // Tools section - { - name: "Tools", - tree: [ - { - name: "Documentation", - tree: [ - { - name: "API", - url: () => "/api", - title: "API documentation", - }, - { - name: "MCP", - url: () => - "https://github.com/bitcoinresearchkit/brk/blob/main/crates/brk_mcp/README.md#brk_mcp", - title: "Model Context Protocol documentation", - }, - { - name: "Crate", - url: () => "/crate", - title: "View on crates.io", - }, - { - name: "Source", - url: () => "/github", - title: "Source code and issues", - }, - { - name: "Changelog", - url: () => "/changelog", - title: "Release notes and changelog", - }, - ], - }, - { - name: "Hosting", - tree: [ - { - name: "Status", - url: () => "/status", - title: "Service status and uptime", - }, - { - name: "Self-host", - url: () => "/install", - title: "Install and run yourself", - }, - { - name: "Service", - url: () => "/service", - title: "Hosted service offering", - }, - ], - }, - { - name: "Community", - tree: [ - { - name: "Discord", - url: () => "/discord", - title: "Join the Discord server", - }, - { - name: "GitHub", - url: () => "/github", - title: "Source code and issues", - }, - { - name: "Nostr", - url: () => "/nostr", - title: "Follow on Nostr", - }, - ], - }, - ], - }, - - // Donate - { - name: "Donate", - qrcode: true, - url: () => "bitcoin:bc1q098zsm89m7kgyze338vfejhpdt92ua9p3peuve", - title: "Bitcoin address for donations", - }, - - // Share - { - name: "Share", - qrcode: true, - url: () => window.location.href, - title: "Share", + name: "Source", + url: () => "https://bitcoinresearchkit.org", + title: "Bitcoin Research Kit", }, ]; } diff --git a/website/scripts/panes/chart/index.js b/website/scripts/panes/chart/index.js index 010e41e7c..bff4ad29d 100644 --- a/website/scripts/panes/chart/index.js +++ b/website/scripts/panes/chart/index.js @@ -11,6 +11,7 @@ import { Unit } from "../../utils/units.js"; import signals from "../../signals.js"; import { createChartElement } from "../../chart/index.js"; import { webSockets } from "../../utils/ws.js"; +import { screenshot } from "./screenshot.js"; const keyPrefix = "chart"; const ONE_BTC_IN_SATS = 100_000_000; @@ -82,21 +83,20 @@ export function init({ colors, option, brk }) { }); if (!(ios && !canShare)) { - const chartBottomRightCanvas = Array.from( - chart.inner.chartElement().getElementsByTagName("tr"), - ).at(-1)?.lastChild?.firstChild?.firstChild; - if (chartBottomRightCanvas) { - const domain = window.document.createElement("p"); - domain.innerText = `${window.location.host}`; - domain.id = "domain"; - const screenshotButton = window.document.createElement("button"); - screenshotButton.id = "screenshot"; - const camera = "[ ◉¯]"; - screenshotButton.innerHTML = camera; - screenshotButton.title = "Screenshot"; - chartBottomRightCanvas.replaceWith(screenshotButton); - screenshotButton.addEventListener("click", () => { - import("./screenshot").then(async ({ screenshot }) => { + const domain = window.document.createElement("p"); + domain.innerText = `${window.location.host}`; + domain.id = "domain"; + + chart.addFieldsetIfNeeded({ + id: "capture", + paneIndex: 0, + position: "ne", + createChild() { + const button = window.document.createElement("button"); + button.id = "capture"; + button.innerText = "capture"; + button.title = "Capture chart as image"; + button.addEventListener("click", async () => { chartElement.dataset.screenshot = "true"; chartElement.append(domain); try { @@ -109,8 +109,9 @@ export function init({ colors, option, brk }) { chartElement.removeChild(domain); chartElement.dataset.screenshot = "false"; }); - }); - } + return button; + }, + }); } chart.inner.timeScale().subscribeVisibleLogicalRangeChange(