diff --git a/Cargo.lock b/Cargo.lock index e661fbc98..f7bd29388 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -422,7 +422,6 @@ version = "0.1.0-alpha.2" dependencies = [ "libmimalloc-sys", "mimalloc", - "tracing", ] [[package]] @@ -450,10 +449,8 @@ dependencies = [ "brk_query", "brk_types", "oas3", - "schemars", "serde", "serde_json", - "vecdb", ] [[package]] @@ -461,7 +458,6 @@ name = "brk_cli" version = "0.1.0-alpha.2" dependencies = [ "brk_alloc", - "brk_bindgen", "brk_computer", "brk_error", "brk_fetcher", @@ -493,7 +489,6 @@ dependencies = [ "brk_types", "minreq", "serde", - "serde_json", ] [[package]] @@ -657,9 +652,6 @@ dependencies = [ "derive_more", "jiff", "quickmatch", - "schemars", - "serde", - "serde_json", "tokio", "vecdb", ] diff --git a/crates/brk_alloc/Cargo.toml b/crates/brk_alloc/Cargo.toml index c68b6995a..4f6d1cc11 100644 --- a/crates/brk_alloc/Cargo.toml +++ b/crates/brk_alloc/Cargo.toml @@ -9,5 +9,4 @@ repository.workspace = true [dependencies] libmimalloc-sys = { version = "0.1.44", features = ["extended"] } -tracing = { workspace = true } mimalloc = { version = "0.1.48", features = ["v3"] } diff --git a/crates/brk_bindgen/Cargo.toml b/crates/brk_bindgen/Cargo.toml index 59bd00fa1..6fee2c2bf 100644 --- a/crates/brk_bindgen/Cargo.toml +++ b/crates/brk_bindgen/Cargo.toml @@ -13,7 +13,5 @@ brk_cohort = { workspace = true } brk_query = { workspace = true } brk_types = { workspace = true } oas3 = "0.20" -schemars = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } -vecdb = { workspace = true } diff --git a/crates/brk_bindgen/src/analysis/tree.rs b/crates/brk_bindgen/src/analysis/tree.rs index addcec5bc..0d7abff44 100644 --- a/crates/brk_bindgen/src/analysis/tree.rs +++ b/crates/brk_bindgen/src/analysis/tree.rs @@ -7,8 +7,7 @@ use std::collections::{BTreeMap, BTreeSet, HashMap}; use brk_types::{Index, TreeNode, extract_json_type}; -use crate::analysis::names::analyze_pattern_level; -use crate::{IndexSetPattern, PatternField, child_type_name}; +use crate::{IndexSetPattern, PatternField, analysis::names::analyze_pattern_level, child_type_name}; /// Get the first leaf name from a tree node. pub fn get_first_leaf_name(node: &TreeNode) -> Option { @@ -111,122 +110,29 @@ fn collect_indexes_from_tree( } } -/// Get the metric base for a pattern instance by analyzing all leaf descendants. +/// Get the metric base for a pattern instance by analyzing direct children. /// -/// For root-level instances (no common prefix/suffix among leaves), returns empty string. -/// For cohort-level instances, returns the common prefix or suffix among all leaves. +/// Uses field names and first leaf names from direct children to determine +/// the common base via `analyze_pattern_level`. pub fn get_pattern_instance_base(node: &TreeNode) -> String { - let leaf_names = get_all_leaf_names(node); - find_common_base(&leaf_names) + let child_names = get_direct_children_for_analysis(node); + if child_names.is_empty() { + return String::new(); + } + analyze_pattern_level(&child_names).base } -/// Find the common base from a set of metric names. -/// Tries prefix, suffix, then strips first/last segments and retries. -fn find_common_base(names: &[String]) -> String { - if names.is_empty() { - return String::new(); +/// Get (field_name, first_leaf_name) pairs for direct children of a branch node. +fn get_direct_children_for_analysis(node: &TreeNode) -> Vec<(String, String)> { + match node { + TreeNode::Leaf(leaf) => vec![(leaf.name().to_string(), leaf.name().to_string())], + TreeNode::Branch(children) => children + .iter() + .filter_map(|(field_name, child)| { + get_first_leaf_name(child).map(|leaf_name| (field_name.clone(), leaf_name)) + }) + .collect(), } - - // Try common prefix - let common_prefix = find_common_prefix_at_underscore(names); - if !common_prefix.is_empty() { - return common_prefix.trim_end_matches('_').to_string(); - } - - // Try common suffix - let common_suffix = find_common_suffix_at_underscore(names); - if !common_suffix.is_empty() { - return common_suffix.trim_start_matches('_').to_string(); - } - - // If neither works, the common part may be in the middle. - // Strip the first underscore segment (varying prefix) and try again. - let stripped_prefix: Vec = names - .iter() - .filter_map(|name| name.split_once('_').map(|(_, rest)| rest.to_string())) - .collect(); - - if stripped_prefix.len() == names.len() { - let common_prefix = find_common_prefix_at_underscore(&stripped_prefix); - if !common_prefix.is_empty() { - return common_prefix.trim_end_matches('_').to_string(); - } - } - - // Try stripping last segment (varying suffix) and look for common suffix - let stripped_suffix: Vec = names - .iter() - .filter_map(|name| name.rsplit_once('_').map(|(rest, _)| rest.to_string())) - .collect(); - - if stripped_suffix.len() == names.len() { - let common_suffix = find_common_suffix_at_underscore(&stripped_suffix); - if !common_suffix.is_empty() { - return common_suffix.trim_start_matches('_').to_string(); - } - } - - String::new() -} - -/// Find the longest common prefix at an underscore boundary. -fn find_common_prefix_at_underscore(names: &[String]) -> String { - if names.is_empty() { - return String::new(); - } - - let first = &names[0]; - if first.is_empty() { - return String::new(); - } - - // Find character-by-character common prefix - let mut prefix_len = 0; - for (i, ch) in first.chars().enumerate() { - if names.iter().all(|n| n.chars().nth(i) == Some(ch)) { - prefix_len = i + 1; - } else { - break; - } - } - - if prefix_len == 0 { - return String::new(); - } - - let raw_prefix = &first[..prefix_len]; - - // If raw_prefix exactly matches a leaf name, it's a complete metric name. - // In this case, return it with trailing underscore (will be trimmed by caller). - if names.iter().any(|n| n == raw_prefix) { - return format!("{}_", raw_prefix); - } - - // Find the last underscore position to get a clean boundary - if let Some(last_underscore) = raw_prefix.rfind('_') - && last_underscore > 0 - { - let clean_prefix = &first[..=last_underscore]; - // Verify this still works for all names - if names.iter().all(|n| n.starts_with(clean_prefix)) { - return clean_prefix.to_string(); - } - } - - // If no underscore boundary works, check if full prefix ends at underscore - if raw_prefix.ends_with('_') { - return raw_prefix.to_string(); - } - - String::new() -} - -/// Find the longest common suffix at an underscore boundary. -fn find_common_suffix_at_underscore(names: &[String]) -> String { - // Reverse strings, find common prefix, reverse result - let reversed: Vec = names.iter().map(|s| s.chars().rev().collect()).collect(); - let prefix = find_common_prefix_at_underscore(&reversed); - prefix.chars().rev().collect() } /// Infer the accumulated name for a child node based on a descendant leaf name. diff --git a/crates/brk_bindgen/src/backends/javascript.rs b/crates/brk_bindgen/src/backends/javascript.rs index b2013f781..593c95aac 100644 --- a/crates/brk_bindgen/src/backends/javascript.rs +++ b/crates/brk_bindgen/src/backends/javascript.rs @@ -96,4 +96,8 @@ impl LanguageSyntax for JavaScriptSyntax { fn string_literal(&self, value: &str) -> String { format!("'{}'", value) } + + fn constructor_name(&self, type_name: &str) -> String { + format!("create{}", type_name) + } } diff --git a/crates/brk_bindgen/src/backends/python.rs b/crates/brk_bindgen/src/backends/python.rs index eae04ba82..1549be067 100644 --- a/crates/brk_bindgen/src/backends/python.rs +++ b/crates/brk_bindgen/src/backends/python.rs @@ -85,4 +85,8 @@ impl LanguageSyntax for PythonSyntax { fn string_literal(&self, value: &str) -> String { format!("'{}'", value) } + + fn constructor_name(&self, type_name: &str) -> String { + type_name.to_string() + } } diff --git a/crates/brk_bindgen/src/backends/rust.rs b/crates/brk_bindgen/src/backends/rust.rs index 5b97ba83b..fe852d208 100644 --- a/crates/brk_bindgen/src/backends/rust.rs +++ b/crates/brk_bindgen/src/backends/rust.rs @@ -86,4 +86,8 @@ impl LanguageSyntax for RustSyntax { fn string_literal(&self, value: &str) -> String { format!("\"{}\".to_string()", value) } + + fn constructor_name(&self, type_name: &str) -> String { + format!("{}::new", type_name) + } } diff --git a/crates/brk_bindgen/src/generate/fields.rs b/crates/brk_bindgen/src/generate/fields.rs index b69a9187d..a5c5a622d 100644 --- a/crates/brk_bindgen/src/generate/fields.rs +++ b/crates/brk_bindgen/src/generate/fields.rs @@ -6,6 +6,8 @@ use std::fmt::Write; +use brk_types::MetricLeafWithSchema; + use crate::{ClientMetadata, LanguageSyntax, PatternField, StructuralPattern}; /// Create a path suffix from a name. @@ -124,8 +126,14 @@ pub fn generate_tree_node_field( syntax.constructor(&field.rust_type, &path_expr) } } else if let Some(accessor) = metadata.find_index_set_pattern(&field.indexes) { - let path_expr = syntax.path_expr("base_path", &path_suffix(child_name)); - syntax.constructor(&accessor.name, &path_expr) + // Leaf field - use actual metric name if provided + if let Some(metric_name) = pattern_base { + let path = syntax.string_literal(metric_name); + syntax.constructor(&accessor.name, &path) + } else { + let path_expr = syntax.path_expr("base_path", &path_suffix(child_name)); + syntax.constructor(&accessor.name, &path_expr) + } } else if field.is_branch() { // Non-pattern branch - instantiate the nested struct let path_expr = syntax.path_expr("base_path", &path_suffix(child_name)); @@ -140,3 +148,53 @@ pub fn generate_tree_node_field( writeln!(output, "{}", syntax.field_init(indent, &field_name, &type_ann, &value)).unwrap(); } + +/// Generate a leaf field using the actual metric name from the TreeNode::Leaf. +/// +/// This is the shared implementation for all language backends. It uses +/// `leaf.name()` directly to get the correct metric name, avoiding any +/// path concatenation that could produce incorrect names. +/// +/// # Arguments +/// * `output` - The string buffer to write to +/// * `syntax` - The language syntax implementation +/// * `client_expr` - The client expression (e.g., "client.clone()", "this", "client") +/// * `tree_field_name` - The field name from the tree structure +/// * `leaf` - The Leaf node containing the actual metric name and indexes +/// * `metadata` - Client metadata for looking up index patterns +/// * `indent` - Indentation string +pub fn generate_leaf_field( + output: &mut String, + syntax: &S, + client_expr: &str, + tree_field_name: &str, + leaf: &MetricLeafWithSchema, + metadata: &ClientMetadata, + indent: &str, +) { + let field_name = syntax.field_name(tree_field_name); + let accessor = metadata + .find_index_set_pattern(leaf.indexes()) + .unwrap_or_else(|| { + panic!( + "Metric '{}' has no matching index pattern. All metrics must be indexed.", + leaf.name() + ) + }); + + let type_ann = metadata.field_type_annotation_from_leaf(leaf, syntax.generic_syntax()); + let metric_name = syntax.string_literal(leaf.name()); + let value = format!( + "{}({}, {})", + syntax.constructor_name(&accessor.name), + client_expr, + metric_name + ); + + writeln!( + output, + "{}", + syntax.field_init(indent, &field_name, &type_ann, &value) + ) + .unwrap(); +} diff --git a/crates/brk_bindgen/src/generators/javascript/tree.rs b/crates/brk_bindgen/src/generators/javascript/tree.rs index 74dd36034..62604f01d 100644 --- a/crates/brk_bindgen/src/generators/javascript/tree.rs +++ b/crates/brk_bindgen/src/generators/javascript/tree.rs @@ -6,8 +6,9 @@ use std::fmt::Write; use brk_types::TreeNode; use crate::{ - ClientMetadata, Endpoint, PatternField, child_type_name, get_first_leaf_name, get_node_fields, - get_pattern_instance_base, infer_accumulated_name, prepare_tree_node, to_camel_case, + ClientMetadata, Endpoint, JavaScriptSyntax, PatternField, child_type_name, generate_leaf_field, + get_first_leaf_name, get_node_fields, get_pattern_instance_base, infer_accumulated_name, + prepare_tree_node, to_camel_case, }; use super::api::generate_api_methods; @@ -142,33 +143,24 @@ fn generate_tree_initializer( ) { let indent_str = " ".repeat(indent); + let syntax = JavaScriptSyntax; if let TreeNode::Branch(children) = node { - for (i, (child_name, child_node)) in children.iter().enumerate() { - let field_name = to_camel_case(child_name); - let comma = if i < children.len() - 1 { "," } else { "" }; - + for (child_name, child_node) in children.iter() { match child_node { TreeNode::Leaf(leaf) => { - let accessor = metadata - .find_index_set_pattern(leaf.indexes()) - .unwrap_or_else(|| { - panic!( - "Metric '{}' has no matching index pattern. All metrics must be indexed.", - leaf.name() - ) - }); - writeln!( + // Use shared helper for leaf fields + generate_leaf_field( output, - "{}{}: create{}(this, '{}'){}", - indent_str, - field_name, - accessor.name, - leaf.name(), - comma - ) - .unwrap(); + &syntax, + "this", + child_name, + leaf, + metadata, + &indent_str, + ); } TreeNode::Branch(grandchildren) => { + let field_name = to_camel_case(child_name); let child_fields = get_node_fields(grandchildren, pattern_lookup); // Only use pattern factory if pattern is parameterizable let pattern_name = pattern_lookup @@ -179,8 +171,8 @@ fn generate_tree_initializer( let arg = get_pattern_instance_base(child_node); writeln!( output, - "{}{}: create{}(this, '{}'){}", - indent_str, field_name, pattern_name, arg, comma + "{}{}: create{}(this, '{}'),", + indent_str, field_name, pattern_name, arg ) .unwrap(); } else { @@ -195,7 +187,7 @@ fn generate_tree_initializer( pattern_lookup, metadata, ); - writeln!(output, "{}}}{}", indent_str, comma).unwrap(); + writeln!(output, "{}}},", indent_str).unwrap(); } } } diff --git a/crates/brk_bindgen/src/generators/python/tree.rs b/crates/brk_bindgen/src/generators/python/tree.rs index c12954731..61f6f945b 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, PatternField, child_type_name, get_node_fields, get_pattern_instance_base, - prepare_tree_node, to_snake_case, + ClientMetadata, PatternField, PythonSyntax, child_type_name, generate_leaf_field, + get_node_fields, get_pattern_instance_base, prepare_tree_node, to_snake_case, }; use super::client::field_type_with_generic; @@ -50,7 +50,8 @@ fn generate_tree_class( ) .unwrap(); - for ((field, child_fields_opt), (_child_name, child_node)) in + let syntax = PythonSyntax; + for ((field, child_fields_opt), (child_name, child_node)) in ctx.fields_with_child_info.iter().zip(ctx.children.iter()) { // Look up type parameter for generic patterns @@ -72,14 +73,8 @@ fn generate_tree_class( ) .unwrap(); } else if let TreeNode::Leaf(leaf) = child_node { - // Leaf node: use actual metric name - let accessor = metadata.find_index_set_pattern(&field.indexes).unwrap(); - writeln!( - output, - " self.{}: {} = {}(client, '{}')", - field_name_py, py_type, accessor.name, leaf.name() - ) - .unwrap(); + // Leaf node: use shared helper + generate_leaf_field(output, &syntax, "client", child_name, leaf, metadata, " "); } else if field.is_branch() { // Non-parameterizable pattern or regular branch: generate inline class let inline_class = child_type_name(name, &field.name); diff --git a/crates/brk_bindgen/src/generators/python/types.rs b/crates/brk_bindgen/src/generators/python/types.rs index a1de3ab23..82bde5308 100644 --- a/crates/brk_bindgen/src/generators/python/types.rs +++ b/crates/brk_bindgen/src/generators/python/types.rs @@ -295,13 +295,14 @@ pub fn schema_to_python_type_ctx(schema: &Value, current_type: Option<&str>) -> "Any".to_string() } -/// Convert JS-style type to Python type (e.g., "Txid[]" -> "List[Txid]", "number" -> "int") +/// Convert JS-style type to Python type (e.g., "Txid[]" -> "List[Txid]", "integer" -> "int") pub fn js_type_to_python(js_type: &str) -> String { if let Some(inner) = js_type.strip_suffix("[]") { format!("List[{}]", js_type_to_python(inner)) } else { match js_type { - "number" => "int".to_string(), + "integer" => "int".to_string(), + "number" => "float".to_string(), "boolean" => "bool".to_string(), "string" => "str".to_string(), "null" => "None".to_string(), diff --git a/crates/brk_bindgen/src/generators/rust/client.rs b/crates/brk_bindgen/src/generators/rust/client.rs index 2fec2429d..9f7046ed3 100644 --- a/crates/brk_bindgen/src/generators/rust/client.rs +++ b/crates/brk_bindgen/src/generators/rust/client.rs @@ -162,12 +162,12 @@ impl Endpoint {{ }} /// Fetch all data points for this metric/index. - pub fn get(&self) -> Result> {{ + pub fn get(&self) -> Result> {{ self.client.get(&self.path()) }} /// Fetch data points within a range. - pub fn range(&self, from: Option, to: Option) -> Result> {{ + pub fn range(&self, from: Option, to: Option) -> Result> {{ let mut params = Vec::new(); if let Some(f) = from {{ params.push(format!("from={{}}", f)); }} if let Some(t) = to {{ params.push(format!("to={{}}", t)); }} diff --git a/crates/brk_bindgen/src/generators/rust/tree.rs b/crates/brk_bindgen/src/generators/rust/tree.rs index 0ff4818e6..e0c73fbf9 100644 --- a/crates/brk_bindgen/src/generators/rust/tree.rs +++ b/crates/brk_bindgen/src/generators/rust/tree.rs @@ -7,8 +7,8 @@ use brk_types::TreeNode; use crate::{ ClientMetadata, LanguageSyntax, PatternField, RustSyntax, child_type_name, - generate_tree_node_field, get_node_fields, get_pattern_instance_base, prepare_tree_node, - to_snake_case, + generate_leaf_field, generate_tree_node_field, get_node_fields, get_pattern_instance_base, + prepare_tree_node, to_snake_case, }; use super::client::field_type_with_generic; @@ -100,16 +100,21 @@ fn generate_tree_node( field_name, child_struct, path_expr ) .unwrap(); - } else { - // Leaf field - generate_tree_node_field( + } else if let TreeNode::Leaf(leaf) = child_node { + // Leaf field - use shared helper + generate_leaf_field( output, &syntax, - field_info, + "client.clone()", + child_name, + leaf, metadata, " ", - child_name, - None, + ); + } else { + panic!( + "Field '{}' is a leaf with no TreeNode::Leaf. This shouldn't happen.", + field_info.name ); } } diff --git a/crates/brk_bindgen/src/generators/rust/types.rs b/crates/brk_bindgen/src/generators/rust/types.rs index bc6cb0026..86f09315d 100644 --- a/crates/brk_bindgen/src/generators/rust/types.rs +++ b/crates/brk_bindgen/src/generators/rust/types.rs @@ -7,6 +7,7 @@ pub fn js_type_to_rust(js_type: &str) -> String { } else { match js_type { "string" => "String".to_string(), + "integer" => "i64".to_string(), "number" => "f64".to_string(), "boolean" => "bool".to_string(), "*" => "serde_json::Value".to_string(), diff --git a/crates/brk_bindgen/src/syntax.rs b/crates/brk_bindgen/src/syntax.rs index b4c9a814e..0deea0581 100644 --- a/crates/brk_bindgen/src/syntax.rs +++ b/crates/brk_bindgen/src/syntax.rs @@ -102,4 +102,11 @@ pub trait LanguageSyntax { /// - Python/JavaScript: `'value'` (single quotes) /// - Rust: `"value"` (double quotes) fn string_literal(&self, value: &str) -> String; + + /// Get the constructor name/prefix for a type. + /// + /// - Python: `TypeName` + /// - JavaScript: `createTypeName` + /// - Rust: `TypeName::new` + fn constructor_name(&self, type_name: &str) -> String; } diff --git a/crates/brk_bindgen/src/types/metadata.rs b/crates/brk_bindgen/src/types/metadata.rs index e969f9667..269e7522d 100644 --- a/crates/brk_bindgen/src/types/metadata.rs +++ b/crates/brk_bindgen/src/types/metadata.rs @@ -3,7 +3,7 @@ use std::collections::{BTreeSet, HashMap}; use brk_query::Vecs; -use brk_types::Index; +use brk_types::{Index, MetricLeafWithSchema}; use super::{GenericSyntax, IndexSetPattern, PatternField, StructuralPattern, extract_inner_type}; use crate::analysis; @@ -158,4 +158,21 @@ impl ClientMetadata { syntax.wrap("MetricNode", &value_type) } } + + /// Generate type annotation for a leaf node with language-specific syntax. + /// + /// This is a simpler version of `field_type_annotation` that works directly + /// with a `MetricLeafWithSchema` node instead of a `PatternField`. + pub fn field_type_annotation_from_leaf( + &self, + leaf: &MetricLeafWithSchema, + syntax: GenericSyntax, + ) -> String { + let value_type = leaf.kind().to_string(); + if let Some(accessor) = self.find_index_set_pattern(leaf.indexes()) { + syntax.wrap(&accessor.name, &value_type) + } else { + syntax.wrap("MetricNode", &value_type) + } + } } diff --git a/crates/brk_cli/Cargo.toml b/crates/brk_cli/Cargo.toml index 73c3fd10b..23ed6c264 100644 --- a/crates/brk_cli/Cargo.toml +++ b/crates/brk_cli/Cargo.toml @@ -10,7 +10,6 @@ build = "build.rs" [dependencies] brk_alloc = { workspace = true } -brk_bindgen = { workspace = true } brk_computer = { workspace = true } brk_error = { workspace = true } brk_fetcher = { workspace = true } diff --git a/crates/brk_client/Cargo.toml b/crates/brk_client/Cargo.toml index a1c3d71ae..f099172b4 100644 --- a/crates/brk_client/Cargo.toml +++ b/crates/brk_client/Cargo.toml @@ -15,6 +15,3 @@ brk_cohort = { workspace = true } brk_types = { workspace = true } minreq = { workspace = true } serde = { workspace = true } - -[dev-dependencies] -serde_json = { workspace = true } diff --git a/crates/brk_client/examples/basic.rs b/crates/brk_client/examples/basic.rs index dc3549cad..f544ce597 100644 --- a/crates/brk_client/examples/basic.rs +++ b/crates/brk_client/examples/basic.rs @@ -21,7 +21,7 @@ fn main() -> brk_client::Result<()> { .close .by .dateindex() - .range(None, Some(-3))?; + .range(Some(-3), None)?; println!("Last 3 price close values: {:?}", price_close); // Fetch block data @@ -32,11 +32,22 @@ fn main() -> brk_client::Result<()> { .block_count .sum .by - .height() - .range(None, Some(-3))?; + .dateindex() + .range(Some(-3), None)?; println!("Last 3 block count values: {:?}", block_count); // Fetch supply data + // + dbg!( + client + .tree() + .supply + .circulating + .bitcoin + .by + .dateindex() + .path() + ); let circulating = client .tree() .supply @@ -44,12 +55,12 @@ fn main() -> brk_client::Result<()> { .bitcoin .by .dateindex() - .range(None, Some(-3))?; + .range(Some(-3), None)?; println!("Last 3 circulating supply values: {:?}", circulating); // Using generic metric fetching let metricdata = - client.get_metric_by_index("dateindex", "price_close", None, None, None, None)?; + client.get_metric_by_index("dateindex", "price_close", None, None, Some("-3"), None)?; println!("Generic fetch result count: {}", metricdata.data.len()); Ok(()) diff --git a/crates/brk_client/examples/tree.rs b/crates/brk_client/examples/tree.rs index edeec1e13..bbdabbc79 100644 --- a/crates/brk_client/examples/tree.rs +++ b/crates/brk_client/examples/tree.rs @@ -1,15 +1,54 @@ //! Comprehensive test that fetches all endpoints in the tree. //! -//! This example demonstrates how to iterate over all metrics and fetch data -//! from each endpoint. Run with: cargo run --example test_all_endpoints +//! This example demonstrates how to recursively traverse the metrics catalog tree +//! and fetch data from each endpoint. Run with: cargo run --example tree -use brk_client::{BrkClient, Index}; +use brk_client::BrkClient; +use brk_types::{Index, TreeNode}; +use std::collections::BTreeSet; + +/// A collected metric with its path and available indexes. +struct CollectedMetric { + path: String, + name: String, + indexes: BTreeSet, +} + +/// Recursively collect all metrics from the tree. +fn collect_metrics(node: &TreeNode, path: &str) -> Vec { + let mut metrics = Vec::new(); + + match node { + TreeNode::Branch(children) => { + for (key, child) in children { + let child_path = if path.is_empty() { + key.clone() + } else { + format!("{}.{}", path, key) + }; + metrics.extend(collect_metrics(child, &child_path)); + } + } + TreeNode::Leaf(leaf) => { + metrics.push(CollectedMetric { + path: path.to_string(), + name: leaf.name().to_string(), + indexes: leaf.indexes().clone(), + }); + } + } + + metrics +} fn main() -> brk_client::Result<()> { let client = BrkClient::new("http://localhost:3110"); - // Get all metrics from the tree - let metrics = client.all_metrics(); + // Get the metrics catalog tree + let tree = client.get_metrics_catalog()?; + + // Recursively collect all metrics + let metrics = collect_metrics(&tree, ""); println!("\nFound {} metrics", metrics.len()); let mut success = 0; @@ -17,36 +56,28 @@ fn main() -> brk_client::Result<()> { let mut errors: Vec = Vec::new(); for metric in &metrics { - let name = metric.name(); - let indexes = metric.indexes(); - - for index in indexes { - let path = format!("/api/metric/{}/{}", name, index.serialize_long()); - match client.get::(&format!("{}?to=-3", path)) { + for index in &metric.indexes { + let index_str = index.serialize_long(); + match client.get_metric_by_index(index_str, &metric.name, None, None, Some("-3"), None) + { Ok(data) => { - let count = data - .get("data") - .and_then(|d| d.as_array()) - .map(|a| a.len()) - .unwrap_or(0); + let count = data.data.len(); if count != 3 { failed += 1; let error_msg = format!( - "FAIL: {}.{} -> expected 3, got {}", - name, - index.serialize_long(), - count + "FAIL: {}.by.{} -> expected 3, got {}", + metric.path, index_str, count ); errors.push(error_msg.clone()); println!("{}", error_msg); } else { success += 1; - println!("OK: {}.{} -> {} items", name, index.serialize_long(), count); + println!("OK: {}.by.{} -> {} items", metric.path, index_str, count); } } Err(e) => { failed += 1; - let error_msg = format!("FAIL: {}.{} -> {}", name, index.serialize_long(), e); + let error_msg = format!("FAIL: {}.by.{} -> {}", metric.path, index_str, e); errors.push(error_msg.clone()); println!("{}", error_msg); } diff --git a/crates/brk_client/src/lib.rs b/crates/brk_client/src/lib.rs index f31915430..761543711 100644 --- a/crates/brk_client/src/lib.rs +++ b/crates/brk_client/src/lib.rs @@ -7,10 +7,11 @@ #![allow(clippy::useless_format)] #![allow(clippy::unnecessary_to_owned)] +use std::sync::Arc; +use serde::de::DeserializeOwned; pub use brk_cohort::*; pub use brk_types::*; -use serde::de::DeserializeOwned; -use std::sync::Arc; + /// Error type for BRK client operations. #[derive(Debug)] @@ -76,9 +77,7 @@ impl BrkClientBase { let response = minreq::get(&url) .with_timeout(self.timeout_secs) .send() - .map_err(|e| BrkError { - message: e.to_string(), - })?; + .map_err(|e| BrkError { message: e.to_string() })?; if response.status_code >= 400 { return Err(BrkError { @@ -86,22 +85,19 @@ impl BrkClientBase { }); } - response.json().map_err(|e| BrkError { - message: e.to_string(), - }) + response + .json() + .map_err(|e| BrkError { message: e.to_string() }) } } /// Build metric name with optional prefix. #[inline] fn _m(acc: &str, s: &str) -> String { - if acc.is_empty() { - s.to_string() - } else { - format!("{acc}_{s}") - } + if acc.is_empty() { s.to_string() } else { format!("{acc}_{s}") } } + /// Non-generic trait for metric patterns (usable in collections). pub trait AnyMetricPattern { /// Get the metric name. @@ -117,6 +113,7 @@ pub trait MetricPattern: AnyMetricPattern { fn get(&self, index: Index) -> Option>; } + /// An endpoint for a specific metric + index combination. pub struct Endpoint { client: Arc, @@ -136,19 +133,15 @@ impl Endpoint { } /// Fetch all data points for this metric/index. - pub fn get(&self) -> Result> { + pub fn get(&self) -> Result> { self.client.get(&self.path()) } /// Fetch data points within a range. - pub fn range(&self, from: Option, to: Option) -> Result> { + pub fn range(&self, from: Option, to: Option) -> Result> { let mut params = Vec::new(); - if let Some(f) = from { - params.push(format!("from={}", f)); - } - if let Some(t) = to { - params.push(format!("to={}", t)); - } + if let Some(f) = from { params.push(format!("from={}", f)); } + if let Some(t) = to { params.push(format!("to={}", t)); } let p = self.path(); let path = if params.is_empty() { p @@ -164,6 +157,7 @@ impl Endpoint { } } + // Index accessor structs /// Container for index endpoint methods. @@ -181,11 +175,7 @@ impl MetricPattern1By { Endpoint::new(self.client.clone(), self.name.clone(), Index::DecadeIndex) } pub fn difficultyepoch(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::DifficultyEpoch, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::DifficultyEpoch) } pub fn height(&self) -> Endpoint { Endpoint::new(self.client.clone(), self.name.clone(), Index::Height) @@ -224,7 +214,7 @@ impl MetricPattern1 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -286,11 +276,7 @@ impl MetricPattern2By { Endpoint::new(self.client.clone(), self.name.clone(), Index::DecadeIndex) } pub fn difficultyepoch(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::DifficultyEpoch, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::DifficultyEpoch) } pub fn monthindex(&self) -> Endpoint { Endpoint::new(self.client.clone(), self.name.clone(), Index::MonthIndex) @@ -326,7 +312,7 @@ impl MetricPattern2 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -422,7 +408,7 @@ impl MetricPattern3 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -515,7 +501,7 @@ impl MetricPattern4 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -591,7 +577,7 @@ impl MetricPattern5 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -607,7 +593,10 @@ impl AnyMetricPattern for MetricPattern5 { } fn indexes(&self) -> &'static [Index] { - &[Index::DateIndex, Index::Height] + &[ + Index::DateIndex, + Index::Height, + ] } } @@ -651,7 +640,7 @@ impl MetricPattern6 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -667,7 +656,9 @@ impl AnyMetricPattern for MetricPattern6 { } fn indexes(&self) -> &'static [Index] { - &[Index::DateIndex] + &[ + Index::DateIndex, + ] } } @@ -710,7 +701,7 @@ impl MetricPattern7 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -726,7 +717,9 @@ impl AnyMetricPattern for MetricPattern7 { } fn indexes(&self) -> &'static [Index] { - &[Index::DecadeIndex] + &[ + Index::DecadeIndex, + ] } } @@ -748,11 +741,7 @@ pub struct MetricPattern8By { impl MetricPattern8By { pub fn difficultyepoch(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::DifficultyEpoch, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::DifficultyEpoch) } } @@ -773,7 +762,7 @@ impl MetricPattern8 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -789,7 +778,9 @@ impl AnyMetricPattern for MetricPattern8 { } fn indexes(&self) -> &'static [Index] { - &[Index::DifficultyEpoch] + &[ + Index::DifficultyEpoch, + ] } } @@ -811,11 +802,7 @@ pub struct MetricPattern9By { impl MetricPattern9By { pub fn emptyoutputindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::EmptyOutputIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::EmptyOutputIndex) } } @@ -836,7 +823,7 @@ impl MetricPattern9 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -852,7 +839,9 @@ impl AnyMetricPattern for MetricPattern9 { } fn indexes(&self) -> &'static [Index] { - &[Index::EmptyOutputIndex] + &[ + Index::EmptyOutputIndex, + ] } } @@ -895,7 +884,7 @@ impl MetricPattern10 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -911,7 +900,9 @@ impl AnyMetricPattern for MetricPattern10 { } fn indexes(&self) -> &'static [Index] { - &[Index::HalvingEpoch] + &[ + Index::HalvingEpoch, + ] } } @@ -954,7 +945,7 @@ impl MetricPattern11 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -970,7 +961,9 @@ impl AnyMetricPattern for MetricPattern11 { } fn indexes(&self) -> &'static [Index] { - &[Index::Height] + &[ + Index::Height, + ] } } @@ -1013,7 +1006,7 @@ impl MetricPattern12 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1029,7 +1022,9 @@ impl AnyMetricPattern for MetricPattern12 { } fn indexes(&self) -> &'static [Index] { - &[Index::TxInIndex] + &[ + Index::TxInIndex, + ] } } @@ -1072,7 +1067,7 @@ impl MetricPattern13 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1088,7 +1083,9 @@ impl AnyMetricPattern for MetricPattern13 { } fn indexes(&self) -> &'static [Index] { - &[Index::MonthIndex] + &[ + Index::MonthIndex, + ] } } @@ -1131,7 +1128,7 @@ impl MetricPattern14 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1147,7 +1144,9 @@ impl AnyMetricPattern for MetricPattern14 { } fn indexes(&self) -> &'static [Index] { - &[Index::OpReturnIndex] + &[ + Index::OpReturnIndex, + ] } } @@ -1190,7 +1189,7 @@ impl MetricPattern15 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1206,7 +1205,9 @@ impl AnyMetricPattern for MetricPattern15 { } fn indexes(&self) -> &'static [Index] { - &[Index::TxOutIndex] + &[ + Index::TxOutIndex, + ] } } @@ -1228,11 +1229,7 @@ pub struct MetricPattern16By { impl MetricPattern16By { pub fn p2aaddressindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::P2AAddressIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::P2AAddressIndex) } } @@ -1253,7 +1250,7 @@ impl MetricPattern16 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1269,7 +1266,9 @@ impl AnyMetricPattern for MetricPattern16 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2AAddressIndex] + &[ + Index::P2AAddressIndex, + ] } } @@ -1291,11 +1290,7 @@ pub struct MetricPattern17By { impl MetricPattern17By { pub fn p2msoutputindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::P2MSOutputIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::P2MSOutputIndex) } } @@ -1316,7 +1311,7 @@ impl MetricPattern17 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1332,7 +1327,9 @@ impl AnyMetricPattern for MetricPattern17 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2MSOutputIndex] + &[ + Index::P2MSOutputIndex, + ] } } @@ -1354,11 +1351,7 @@ pub struct MetricPattern18By { impl MetricPattern18By { pub fn p2pk33addressindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::P2PK33AddressIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::P2PK33AddressIndex) } } @@ -1379,7 +1372,7 @@ impl MetricPattern18 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1395,7 +1388,9 @@ impl AnyMetricPattern for MetricPattern18 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2PK33AddressIndex] + &[ + Index::P2PK33AddressIndex, + ] } } @@ -1417,11 +1412,7 @@ pub struct MetricPattern19By { impl MetricPattern19By { pub fn p2pk65addressindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::P2PK65AddressIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::P2PK65AddressIndex) } } @@ -1442,7 +1433,7 @@ impl MetricPattern19 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1458,7 +1449,9 @@ impl AnyMetricPattern for MetricPattern19 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2PK65AddressIndex] + &[ + Index::P2PK65AddressIndex, + ] } } @@ -1480,11 +1473,7 @@ pub struct MetricPattern20By { impl MetricPattern20By { pub fn p2pkhaddressindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::P2PKHAddressIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::P2PKHAddressIndex) } } @@ -1505,7 +1494,7 @@ impl MetricPattern20 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1521,7 +1510,9 @@ impl AnyMetricPattern for MetricPattern20 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2PKHAddressIndex] + &[ + Index::P2PKHAddressIndex, + ] } } @@ -1543,11 +1534,7 @@ pub struct MetricPattern21By { impl MetricPattern21By { pub fn p2shaddressindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::P2SHAddressIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::P2SHAddressIndex) } } @@ -1568,7 +1555,7 @@ impl MetricPattern21 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1584,7 +1571,9 @@ impl AnyMetricPattern for MetricPattern21 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2SHAddressIndex] + &[ + Index::P2SHAddressIndex, + ] } } @@ -1606,11 +1595,7 @@ pub struct MetricPattern22By { impl MetricPattern22By { pub fn p2traddressindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::P2TRAddressIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::P2TRAddressIndex) } } @@ -1631,7 +1616,7 @@ impl MetricPattern22 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1647,7 +1632,9 @@ impl AnyMetricPattern for MetricPattern22 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2TRAddressIndex] + &[ + Index::P2TRAddressIndex, + ] } } @@ -1669,11 +1656,7 @@ pub struct MetricPattern23By { impl MetricPattern23By { pub fn p2wpkhaddressindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::P2WPKHAddressIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::P2WPKHAddressIndex) } } @@ -1694,7 +1677,7 @@ impl MetricPattern23 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1710,7 +1693,9 @@ impl AnyMetricPattern for MetricPattern23 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2WPKHAddressIndex] + &[ + Index::P2WPKHAddressIndex, + ] } } @@ -1732,11 +1717,7 @@ pub struct MetricPattern24By { impl MetricPattern24By { pub fn p2wshaddressindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::P2WSHAddressIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::P2WSHAddressIndex) } } @@ -1757,7 +1738,7 @@ impl MetricPattern24 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1773,7 +1754,9 @@ impl AnyMetricPattern for MetricPattern24 { } fn indexes(&self) -> &'static [Index] { - &[Index::P2WSHAddressIndex] + &[ + Index::P2WSHAddressIndex, + ] } } @@ -1816,7 +1799,7 @@ impl MetricPattern25 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1832,7 +1815,9 @@ impl AnyMetricPattern for MetricPattern25 { } fn indexes(&self) -> &'static [Index] { - &[Index::QuarterIndex] + &[ + Index::QuarterIndex, + ] } } @@ -1875,7 +1860,7 @@ impl MetricPattern26 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1891,7 +1876,9 @@ impl AnyMetricPattern for MetricPattern26 { } fn indexes(&self) -> &'static [Index] { - &[Index::SemesterIndex] + &[ + Index::SemesterIndex, + ] } } @@ -1934,7 +1921,7 @@ impl MetricPattern27 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -1950,7 +1937,9 @@ impl AnyMetricPattern for MetricPattern27 { } fn indexes(&self) -> &'static [Index] { - &[Index::TxIndex] + &[ + Index::TxIndex, + ] } } @@ -1972,11 +1961,7 @@ pub struct MetricPattern28By { impl MetricPattern28By { pub fn unknownoutputindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::UnknownOutputIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::UnknownOutputIndex) } } @@ -1997,7 +1982,7 @@ impl MetricPattern28 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -2013,7 +1998,9 @@ impl AnyMetricPattern for MetricPattern28 { } fn indexes(&self) -> &'static [Index] { - &[Index::UnknownOutputIndex] + &[ + Index::UnknownOutputIndex, + ] } } @@ -2056,7 +2043,7 @@ impl MetricPattern29 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -2072,7 +2059,9 @@ impl AnyMetricPattern for MetricPattern29 { } fn indexes(&self) -> &'static [Index] { - &[Index::WeekIndex] + &[ + Index::WeekIndex, + ] } } @@ -2115,7 +2104,7 @@ impl MetricPattern30 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -2131,7 +2120,9 @@ impl AnyMetricPattern for MetricPattern30 { } fn indexes(&self) -> &'static [Index] { - &[Index::YearIndex] + &[ + Index::YearIndex, + ] } } @@ -2153,11 +2144,7 @@ pub struct MetricPattern31By { impl MetricPattern31By { pub fn loadedaddressindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::LoadedAddressIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::LoadedAddressIndex) } } @@ -2178,7 +2165,7 @@ impl MetricPattern31 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -2194,7 +2181,9 @@ impl AnyMetricPattern for MetricPattern31 { } fn indexes(&self) -> &'static [Index] { - &[Index::LoadedAddressIndex] + &[ + Index::LoadedAddressIndex, + ] } } @@ -2216,11 +2205,7 @@ pub struct MetricPattern32By { impl MetricPattern32By { pub fn emptyaddressindex(&self) -> Endpoint { - Endpoint::new( - self.client.clone(), - self.name.clone(), - Index::EmptyAddressIndex, - ) + Endpoint::new(self.client.clone(), self.name.clone(), Index::EmptyAddressIndex) } } @@ -2241,7 +2226,7 @@ impl MetricPattern32 { client, name, _marker: std::marker::PhantomData, - }, + } } } @@ -2257,7 +2242,9 @@ impl AnyMetricPattern for MetricPattern32 { } fn indexes(&self) -> &'static [Index] { - &[Index::EmptyAddressIndex] + &[ + Index::EmptyAddressIndex, + ] } } @@ -2313,88 +2300,31 @@ impl RealizedPattern3 { pub fn new(client: Arc, acc: String) -> Self { Self { adjusted_sopr: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr")), - adjusted_sopr_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "adjusted_sopr_30d_ema"), - ), - adjusted_sopr_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "adjusted_sopr_7d_ema"), - ), - adjusted_value_created: MetricPattern1::new( - client.clone(), - _m(&acc, "adjusted_value_created"), - ), - adjusted_value_destroyed: MetricPattern1::new( - client.clone(), - _m(&acc, "adjusted_value_destroyed"), - ), + adjusted_sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_30d_ema")), + adjusted_sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_7d_ema")), + adjusted_value_created: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_created")), + adjusted_value_destroyed: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_destroyed")), mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "net_realized_pnl_cumulative_30d_delta"), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", - ), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", - ), - ), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "net_realized_pnl_rel_to_realized_cap"), - ), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "realized_cap_30d_delta"), - ), - realized_cap_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "realized_cap_rel_to_own_market_cap"), - ), + realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), + realized_cap_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_rel_to_own_market_cap")), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_loss_rel_to_realized_cap"), - ), + realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: ActivePriceRatioPattern::new( - client.clone(), - _m(&acc, "realized_price_ratio"), - ), + realized_price_extra: ActivePriceRatioPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_profit_rel_to_realized_cap"), - ), - realized_profit_to_loss_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "realized_profit_to_loss_ratio"), - ), + realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), + realized_profit_to_loss_ratio: MetricPattern6::new(client.clone(), _m(&acc, "realized_profit_to_loss_ratio")), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio"), - ), - sell_side_risk_ratio_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_30d_ema"), - ), - sell_side_risk_ratio_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_7d_ema"), - ), + sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), + sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), + sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -2444,80 +2374,29 @@ impl RealizedPattern4 { pub fn new(client: Arc, acc: String) -> Self { Self { adjusted_sopr: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr")), - adjusted_sopr_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "adjusted_sopr_30d_ema"), - ), - adjusted_sopr_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "adjusted_sopr_7d_ema"), - ), - adjusted_value_created: MetricPattern1::new( - client.clone(), - _m(&acc, "adjusted_value_created"), - ), - adjusted_value_destroyed: MetricPattern1::new( - client.clone(), - _m(&acc, "adjusted_value_destroyed"), - ), + adjusted_sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_30d_ema")), + adjusted_sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_7d_ema")), + adjusted_value_created: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_created")), + adjusted_value_destroyed: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_destroyed")), mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "net_realized_pnl_cumulative_30d_delta"), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", - ), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", - ), - ), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "net_realized_pnl_rel_to_realized_cap"), - ), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "realized_cap_30d_delta"), - ), + realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_loss_rel_to_realized_cap"), - ), + realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: RealizedPriceExtraPattern::new( - client.clone(), - _m(&acc, "realized_price"), - ), + realized_price_extra: RealizedPriceExtraPattern::new(client.clone(), _m(&acc, "realized_price")), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_profit_rel_to_realized_cap"), - ), + realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio"), - ), - sell_side_risk_ratio_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_30d_ema"), - ), - sell_side_risk_ratio_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_7d_ema"), - ), + sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), + sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), + sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -2634,69 +2513,24 @@ impl RealizedPattern2 { mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "net_realized_pnl_cumulative_30d_delta"), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", - ), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", - ), - ), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "net_realized_pnl_rel_to_realized_cap"), - ), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "realized_cap_30d_delta"), - ), - realized_cap_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "realized_cap_rel_to_own_market_cap"), - ), + realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), + realized_cap_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_rel_to_own_market_cap")), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_loss_rel_to_realized_cap"), - ), + realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: ActivePriceRatioPattern::new( - client.clone(), - _m(&acc, "realized_price_ratio"), - ), + realized_price_extra: ActivePriceRatioPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_profit_rel_to_realized_cap"), - ), - realized_profit_to_loss_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "realized_profit_to_loss_ratio"), - ), + realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), + realized_profit_to_loss_ratio: MetricPattern6::new(client.clone(), _m(&acc, "realized_profit_to_loss_ratio")), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio"), - ), - sell_side_risk_ratio_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_30d_ema"), - ), - sell_side_risk_ratio_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_7d_ema"), - ), + sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), + sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), + sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -2743,61 +2577,22 @@ impl RealizedPattern { mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "net_realized_pnl_cumulative_30d_delta"), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", - ), - ), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( - client.clone(), - _m( - &acc, - "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", - ), - ), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "net_realized_pnl_rel_to_realized_cap"), - ), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new( - client.clone(), - _m(&acc, "realized_cap_30d_delta"), - ), + realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_loss_rel_to_realized_cap"), - ), + realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: RealizedPriceExtraPattern::new( - client.clone(), - _m(&acc, "realized_price"), - ), + realized_price_extra: RealizedPriceExtraPattern::new(client.clone(), _m(&acc, "realized_price")), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new( - client.clone(), - _m(&acc, "realized_profit_rel_to_realized_cap"), - ), + realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio"), - ), - sell_side_risk_ratio_30d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_30d_ema"), - ), - sell_side_risk_ratio_7d_ema: MetricPattern6::new( - client.clone(), - _m(&acc, "sell_side_risk_ratio_7d_ema"), - ), + sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), + sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), + sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -2860,56 +2655,6 @@ impl Price111dSmaPattern { } } -/// Pattern struct for repeated tree structure. -pub struct PercentilesPattern { - pub cost_basis_pct05: MetricPattern4, - pub cost_basis_pct10: MetricPattern4, - pub cost_basis_pct15: MetricPattern4, - pub cost_basis_pct20: MetricPattern4, - pub cost_basis_pct25: MetricPattern4, - pub cost_basis_pct30: MetricPattern4, - pub cost_basis_pct35: MetricPattern4, - pub cost_basis_pct40: MetricPattern4, - pub cost_basis_pct45: MetricPattern4, - pub cost_basis_pct50: MetricPattern4, - pub cost_basis_pct55: MetricPattern4, - pub cost_basis_pct60: MetricPattern4, - pub cost_basis_pct65: MetricPattern4, - pub cost_basis_pct70: MetricPattern4, - pub cost_basis_pct75: MetricPattern4, - pub cost_basis_pct80: MetricPattern4, - pub cost_basis_pct85: MetricPattern4, - pub cost_basis_pct90: MetricPattern4, - pub cost_basis_pct95: MetricPattern4, -} - -impl PercentilesPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - cost_basis_pct05: MetricPattern4::new(client.clone(), _m(&acc, "pct05")), - cost_basis_pct10: MetricPattern4::new(client.clone(), _m(&acc, "pct10")), - cost_basis_pct15: MetricPattern4::new(client.clone(), _m(&acc, "pct15")), - cost_basis_pct20: MetricPattern4::new(client.clone(), _m(&acc, "pct20")), - cost_basis_pct25: MetricPattern4::new(client.clone(), _m(&acc, "pct25")), - cost_basis_pct30: MetricPattern4::new(client.clone(), _m(&acc, "pct30")), - cost_basis_pct35: MetricPattern4::new(client.clone(), _m(&acc, "pct35")), - cost_basis_pct40: MetricPattern4::new(client.clone(), _m(&acc, "pct40")), - cost_basis_pct45: MetricPattern4::new(client.clone(), _m(&acc, "pct45")), - cost_basis_pct50: MetricPattern4::new(client.clone(), _m(&acc, "pct50")), - cost_basis_pct55: MetricPattern4::new(client.clone(), _m(&acc, "pct55")), - cost_basis_pct60: MetricPattern4::new(client.clone(), _m(&acc, "pct60")), - cost_basis_pct65: MetricPattern4::new(client.clone(), _m(&acc, "pct65")), - cost_basis_pct70: MetricPattern4::new(client.clone(), _m(&acc, "pct70")), - cost_basis_pct75: MetricPattern4::new(client.clone(), _m(&acc, "pct75")), - cost_basis_pct80: MetricPattern4::new(client.clone(), _m(&acc, "pct80")), - cost_basis_pct85: MetricPattern4::new(client.clone(), _m(&acc, "pct85")), - cost_basis_pct90: MetricPattern4::new(client.clone(), _m(&acc, "pct90")), - cost_basis_pct95: MetricPattern4::new(client.clone(), _m(&acc, "pct95")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct ActivePriceRatioPattern { pub ratio: MetricPattern4, @@ -2960,6 +2705,56 @@ impl ActivePriceRatioPattern { } } +/// Pattern struct for repeated tree structure. +pub struct PercentilesPattern { + pub cost_basis_pct05: MetricPattern4, + pub cost_basis_pct10: MetricPattern4, + pub cost_basis_pct15: MetricPattern4, + pub cost_basis_pct20: MetricPattern4, + pub cost_basis_pct25: MetricPattern4, + pub cost_basis_pct30: MetricPattern4, + pub cost_basis_pct35: MetricPattern4, + pub cost_basis_pct40: MetricPattern4, + pub cost_basis_pct45: MetricPattern4, + pub cost_basis_pct50: MetricPattern4, + pub cost_basis_pct55: MetricPattern4, + pub cost_basis_pct60: MetricPattern4, + pub cost_basis_pct65: MetricPattern4, + pub cost_basis_pct70: MetricPattern4, + pub cost_basis_pct75: MetricPattern4, + pub cost_basis_pct80: MetricPattern4, + pub cost_basis_pct85: MetricPattern4, + pub cost_basis_pct90: MetricPattern4, + pub cost_basis_pct95: MetricPattern4, +} + +impl PercentilesPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + cost_basis_pct05: MetricPattern4::new(client.clone(), _m(&acc, "pct05")), + cost_basis_pct10: MetricPattern4::new(client.clone(), _m(&acc, "pct10")), + cost_basis_pct15: MetricPattern4::new(client.clone(), _m(&acc, "pct15")), + cost_basis_pct20: MetricPattern4::new(client.clone(), _m(&acc, "pct20")), + cost_basis_pct25: MetricPattern4::new(client.clone(), _m(&acc, "pct25")), + cost_basis_pct30: MetricPattern4::new(client.clone(), _m(&acc, "pct30")), + cost_basis_pct35: MetricPattern4::new(client.clone(), _m(&acc, "pct35")), + cost_basis_pct40: MetricPattern4::new(client.clone(), _m(&acc, "pct40")), + cost_basis_pct45: MetricPattern4::new(client.clone(), _m(&acc, "pct45")), + cost_basis_pct50: MetricPattern4::new(client.clone(), _m(&acc, "pct50")), + cost_basis_pct55: MetricPattern4::new(client.clone(), _m(&acc, "pct55")), + cost_basis_pct60: MetricPattern4::new(client.clone(), _m(&acc, "pct60")), + cost_basis_pct65: MetricPattern4::new(client.clone(), _m(&acc, "pct65")), + cost_basis_pct70: MetricPattern4::new(client.clone(), _m(&acc, "pct70")), + cost_basis_pct75: MetricPattern4::new(client.clone(), _m(&acc, "pct75")), + cost_basis_pct80: MetricPattern4::new(client.clone(), _m(&acc, "pct80")), + cost_basis_pct85: MetricPattern4::new(client.clone(), _m(&acc, "pct85")), + cost_basis_pct90: MetricPattern4::new(client.clone(), _m(&acc, "pct90")), + cost_basis_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, @@ -2986,75 +2781,24 @@ impl RelativePattern5 { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - neg_unrealized_loss_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_market_cap"), - ), - neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_own_market_cap"), - ), - neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - net_unrealized_pnl_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_market_cap"), - ), - net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_own_market_cap"), - ), - net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl"), - ), + neg_unrealized_loss_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_market_cap")), + neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_market_cap")), + neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl")), + net_unrealized_pnl_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_market_cap")), + net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_market_cap")), + net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl")), nupl: MetricPattern1::new(client.clone(), _m(&acc, "nupl")), - supply_in_loss_rel_to_circulating_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_loss_rel_to_circulating_supply"), - ), - supply_in_loss_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_loss_rel_to_own_supply"), - ), - supply_in_profit_rel_to_circulating_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_profit_rel_to_circulating_supply"), - ), - supply_in_profit_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_profit_rel_to_own_supply"), - ), - supply_rel_to_circulating_supply: MetricPattern4::new( - client.clone(), - _m(&acc, "supply_rel_to_circulating_supply"), - ), - unrealized_loss_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_market_cap"), - ), - unrealized_loss_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_own_market_cap"), - ), - unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - unrealized_profit_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_market_cap"), - ), - unrealized_profit_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_own_market_cap"), - ), - unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_own_total_unrealized_pnl"), - ), + supply_in_loss_rel_to_circulating_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_circulating_supply")), + supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_own_supply")), + supply_in_profit_rel_to_circulating_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_circulating_supply")), + supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_own_supply")), + supply_rel_to_circulating_supply: MetricPattern4::new(client.clone(), _m(&acc, "supply_rel_to_circulating_supply")), + unrealized_loss_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_market_cap")), + unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_market_cap")), + unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_total_unrealized_pnl")), + unrealized_profit_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_market_cap")), + unrealized_profit_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_market_cap")), + unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_total_unrealized_pnl")), } } } @@ -3156,102 +2900,18 @@ impl PeriodLumpSumStackPattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - _10y: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "10y".to_string() - } else { - format!("10y_{acc}") - }, - ), - _1m: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "1m".to_string() - } else { - format!("1m_{acc}") - }, - ), - _1w: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "1w".to_string() - } else { - format!("1w_{acc}") - }, - ), - _1y: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "1y".to_string() - } else { - format!("1y_{acc}") - }, - ), - _2y: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "2y".to_string() - } else { - format!("2y_{acc}") - }, - ), - _3m: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "3m".to_string() - } else { - format!("3m_{acc}") - }, - ), - _3y: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "3y".to_string() - } else { - format!("3y_{acc}") - }, - ), - _4y: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "4y".to_string() - } else { - format!("4y_{acc}") - }, - ), - _5y: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "5y".to_string() - } else { - format!("5y_{acc}") - }, - ), - _6m: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "6m".to_string() - } else { - format!("6m_{acc}") - }, - ), - _6y: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "6y".to_string() - } else { - format!("6y_{acc}") - }, - ), - _8y: _2015Pattern::new( - client.clone(), - if acc.is_empty() { - "8y".to_string() - } else { - format!("8y_{acc}") - }, - ), + _10y: _2015Pattern::new(client.clone(), if acc.is_empty() { "10y".to_string() } else { format!("10y_{acc}") }), + _1m: _2015Pattern::new(client.clone(), if acc.is_empty() { "1m".to_string() } else { format!("1m_{acc}") }), + _1w: _2015Pattern::new(client.clone(), if acc.is_empty() { "1w".to_string() } else { format!("1w_{acc}") }), + _1y: _2015Pattern::new(client.clone(), if acc.is_empty() { "1y".to_string() } else { format!("1y_{acc}") }), + _2y: _2015Pattern::new(client.clone(), if acc.is_empty() { "2y".to_string() } else { format!("2y_{acc}") }), + _3m: _2015Pattern::new(client.clone(), if acc.is_empty() { "3m".to_string() } else { format!("3m_{acc}") }), + _3y: _2015Pattern::new(client.clone(), if acc.is_empty() { "3y".to_string() } else { format!("3y_{acc}") }), + _4y: _2015Pattern::new(client.clone(), if acc.is_empty() { "4y".to_string() } else { format!("4y_{acc}") }), + _5y: _2015Pattern::new(client.clone(), if acc.is_empty() { "5y".to_string() } else { format!("5y_{acc}") }), + _6m: _2015Pattern::new(client.clone(), if acc.is_empty() { "6m".to_string() } else { format!("6m_{acc}") }), + _6y: _2015Pattern::new(client.clone(), if acc.is_empty() { "6y".to_string() } else { format!("6y_{acc}") }), + _8y: _2015Pattern::new(client.clone(), if acc.is_empty() { "8y".to_string() } else { format!("8y_{acc}") }), } } } @@ -3276,102 +2936,18 @@ impl PeriodAveragePricePattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - _10y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "10y".to_string() - } else { - format!("10y_{acc}") - }, - ), - _1m: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "1m".to_string() - } else { - format!("1m_{acc}") - }, - ), - _1w: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "1w".to_string() - } else { - format!("1w_{acc}") - }, - ), - _1y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "1y".to_string() - } else { - format!("1y_{acc}") - }, - ), - _2y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "2y".to_string() - } else { - format!("2y_{acc}") - }, - ), - _3m: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "3m".to_string() - } else { - format!("3m_{acc}") - }, - ), - _3y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "3y".to_string() - } else { - format!("3y_{acc}") - }, - ), - _4y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "4y".to_string() - } else { - format!("4y_{acc}") - }, - ), - _5y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "5y".to_string() - } else { - format!("5y_{acc}") - }, - ), - _6m: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "6m".to_string() - } else { - format!("6m_{acc}") - }, - ), - _6y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "6y".to_string() - } else { - format!("6y_{acc}") - }, - ), - _8y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "8y".to_string() - } else { - format!("8y_{acc}") - }, - ), + _10y: MetricPattern4::new(client.clone(), if acc.is_empty() { "10y".to_string() } else { format!("10y_{acc}") }), + _1m: MetricPattern4::new(client.clone(), if acc.is_empty() { "1m".to_string() } else { format!("1m_{acc}") }), + _1w: MetricPattern4::new(client.clone(), if acc.is_empty() { "1w".to_string() } else { format!("1w_{acc}") }), + _1y: MetricPattern4::new(client.clone(), if acc.is_empty() { "1y".to_string() } else { format!("1y_{acc}") }), + _2y: MetricPattern4::new(client.clone(), if acc.is_empty() { "2y".to_string() } else { format!("2y_{acc}") }), + _3m: MetricPattern4::new(client.clone(), if acc.is_empty() { "3m".to_string() } else { format!("3m_{acc}") }), + _3y: MetricPattern4::new(client.clone(), if acc.is_empty() { "3y".to_string() } else { format!("3y_{acc}") }), + _4y: MetricPattern4::new(client.clone(), if acc.is_empty() { "4y".to_string() } else { format!("4y_{acc}") }), + _5y: MetricPattern4::new(client.clone(), if acc.is_empty() { "5y".to_string() } else { format!("5y_{acc}") }), + _6m: MetricPattern4::new(client.clone(), if acc.is_empty() { "6m".to_string() } else { format!("6m_{acc}") }), + _6y: MetricPattern4::new(client.clone(), if acc.is_empty() { "6y".to_string() } else { format!("6y_{acc}") }), + _8y: MetricPattern4::new(client.clone(), if acc.is_empty() { "8y".to_string() } else { format!("8y_{acc}") }), } } } @@ -3495,43 +3071,16 @@ impl RelativePattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - neg_unrealized_loss_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_market_cap"), - ), - net_unrealized_pnl_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_market_cap"), - ), + neg_unrealized_loss_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_market_cap")), + net_unrealized_pnl_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_market_cap")), nupl: MetricPattern1::new(client.clone(), _m(&acc, "nupl")), - supply_in_loss_rel_to_circulating_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_loss_rel_to_circulating_supply"), - ), - supply_in_loss_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_loss_rel_to_own_supply"), - ), - supply_in_profit_rel_to_circulating_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_profit_rel_to_circulating_supply"), - ), - supply_in_profit_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_profit_rel_to_own_supply"), - ), - supply_rel_to_circulating_supply: MetricPattern4::new( - client.clone(), - _m(&acc, "supply_rel_to_circulating_supply"), - ), - unrealized_loss_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_market_cap"), - ), - unrealized_profit_rel_to_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_market_cap"), - ), + supply_in_loss_rel_to_circulating_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_circulating_supply")), + supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_own_supply")), + supply_in_profit_rel_to_circulating_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_circulating_supply")), + supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_own_supply")), + supply_rel_to_circulating_supply: MetricPattern4::new(client.clone(), _m(&acc, "supply_rel_to_circulating_supply")), + unrealized_loss_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_market_cap")), + unrealized_profit_rel_to_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_market_cap")), } } } @@ -3554,46 +3103,16 @@ impl RelativePattern2 { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_own_market_cap"), - ), - neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_own_market_cap"), - ), - net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl"), - ), - supply_in_loss_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_loss_rel_to_own_supply"), - ), - supply_in_profit_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "supply_in_profit_rel_to_own_supply"), - ), - unrealized_loss_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_own_market_cap"), - ), - unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - unrealized_profit_rel_to_own_market_cap: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_own_market_cap"), - ), - unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "unrealized_profit_rel_to_own_total_unrealized_pnl"), - ), + neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_market_cap")), + neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl")), + net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_market_cap")), + net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl")), + supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_own_supply")), + supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_own_supply")), + unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_market_cap")), + unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_total_unrealized_pnl")), + unrealized_profit_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_market_cap")), + unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_total_unrealized_pnl")), } } } @@ -3718,31 +3237,57 @@ impl _0satsPattern { } /// Pattern struct for repeated tree structure. -pub struct _100btcPattern { +pub struct _10yTo12yPattern { pub activity: ActivityPattern2, - pub cost_basis: CostBasisPattern, + pub cost_basis: CostBasisPattern2, pub outputs: OutputsPattern, - pub realized: RealizedPattern, - pub relative: RelativePattern, + pub realized: RealizedPattern2, + pub relative: RelativePattern2, pub supply: SupplyPattern2, pub unrealized: UnrealizedPattern, } -impl _100btcPattern { +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: CostBasisPattern::new(client.clone(), acc.clone()), + cost_basis: CostBasisPattern2::new(client.clone(), acc.clone()), outputs: OutputsPattern::new(client.clone(), acc.clone()), - realized: RealizedPattern::new(client.clone(), acc.clone()), - relative: RelativePattern::new(client.clone(), acc.clone()), + 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 PeriodCagrPattern { + pub _10y: MetricPattern4, + pub _2y: MetricPattern4, + pub _3y: MetricPattern4, + pub _4y: MetricPattern4, + pub _5y: MetricPattern4, + pub _6y: MetricPattern4, + pub _8y: MetricPattern4, +} + +impl PeriodCagrPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + _10y: MetricPattern4::new(client.clone(), if acc.is_empty() { "10y".to_string() } else { format!("10y_{acc}") }), + _2y: MetricPattern4::new(client.clone(), if acc.is_empty() { "2y".to_string() } else { format!("2y_{acc}") }), + _3y: MetricPattern4::new(client.clone(), if acc.is_empty() { "3y".to_string() } else { format!("3y_{acc}") }), + _4y: MetricPattern4::new(client.clone(), if acc.is_empty() { "4y".to_string() } else { format!("4y_{acc}") }), + _5y: MetricPattern4::new(client.clone(), if acc.is_empty() { "5y".to_string() } else { format!("5y_{acc}") }), + _6y: MetricPattern4::new(client.clone(), if acc.is_empty() { "6y".to_string() } else { format!("6y_{acc}") }), + _8y: MetricPattern4::new(client.clone(), if acc.is_empty() { "8y".to_string() } else { format!("8y_{acc}") }), + } + } +} + /// Pattern struct for repeated tree structure. pub struct _0satsPattern2 { pub activity: ActivityPattern2, @@ -3769,32 +3314,6 @@ impl _0satsPattern2 { } } -/// 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(), acc.clone()), - 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 UnrealizedPattern { pub neg_unrealized_loss: MetricPattern1, @@ -3810,20 +3329,11 @@ impl UnrealizedPattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - neg_unrealized_loss: MetricPattern1::new( - client.clone(), - _m(&acc, "neg_unrealized_loss"), - ), + neg_unrealized_loss: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss")), net_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl")), supply_in_loss: ActiveSupplyPattern::new(client.clone(), _m(&acc, "supply_in_loss")), - supply_in_profit: ActiveSupplyPattern::new( - client.clone(), - _m(&acc, "supply_in_profit"), - ), - total_unrealized_pnl: MetricPattern1::new( - client.clone(), - _m(&acc, "total_unrealized_pnl"), - ), + supply_in_profit: ActiveSupplyPattern::new(client.clone(), _m(&acc, "supply_in_profit")), + total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "total_unrealized_pnl")), unrealized_loss: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss")), unrealized_profit: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit")), } @@ -3831,76 +3341,27 @@ impl UnrealizedPattern { } /// Pattern struct for repeated tree structure. -pub struct PeriodCagrPattern { - pub _10y: MetricPattern4, - pub _2y: MetricPattern4, - pub _3y: MetricPattern4, - pub _4y: MetricPattern4, - pub _5y: MetricPattern4, - pub _6y: MetricPattern4, - pub _8y: MetricPattern4, +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 PeriodCagrPattern { +impl _100btcPattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - _10y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "10y".to_string() - } else { - format!("10y_{acc}") - }, - ), - _2y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "2y".to_string() - } else { - format!("2y_{acc}") - }, - ), - _3y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "3y".to_string() - } else { - format!("3y_{acc}") - }, - ), - _4y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "4y".to_string() - } else { - format!("4y_{acc}") - }, - ), - _5y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "5y".to_string() - } else { - format!("5y_{acc}") - }, - ), - _6y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "6y".to_string() - } else { - format!("6y_{acc}") - }, - ), - _8y: MetricPattern4::new( - client.clone(), - if acc.is_empty() { - "8y".to_string() - } else { - format!("8y_{acc}") - }, - ), + activity: ActivityPattern2::new(client.clone(), acc.clone()), + cost_basis: CostBasisPattern::new(client.clone(), acc.clone()), + outputs: OutputsPattern::new(client.clone(), acc.clone()), + 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()), } } } @@ -3944,18 +3405,9 @@ impl ActivityPattern2 { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - coinblocks_destroyed: BlockCountPattern::new( - client.clone(), - _m(&acc, "coinblocks_destroyed"), - ), - coindays_destroyed: BlockCountPattern::new( - client.clone(), - _m(&acc, "coindays_destroyed"), - ), - satblocks_destroyed: MetricPattern11::new( - client.clone(), - _m(&acc, "satblocks_destroyed"), - ), + coinblocks_destroyed: BlockCountPattern::new(client.clone(), _m(&acc, "coinblocks_destroyed")), + coindays_destroyed: BlockCountPattern::new(client.clone(), _m(&acc, "coindays_destroyed")), + satblocks_destroyed: MetricPattern11::new(client.clone(), _m(&acc, "satblocks_destroyed")), satdays_destroyed: MetricPattern11::new(client.clone(), _m(&acc, "satdays_destroyed")), sent: UnclaimedRewardsPattern::new(client.clone(), _m(&acc, "sent")), } @@ -4000,24 +3452,6 @@ impl CoinbasePattern { } } -/// 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 ActiveSupplyPattern { pub bitcoin: MetricPattern1, @@ -4054,44 +3488,6 @@ impl UnclaimedRewardsPattern { } } -/// Pattern struct for repeated tree structure. -pub struct _2015Pattern { - pub bitcoin: MetricPattern4, - pub dollars: MetricPattern4, - pub sats: MetricPattern4, -} - -impl _2015Pattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - bitcoin: MetricPattern4::new(client.clone(), _m(&acc, "btc")), - dollars: MetricPattern4::new(client.clone(), _m(&acc, "usd")), - sats: MetricPattern4::new(client.clone(), acc.clone()), - } - } -} - -/// Pattern struct for repeated tree structure. -pub struct CostBasisPattern2 { - pub max: MetricPattern1, - pub min: MetricPattern1, - pub percentiles: PercentilesPattern, -} - -impl CostBasisPattern2 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - max: MetricPattern1::new(client.clone(), format!("{base_path}_max")), - min: MetricPattern1::new(client.clone(), format!("{base_path}_min")), - percentiles: PercentilesPattern::new( - client.clone(), - format!("{base_path}_percentiles"), - ), - } - } -} - /// Pattern struct for repeated tree structure. pub struct SegwitAdoptionPattern { pub base: MetricPattern11, @@ -4111,23 +3507,54 @@ impl SegwitAdoptionPattern { } /// Pattern struct for repeated tree structure. -pub struct RelativePattern4 { - pub supply_in_loss_rel_to_own_supply: MetricPattern1, - pub supply_in_profit_rel_to_own_supply: MetricPattern1, +pub struct CostBasisPattern2 { + pub max: MetricPattern1, + pub min: MetricPattern1, + pub percentiles: PercentilesPattern, } -impl RelativePattern4 { +impl CostBasisPattern2 { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + max: MetricPattern1::new(client.clone(), format!("{base_path}_max")), + min: MetricPattern1::new(client.clone(), format!("{base_path}_min")), + percentiles: PercentilesPattern::new(client.clone(), format!("{base_path}_percentiles")), + } + } +} + +/// 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 { - supply_in_loss_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "loss_rel_to_own_supply"), - ), - supply_in_profit_rel_to_own_supply: MetricPattern1::new( - client.clone(), - _m(&acc, "profit_rel_to_own_supply"), - ), + bitcoin: 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, + pub dollars: MetricPattern4, + pub sats: MetricPattern4, +} + +impl _2015Pattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + bitcoin: MetricPattern4::new(client.clone(), _m(&acc, "btc")), + dollars: MetricPattern4::new(client.clone(), _m(&acc, "usd")), + sats: MetricPattern4::new(client.clone(), acc.clone()), } } } @@ -4148,22 +3575,6 @@ impl SupplyPattern2 { } } -/// Pattern struct for repeated tree structure. -pub struct CostBasisPattern { - pub max: MetricPattern1, - pub min: MetricPattern1, -} - -impl CostBasisPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - max: MetricPattern1::new(client.clone(), _m(&acc, "max_cost_basis")), - min: MetricPattern1::new(client.clone(), _m(&acc, "min_cost_basis")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct _1dReturns1mSdPattern { pub sd: MetricPattern4, @@ -4181,17 +3592,33 @@ impl _1dReturns1mSdPattern { } /// Pattern struct for repeated tree structure. -pub struct BlockCountPattern { - pub cumulative: MetricPattern1, - pub sum: MetricPattern1, +pub struct CostBasisPattern { + pub max: MetricPattern1, + pub min: MetricPattern1, } -impl BlockCountPattern { +impl CostBasisPattern { /// Create a new pattern node with accumulated metric name. pub fn new(client: Arc, acc: String) -> Self { Self { - cumulative: MetricPattern1::new(client.clone(), _m(&acc, "cumulative")), - sum: MetricPattern1::new(client.clone(), acc.clone()), + max: MetricPattern1::new(client.clone(), _m(&acc, "max_cost_basis")), + min: MetricPattern1::new(client.clone(), _m(&acc, "min_cost_basis")), + } + } +} + +/// Pattern struct for repeated tree structure. +pub struct RelativePattern4 { + pub supply_in_loss_rel_to_own_supply: MetricPattern1, + pub supply_in_profit_rel_to_own_supply: MetricPattern1, +} + +impl RelativePattern4 { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "loss_rel_to_own_supply")), + supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "profit_rel_to_own_supply")), } } } @@ -4227,6 +3654,22 @@ impl SatsPattern { } } +/// Pattern struct for repeated tree structure. +pub struct BlockCountPattern { + pub cumulative: MetricPattern1, + pub sum: MetricPattern1, +} + +impl BlockCountPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + cumulative: MetricPattern1::new(client.clone(), _m(&acc, "cumulative")), + sum: MetricPattern1::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct RealizedPriceExtraPattern { pub ratio: MetricPattern4, @@ -4283,10 +3726,7 @@ impl CatalogTree { blocks: CatalogTree_Blocks::new(client.clone(), format!("{base_path}_blocks")), cointime: CatalogTree_Cointime::new(client.clone(), format!("{base_path}_cointime")), constants: CatalogTree_Constants::new(client.clone(), format!("{base_path}_constants")), - distribution: CatalogTree_Distribution::new( - client.clone(), - format!("{base_path}_distribution"), - ), + distribution: CatalogTree_Distribution::new(client.clone(), format!("{base_path}_distribution")), indexes: CatalogTree_Indexes::new(client.clone(), format!("{base_path}_indexes")), inputs: CatalogTree_Inputs::new(client.clone(), format!("{base_path}_inputs")), market: CatalogTree_Market::new(client.clone(), format!("{base_path}_market")), @@ -4296,10 +3736,7 @@ impl CatalogTree { price: CatalogTree_Price::new(client.clone(), format!("{base_path}_price")), scripts: CatalogTree_Scripts::new(client.clone(), format!("{base_path}_scripts")), supply: CatalogTree_Supply::new(client.clone(), format!("{base_path}_supply")), - transactions: CatalogTree_Transactions::new( - client.clone(), - format!("{base_path}_transactions"), - ), + transactions: CatalogTree_Transactions::new(client.clone(), format!("{base_path}_transactions")), } } } @@ -4327,46 +3764,22 @@ pub struct CatalogTree_Addresses { impl CatalogTree_Addresses { pub fn new(client: Arc, base_path: String) -> Self { Self { - first_p2aaddressindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_p2aaddressindex"), - ), - first_p2pk33addressindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_p2pk33addressindex"), - ), - first_p2pk65addressindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_p2pk65addressindex"), - ), - first_p2pkhaddressindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_p2pkhaddressindex"), - ), - first_p2shaddressindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_p2shaddressindex"), - ), - first_p2traddressindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_p2traddressindex"), - ), - first_p2wpkhaddressindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_p2wpkhaddressindex"), - ), - first_p2wshaddressindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_p2wshaddressindex"), - ), - p2abytes: MetricPattern16::new(client.clone(), format!("{base_path}_p2abytes")), - p2pk33bytes: MetricPattern18::new(client.clone(), format!("{base_path}_p2pk33bytes")), - p2pk65bytes: MetricPattern19::new(client.clone(), format!("{base_path}_p2pk65bytes")), - p2pkhbytes: MetricPattern20::new(client.clone(), format!("{base_path}_p2pkhbytes")), - p2shbytes: MetricPattern21::new(client.clone(), format!("{base_path}_p2shbytes")), - p2trbytes: MetricPattern22::new(client.clone(), format!("{base_path}_p2trbytes")), - p2wpkhbytes: MetricPattern23::new(client.clone(), format!("{base_path}_p2wpkhbytes")), - p2wshbytes: MetricPattern24::new(client.clone(), format!("{base_path}_p2wshbytes")), + first_p2aaddressindex: MetricPattern11::new(client.clone(), "first_p2aaddressindex".to_string()), + first_p2pk33addressindex: MetricPattern11::new(client.clone(), "first_p2pk33addressindex".to_string()), + first_p2pk65addressindex: MetricPattern11::new(client.clone(), "first_p2pk65addressindex".to_string()), + first_p2pkhaddressindex: MetricPattern11::new(client.clone(), "first_p2pkhaddressindex".to_string()), + first_p2shaddressindex: MetricPattern11::new(client.clone(), "first_p2shaddressindex".to_string()), + first_p2traddressindex: MetricPattern11::new(client.clone(), "first_p2traddressindex".to_string()), + first_p2wpkhaddressindex: MetricPattern11::new(client.clone(), "first_p2wpkhaddressindex".to_string()), + first_p2wshaddressindex: MetricPattern11::new(client.clone(), "first_p2wshaddressindex".to_string()), + p2abytes: MetricPattern16::new(client.clone(), "p2abytes".to_string()), + p2pk33bytes: MetricPattern18::new(client.clone(), "p2pk33bytes".to_string()), + p2pk65bytes: MetricPattern19::new(client.clone(), "p2pk65bytes".to_string()), + p2pkhbytes: MetricPattern20::new(client.clone(), "p2pkhbytes".to_string()), + p2shbytes: MetricPattern21::new(client.clone(), "p2shbytes".to_string()), + p2trbytes: MetricPattern22::new(client.clone(), "p2trbytes".to_string()), + p2wpkhbytes: MetricPattern23::new(client.clone(), "p2wpkhbytes".to_string()), + p2wshbytes: MetricPattern24::new(client.clone(), "p2wshbytes".to_string()), } } } @@ -4391,31 +3804,19 @@ pub struct CatalogTree_Blocks { impl CatalogTree_Blocks { pub fn new(client: Arc, base_path: String) -> Self { Self { - blockhash: MetricPattern11::new(client.clone(), format!("{base_path}_blockhash")), + blockhash: MetricPattern11::new(client.clone(), "blockhash".to_string()), count: CatalogTree_Blocks_Count::new(client.clone(), format!("{base_path}_count")), - difficulty: CatalogTree_Blocks_Difficulty::new( - client.clone(), - format!("{base_path}_difficulty"), - ), + difficulty: CatalogTree_Blocks_Difficulty::new(client.clone(), format!("{base_path}_difficulty")), fullness: FullnessPattern::new(client.clone(), "block_fullness".to_string()), - halving: CatalogTree_Blocks_Halving::new( - client.clone(), - format!("{base_path}_halving"), - ), - interval: CatalogTree_Blocks_Interval::new( - client.clone(), - format!("{base_path}_interval"), - ), + halving: CatalogTree_Blocks_Halving::new(client.clone(), format!("{base_path}_halving")), + interval: CatalogTree_Blocks_Interval::new(client.clone(), format!("{base_path}_interval")), mining: CatalogTree_Blocks_Mining::new(client.clone(), format!("{base_path}_mining")), - rewards: CatalogTree_Blocks_Rewards::new( - client.clone(), - format!("{base_path}_rewards"), - ), + rewards: CatalogTree_Blocks_Rewards::new(client.clone(), format!("{base_path}_rewards")), size: CatalogTree_Blocks_Size::new(client.clone(), format!("{base_path}_size")), time: CatalogTree_Blocks_Time::new(client.clone(), format!("{base_path}_time")), - total_size: MetricPattern11::new(client.clone(), format!("{base_path}_total_size")), + total_size: MetricPattern11::new(client.clone(), "total_size".to_string()), vbytes: DollarsPattern::new(client.clone(), "block_vbytes".to_string()), - weight: DollarsPattern::new(client.clone(), "".to_string()), + weight: DollarsPattern::new(client.clone(), "block_weight_average".to_string()), } } } @@ -4437,31 +3838,16 @@ pub struct CatalogTree_Blocks_Count { impl CatalogTree_Blocks_Count { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1m_block_count: MetricPattern1::new( - client.clone(), - format!("{base_path}_1m_block_count"), - ), - _1m_start: MetricPattern11::new(client.clone(), format!("{base_path}_1m_start")), - _1w_block_count: MetricPattern1::new( - client.clone(), - format!("{base_path}_1w_block_count"), - ), - _1w_start: MetricPattern11::new(client.clone(), format!("{base_path}_1w_start")), - _1y_block_count: MetricPattern1::new( - client.clone(), - format!("{base_path}_1y_block_count"), - ), - _1y_start: MetricPattern11::new(client.clone(), format!("{base_path}_1y_start")), - _24h_block_count: MetricPattern1::new( - client.clone(), - format!("{base_path}_24h_block_count"), - ), - _24h_start: MetricPattern11::new(client.clone(), format!("{base_path}_24h_start")), + _1m_block_count: MetricPattern1::new(client.clone(), "1m_block_count".to_string()), + _1m_start: MetricPattern11::new(client.clone(), "1m_start".to_string()), + _1w_block_count: MetricPattern1::new(client.clone(), "1w_block_count".to_string()), + _1w_start: MetricPattern11::new(client.clone(), "1w_start".to_string()), + _1y_block_count: MetricPattern1::new(client.clone(), "1y_block_count".to_string()), + _1y_start: MetricPattern11::new(client.clone(), "1y_start".to_string()), + _24h_block_count: MetricPattern1::new(client.clone(), "24h_block_count".to_string()), + _24h_start: MetricPattern11::new(client.clone(), "24h_start".to_string()), block_count: BlockCountPattern::new(client.clone(), "block_count".to_string()), - block_count_target: MetricPattern4::new( - client.clone(), - format!("{base_path}_block_count_target"), - ), + block_count_target: MetricPattern4::new(client.clone(), "block_count_target".to_string()), } } } @@ -4479,18 +3865,12 @@ pub struct CatalogTree_Blocks_Difficulty { impl CatalogTree_Blocks_Difficulty { pub fn new(client: Arc, base_path: String) -> Self { Self { - adjustment: MetricPattern1::new(client.clone(), format!("{base_path}_adjustment")), - as_hash: MetricPattern1::new(client.clone(), format!("{base_path}_as_hash")), - blocks_before_next_adjustment: MetricPattern1::new( - client.clone(), - format!("{base_path}_blocks_before_next_adjustment"), - ), - days_before_next_adjustment: MetricPattern1::new( - client.clone(), - format!("{base_path}_days_before_next_adjustment"), - ), - epoch: MetricPattern4::new(client.clone(), format!("{base_path}_epoch")), - raw: MetricPattern1::new(client.clone(), format!("{base_path}_raw")), + adjustment: MetricPattern1::new(client.clone(), "difficulty_adjustment".to_string()), + as_hash: MetricPattern1::new(client.clone(), "difficulty_as_hash".to_string()), + blocks_before_next_adjustment: MetricPattern1::new(client.clone(), "blocks_before_next_difficulty_adjustment".to_string()), + days_before_next_adjustment: MetricPattern1::new(client.clone(), "days_before_next_difficulty_adjustment".to_string()), + epoch: MetricPattern4::new(client.clone(), "difficultyepoch".to_string()), + raw: MetricPattern1::new(client.clone(), "difficulty".to_string()), } } } @@ -4505,15 +3885,9 @@ pub struct CatalogTree_Blocks_Halving { impl CatalogTree_Blocks_Halving { pub fn new(client: Arc, base_path: String) -> Self { Self { - blocks_before_next_halving: MetricPattern1::new( - client.clone(), - format!("{base_path}_blocks_before_next_halving"), - ), - days_before_next_halving: MetricPattern1::new( - client.clone(), - format!("{base_path}_days_before_next_halving"), - ), - epoch: MetricPattern4::new(client.clone(), format!("{base_path}_epoch")), + blocks_before_next_halving: MetricPattern1::new(client.clone(), "blocks_before_next_halving".to_string()), + days_before_next_halving: MetricPattern1::new(client.clone(), "days_before_next_halving".to_string()), + epoch: MetricPattern4::new(client.clone(), "halvingepoch".to_string()), } } } @@ -4534,15 +3908,15 @@ pub struct CatalogTree_Blocks_Interval { impl CatalogTree_Blocks_Interval { pub fn new(client: Arc, base_path: String) -> Self { Self { - average: MetricPattern2::new(client.clone(), format!("{base_path}_average")), - base: MetricPattern11::new(client.clone(), format!("{base_path}_base")), - max: MetricPattern2::new(client.clone(), format!("{base_path}_max")), - median: MetricPattern6::new(client.clone(), format!("{base_path}_median")), - min: MetricPattern2::new(client.clone(), format!("{base_path}_min")), - pct10: MetricPattern6::new(client.clone(), format!("{base_path}_pct10")), - pct25: MetricPattern6::new(client.clone(), format!("{base_path}_pct25")), - pct75: MetricPattern6::new(client.clone(), format!("{base_path}_pct75")), - pct90: MetricPattern6::new(client.clone(), format!("{base_path}_pct90")), + average: MetricPattern2::new(client.clone(), "block_interval_average".to_string()), + base: MetricPattern11::new(client.clone(), "block_interval".to_string()), + max: MetricPattern2::new(client.clone(), "block_interval_max".to_string()), + median: MetricPattern6::new(client.clone(), "block_interval_median".to_string()), + min: MetricPattern2::new(client.clone(), "block_interval_min".to_string()), + pct10: MetricPattern6::new(client.clone(), "block_interval_pct10".to_string()), + pct25: MetricPattern6::new(client.clone(), "block_interval_pct25".to_string()), + pct75: MetricPattern6::new(client.clone(), "block_interval_pct75".to_string()), + pct90: MetricPattern6::new(client.clone(), "block_interval_pct90".to_string()), } } } @@ -4569,63 +3943,21 @@ pub struct CatalogTree_Blocks_Mining { impl CatalogTree_Blocks_Mining { pub fn new(client: Arc, base_path: String) -> Self { Self { - hash_price_phs: MetricPattern1::new( - client.clone(), - format!("{base_path}_hash_price_phs"), - ), - hash_price_phs_min: MetricPattern1::new( - client.clone(), - format!("{base_path}_hash_price_phs_min"), - ), - hash_price_rebound: MetricPattern1::new( - client.clone(), - format!("{base_path}_hash_price_rebound"), - ), - hash_price_ths: MetricPattern1::new( - client.clone(), - format!("{base_path}_hash_price_ths"), - ), - hash_price_ths_min: MetricPattern1::new( - client.clone(), - format!("{base_path}_hash_price_ths_min"), - ), - hash_rate: MetricPattern1::new(client.clone(), format!("{base_path}_hash_rate")), - hash_rate_1m_sma: MetricPattern4::new( - client.clone(), - format!("{base_path}_hash_rate_1m_sma"), - ), - hash_rate_1w_sma: MetricPattern4::new( - client.clone(), - format!("{base_path}_hash_rate_1w_sma"), - ), - hash_rate_1y_sma: MetricPattern4::new( - client.clone(), - format!("{base_path}_hash_rate_1y_sma"), - ), - hash_rate_2m_sma: MetricPattern4::new( - client.clone(), - format!("{base_path}_hash_rate_2m_sma"), - ), - hash_value_phs: MetricPattern1::new( - client.clone(), - format!("{base_path}_hash_value_phs"), - ), - hash_value_phs_min: MetricPattern1::new( - client.clone(), - format!("{base_path}_hash_value_phs_min"), - ), - hash_value_rebound: MetricPattern1::new( - client.clone(), - format!("{base_path}_hash_value_rebound"), - ), - hash_value_ths: MetricPattern1::new( - client.clone(), - format!("{base_path}_hash_value_ths"), - ), - hash_value_ths_min: MetricPattern1::new( - client.clone(), - format!("{base_path}_hash_value_ths_min"), - ), + hash_price_phs: MetricPattern1::new(client.clone(), "hash_price_phs".to_string()), + hash_price_phs_min: MetricPattern1::new(client.clone(), "hash_price_phs_min".to_string()), + hash_price_rebound: MetricPattern1::new(client.clone(), "hash_price_rebound".to_string()), + hash_price_ths: MetricPattern1::new(client.clone(), "hash_price_ths".to_string()), + hash_price_ths_min: MetricPattern1::new(client.clone(), "hash_price_ths_min".to_string()), + hash_rate: MetricPattern1::new(client.clone(), "hash_rate".to_string()), + hash_rate_1m_sma: MetricPattern4::new(client.clone(), "hash_rate_1m_sma".to_string()), + hash_rate_1w_sma: MetricPattern4::new(client.clone(), "hash_rate_1w_sma".to_string()), + hash_rate_1y_sma: MetricPattern4::new(client.clone(), "hash_rate_1y_sma".to_string()), + hash_rate_2m_sma: MetricPattern4::new(client.clone(), "hash_rate_2m_sma".to_string()), + hash_value_phs: MetricPattern1::new(client.clone(), "hash_value_phs".to_string()), + hash_value_phs_min: MetricPattern1::new(client.clone(), "hash_value_phs_min".to_string()), + hash_value_rebound: MetricPattern1::new(client.clone(), "hash_value_rebound".to_string()), + hash_value_ths: MetricPattern1::new(client.clone(), "hash_value_ths".to_string()), + hash_value_ths_min: MetricPattern1::new(client.clone(), "hash_value_ths_min".to_string()), } } } @@ -4644,28 +3976,13 @@ pub struct CatalogTree_Blocks_Rewards { impl CatalogTree_Blocks_Rewards { pub fn new(client: Arc, base_path: String) -> Self { Self { - _24h_coinbase_sum: CatalogTree_Blocks_Rewards_24hCoinbaseSum::new( - client.clone(), - format!("{base_path}__24h_coinbase_sum"), - ), + _24h_coinbase_sum: CatalogTree_Blocks_Rewards_24hCoinbaseSum::new(client.clone(), format!("{base_path}__24h_coinbase_sum")), coinbase: CoinbasePattern::new(client.clone(), "coinbase".to_string()), - fee_dominance: MetricPattern6::new( - client.clone(), - format!("{base_path}_fee_dominance"), - ), + fee_dominance: MetricPattern6::new(client.clone(), "fee_dominance".to_string()), subsidy: CoinbasePattern::new(client.clone(), "subsidy".to_string()), - subsidy_dominance: MetricPattern6::new( - client.clone(), - format!("{base_path}_subsidy_dominance"), - ), - subsidy_usd_1y_sma: MetricPattern4::new( - client.clone(), - format!("{base_path}_subsidy_usd_1y_sma"), - ), - unclaimed_rewards: UnclaimedRewardsPattern::new( - client.clone(), - "unclaimed_rewards".to_string(), - ), + subsidy_dominance: MetricPattern6::new(client.clone(), "subsidy_dominance".to_string()), + subsidy_usd_1y_sma: MetricPattern4::new(client.clone(), "subsidy_usd_1y_sma".to_string()), + unclaimed_rewards: UnclaimedRewardsPattern::new(client.clone(), "unclaimed_rewards".to_string()), } } } @@ -4680,9 +3997,9 @@ pub struct CatalogTree_Blocks_Rewards_24hCoinbaseSum { impl CatalogTree_Blocks_Rewards_24hCoinbaseSum { pub fn new(client: Arc, base_path: String) -> Self { Self { - bitcoin: MetricPattern11::new(client.clone(), format!("{base_path}_bitcoin")), - dollars: MetricPattern11::new(client.clone(), format!("{base_path}_dollars")), - sats: MetricPattern11::new(client.clone(), format!("{base_path}_sats")), + bitcoin: MetricPattern11::new(client.clone(), "24h_coinbase_sum_btc".to_string()), + dollars: MetricPattern11::new(client.clone(), "24h_coinbase_sum_usd".to_string()), + sats: MetricPattern11::new(client.clone(), "24h_coinbase_sum".to_string()), } } } @@ -4704,16 +4021,16 @@ pub struct CatalogTree_Blocks_Size { impl CatalogTree_Blocks_Size { pub fn new(client: Arc, base_path: String) -> Self { Self { - average: MetricPattern2::new(client.clone(), format!("{base_path}_average")), - cumulative: MetricPattern1::new(client.clone(), format!("{base_path}_cumulative")), - max: MetricPattern2::new(client.clone(), format!("{base_path}_max")), - median: MetricPattern6::new(client.clone(), format!("{base_path}_median")), - min: MetricPattern2::new(client.clone(), format!("{base_path}_min")), - pct10: MetricPattern6::new(client.clone(), format!("{base_path}_pct10")), - pct25: MetricPattern6::new(client.clone(), format!("{base_path}_pct25")), - pct75: MetricPattern6::new(client.clone(), format!("{base_path}_pct75")), - pct90: MetricPattern6::new(client.clone(), format!("{base_path}_pct90")), - sum: MetricPattern2::new(client.clone(), format!("{base_path}_sum")), + average: MetricPattern2::new(client.clone(), "block_size_average".to_string()), + cumulative: MetricPattern1::new(client.clone(), "block_size_cumulative".to_string()), + max: MetricPattern2::new(client.clone(), "block_size_max".to_string()), + median: MetricPattern6::new(client.clone(), "block_size_median".to_string()), + min: MetricPattern2::new(client.clone(), "block_size_min".to_string()), + pct10: MetricPattern6::new(client.clone(), "block_size_pct10".to_string()), + pct25: MetricPattern6::new(client.clone(), "block_size_pct25".to_string()), + pct75: MetricPattern6::new(client.clone(), "block_size_pct75".to_string()), + pct90: MetricPattern6::new(client.clone(), "block_size_pct90".to_string()), + sum: MetricPattern2::new(client.clone(), "block_size_sum".to_string()), } } } @@ -4729,13 +4046,10 @@ pub struct CatalogTree_Blocks_Time { impl CatalogTree_Blocks_Time { pub fn new(client: Arc, base_path: String) -> Self { Self { - date: MetricPattern11::new(client.clone(), format!("{base_path}_date")), - date_fixed: MetricPattern11::new(client.clone(), format!("{base_path}_date_fixed")), - timestamp: MetricPattern1::new(client.clone(), format!("{base_path}_timestamp")), - timestamp_fixed: MetricPattern11::new( - client.clone(), - format!("{base_path}_timestamp_fixed"), - ), + date: MetricPattern11::new(client.clone(), "date".to_string()), + date_fixed: MetricPattern11::new(client.clone(), "date_fixed".to_string()), + timestamp: MetricPattern1::new(client.clone(), "timestamp".to_string()), + timestamp_fixed: MetricPattern11::new(client.clone(), "timestamp_fixed".to_string()), } } } @@ -4753,19 +4067,10 @@ pub struct CatalogTree_Cointime { impl CatalogTree_Cointime { pub fn new(client: Arc, base_path: String) -> Self { Self { - activity: CatalogTree_Cointime_Activity::new( - client.clone(), - format!("{base_path}_activity"), - ), - adjusted: CatalogTree_Cointime_Adjusted::new( - client.clone(), - format!("{base_path}_adjusted"), - ), + activity: CatalogTree_Cointime_Activity::new(client.clone(), format!("{base_path}_activity")), + adjusted: CatalogTree_Cointime_Adjusted::new(client.clone(), format!("{base_path}_adjusted")), cap: CatalogTree_Cointime_Cap::new(client.clone(), format!("{base_path}_cap")), - pricing: CatalogTree_Cointime_Pricing::new( - client.clone(), - format!("{base_path}_pricing"), - ), + pricing: CatalogTree_Cointime_Pricing::new(client.clone(), format!("{base_path}_pricing")), supply: CatalogTree_Cointime_Supply::new(client.clone(), format!("{base_path}_supply")), value: CatalogTree_Cointime_Value::new(client.clone(), format!("{base_path}_value")), } @@ -4784,20 +4089,11 @@ pub struct CatalogTree_Cointime_Activity { impl CatalogTree_Cointime_Activity { pub fn new(client: Arc, base_path: String) -> Self { Self { - activity_to_vaultedness_ratio: MetricPattern1::new( - client.clone(), - format!("{base_path}_activity_to_vaultedness_ratio"), - ), - coinblocks_created: BlockCountPattern::new( - client.clone(), - "coinblocks_created".to_string(), - ), - coinblocks_stored: BlockCountPattern::new( - client.clone(), - "coinblocks_stored".to_string(), - ), - liveliness: MetricPattern1::new(client.clone(), format!("{base_path}_liveliness")), - vaultedness: MetricPattern1::new(client.clone(), format!("{base_path}_vaultedness")), + activity_to_vaultedness_ratio: MetricPattern1::new(client.clone(), "activity_to_vaultedness_ratio".to_string()), + coinblocks_created: BlockCountPattern::new(client.clone(), "coinblocks_created".to_string()), + coinblocks_stored: BlockCountPattern::new(client.clone(), "coinblocks_stored".to_string()), + liveliness: MetricPattern1::new(client.clone(), "liveliness".to_string()), + vaultedness: MetricPattern1::new(client.clone(), "vaultedness".to_string()), } } } @@ -4812,18 +4108,9 @@ pub struct CatalogTree_Cointime_Adjusted { impl CatalogTree_Cointime_Adjusted { pub fn new(client: Arc, base_path: String) -> Self { Self { - cointime_adj_inflation_rate: MetricPattern4::new( - client.clone(), - format!("{base_path}_cointime_adj_inflation_rate"), - ), - cointime_adj_tx_btc_velocity: MetricPattern4::new( - client.clone(), - format!("{base_path}_cointime_adj_tx_btc_velocity"), - ), - cointime_adj_tx_usd_velocity: MetricPattern4::new( - client.clone(), - format!("{base_path}_cointime_adj_tx_usd_velocity"), - ), + cointime_adj_inflation_rate: MetricPattern4::new(client.clone(), "cointime_adj_inflation_rate".to_string()), + cointime_adj_tx_btc_velocity: MetricPattern4::new(client.clone(), "cointime_adj_tx_btc_velocity".to_string()), + cointime_adj_tx_usd_velocity: MetricPattern4::new(client.clone(), "cointime_adj_tx_usd_velocity".to_string()), } } } @@ -4840,11 +4127,11 @@ pub struct CatalogTree_Cointime_Cap { impl CatalogTree_Cointime_Cap { pub fn new(client: Arc, base_path: String) -> Self { Self { - active_cap: MetricPattern1::new(client.clone(), format!("{base_path}_active_cap")), - cointime_cap: MetricPattern1::new(client.clone(), format!("{base_path}_cointime_cap")), - investor_cap: MetricPattern1::new(client.clone(), format!("{base_path}_investor_cap")), - thermo_cap: MetricPattern1::new(client.clone(), format!("{base_path}_thermo_cap")), - vaulted_cap: MetricPattern1::new(client.clone(), format!("{base_path}_vaulted_cap")), + active_cap: MetricPattern1::new(client.clone(), "active_cap".to_string()), + cointime_cap: MetricPattern1::new(client.clone(), "cointime_cap".to_string()), + investor_cap: MetricPattern1::new(client.clone(), "investor_cap".to_string()), + thermo_cap: MetricPattern1::new(client.clone(), "thermo_cap".to_string()), + vaulted_cap: MetricPattern1::new(client.clone(), "vaulted_cap".to_string()), } } } @@ -4864,35 +4151,14 @@ pub struct CatalogTree_Cointime_Pricing { impl CatalogTree_Cointime_Pricing { pub fn new(client: Arc, base_path: String) -> Self { Self { - active_price: MetricPattern1::new(client.clone(), format!("{base_path}_active_price")), - active_price_ratio: ActivePriceRatioPattern::new( - client.clone(), - "active_price_ratio".to_string(), - ), - cointime_price: MetricPattern1::new( - client.clone(), - format!("{base_path}_cointime_price"), - ), - cointime_price_ratio: ActivePriceRatioPattern::new( - client.clone(), - "cointime_price_ratio".to_string(), - ), - true_market_mean: MetricPattern1::new( - client.clone(), - format!("{base_path}_true_market_mean"), - ), - true_market_mean_ratio: ActivePriceRatioPattern::new( - client.clone(), - "true_market_mean_ratio".to_string(), - ), - vaulted_price: MetricPattern1::new( - client.clone(), - format!("{base_path}_vaulted_price"), - ), - vaulted_price_ratio: ActivePriceRatioPattern::new( - client.clone(), - "vaulted_price_ratio".to_string(), - ), + active_price: MetricPattern1::new(client.clone(), "active_price".to_string()), + 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: 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: ActivePriceRatioPattern::new(client.clone(), "true_market_mean_ratio".to_string()), + vaulted_price: MetricPattern1::new(client.clone(), "vaulted_price".to_string()), + vaulted_price_ratio: ActivePriceRatioPattern::new(client.clone(), "vaulted_price_ratio".to_string()), } } } @@ -4922,18 +4188,9 @@ pub struct CatalogTree_Cointime_Value { impl CatalogTree_Cointime_Value { pub fn new(client: Arc, base_path: String) -> Self { Self { - cointime_value_created: BlockCountPattern::new( - client.clone(), - "cointime_value_created".to_string(), - ), - cointime_value_destroyed: BlockCountPattern::new( - client.clone(), - "cointime_value_destroyed".to_string(), - ), - cointime_value_stored: BlockCountPattern::new( - client.clone(), - "cointime_value_stored".to_string(), - ), + cointime_value_created: BlockCountPattern::new(client.clone(), "cointime_value_created".to_string()), + cointime_value_destroyed: BlockCountPattern::new(client.clone(), "cointime_value_destroyed".to_string()), + cointime_value_stored: BlockCountPattern::new(client.clone(), "cointime_value_stored".to_string()), } } } @@ -4963,42 +4220,24 @@ pub struct CatalogTree_Constants { impl CatalogTree_Constants { pub fn new(client: Arc, base_path: String) -> Self { Self { - constant_0: MetricPattern1::new(client.clone(), format!("{base_path}_constant_0")), - constant_1: MetricPattern1::new(client.clone(), format!("{base_path}_constant_1")), - constant_100: MetricPattern1::new(client.clone(), format!("{base_path}_constant_100")), - constant_2: MetricPattern1::new(client.clone(), format!("{base_path}_constant_2")), - constant_20: MetricPattern1::new(client.clone(), format!("{base_path}_constant_20")), - constant_3: MetricPattern1::new(client.clone(), format!("{base_path}_constant_3")), - constant_30: MetricPattern1::new(client.clone(), format!("{base_path}_constant_30")), - constant_38_2: MetricPattern1::new( - client.clone(), - format!("{base_path}_constant_38_2"), - ), - constant_4: MetricPattern1::new(client.clone(), format!("{base_path}_constant_4")), - constant_50: MetricPattern1::new(client.clone(), format!("{base_path}_constant_50")), - constant_600: MetricPattern1::new(client.clone(), format!("{base_path}_constant_600")), - constant_61_8: MetricPattern1::new( - client.clone(), - format!("{base_path}_constant_61_8"), - ), - constant_70: MetricPattern1::new(client.clone(), format!("{base_path}_constant_70")), - constant_80: MetricPattern1::new(client.clone(), format!("{base_path}_constant_80")), - constant_minus_1: MetricPattern1::new( - client.clone(), - format!("{base_path}_constant_minus_1"), - ), - constant_minus_2: MetricPattern1::new( - client.clone(), - format!("{base_path}_constant_minus_2"), - ), - constant_minus_3: MetricPattern1::new( - client.clone(), - format!("{base_path}_constant_minus_3"), - ), - constant_minus_4: MetricPattern1::new( - client.clone(), - format!("{base_path}_constant_minus_4"), - ), + constant_0: MetricPattern1::new(client.clone(), "constant_0".to_string()), + constant_1: MetricPattern1::new(client.clone(), "constant_1".to_string()), + constant_100: MetricPattern1::new(client.clone(), "constant_100".to_string()), + constant_2: MetricPattern1::new(client.clone(), "constant_2".to_string()), + constant_20: MetricPattern1::new(client.clone(), "constant_20".to_string()), + constant_3: MetricPattern1::new(client.clone(), "constant_3".to_string()), + constant_30: MetricPattern1::new(client.clone(), "constant_30".to_string()), + constant_38_2: MetricPattern1::new(client.clone(), "constant_38_2".to_string()), + constant_4: MetricPattern1::new(client.clone(), "constant_4".to_string()), + constant_50: MetricPattern1::new(client.clone(), "constant_50".to_string()), + constant_600: MetricPattern1::new(client.clone(), "constant_600".to_string()), + constant_61_8: MetricPattern1::new(client.clone(), "constant_61_8".to_string()), + constant_70: MetricPattern1::new(client.clone(), "constant_70".to_string()), + constant_80: MetricPattern1::new(client.clone(), "constant_80".to_string()), + constant_minus_1: MetricPattern1::new(client.clone(), "constant_minus_1".to_string()), + constant_minus_2: MetricPattern1::new(client.clone(), "constant_minus_2".to_string()), + constant_minus_3: MetricPattern1::new(client.clone(), "constant_minus_3".to_string()), + constant_minus_4: MetricPattern1::new(client.clone(), "constant_minus_4".to_string()), } } } @@ -5019,39 +4258,15 @@ pub struct CatalogTree_Distribution { impl CatalogTree_Distribution { pub fn new(client: Arc, base_path: String) -> Self { Self { - addr_count: CatalogTree_Distribution_AddrCount::new( - client.clone(), - format!("{base_path}_addr_count"), - ), - address_cohorts: CatalogTree_Distribution_AddressCohorts::new( - client.clone(), - format!("{base_path}_address_cohorts"), - ), - addresses_data: CatalogTree_Distribution_AddressesData::new( - client.clone(), - format!("{base_path}_addresses_data"), - ), - any_address_indexes: CatalogTree_Distribution_AnyAddressIndexes::new( - client.clone(), - format!("{base_path}_any_address_indexes"), - ), - chain_state: MetricPattern11::new(client.clone(), format!("{base_path}_chain_state")), - empty_addr_count: CatalogTree_Distribution_EmptyAddrCount::new( - client.clone(), - format!("{base_path}_empty_addr_count"), - ), - emptyaddressindex: MetricPattern32::new( - client.clone(), - format!("{base_path}_emptyaddressindex"), - ), - loadedaddressindex: MetricPattern31::new( - client.clone(), - format!("{base_path}_loadedaddressindex"), - ), - utxo_cohorts: CatalogTree_Distribution_UtxoCohorts::new( - client.clone(), - format!("{base_path}_utxo_cohorts"), - ), + addr_count: CatalogTree_Distribution_AddrCount::new(client.clone(), format!("{base_path}_addr_count")), + address_cohorts: CatalogTree_Distribution_AddressCohorts::new(client.clone(), format!("{base_path}_address_cohorts")), + addresses_data: CatalogTree_Distribution_AddressesData::new(client.clone(), format!("{base_path}_addresses_data")), + any_address_indexes: CatalogTree_Distribution_AnyAddressIndexes::new(client.clone(), format!("{base_path}_any_address_indexes")), + chain_state: MetricPattern11::new(client.clone(), "chain".to_string()), + empty_addr_count: CatalogTree_Distribution_EmptyAddrCount::new(client.clone(), format!("{base_path}_empty_addr_count")), + emptyaddressindex: MetricPattern32::new(client.clone(), "emptyaddressindex".to_string()), + loadedaddressindex: MetricPattern31::new(client.clone(), "loadedaddressindex".to_string()), + utxo_cohorts: CatalogTree_Distribution_UtxoCohorts::new(client.clone(), format!("{base_path}_utxo_cohorts")), } } } @@ -5072,15 +4287,15 @@ pub struct CatalogTree_Distribution_AddrCount { impl CatalogTree_Distribution_AddrCount { pub fn new(client: Arc, base_path: String) -> Self { Self { - all: MetricPattern1::new(client.clone(), format!("{base_path}_all")), - p2a: MetricPattern1::new(client.clone(), format!("{base_path}_p2a")), - p2pk33: MetricPattern1::new(client.clone(), format!("{base_path}_p2pk33")), - p2pk65: MetricPattern1::new(client.clone(), format!("{base_path}_p2pk65")), - p2pkh: MetricPattern1::new(client.clone(), format!("{base_path}_p2pkh")), - p2sh: MetricPattern1::new(client.clone(), format!("{base_path}_p2sh")), - p2tr: MetricPattern1::new(client.clone(), format!("{base_path}_p2tr")), - p2wpkh: MetricPattern1::new(client.clone(), format!("{base_path}_p2wpkh")), - p2wsh: MetricPattern1::new(client.clone(), format!("{base_path}_p2wsh")), + all: MetricPattern1::new(client.clone(), "addr_count".to_string()), + p2a: MetricPattern1::new(client.clone(), "p2a_addr_count".to_string()), + p2pk33: MetricPattern1::new(client.clone(), "p2pk33_addr_count".to_string()), + p2pk65: MetricPattern1::new(client.clone(), "p2pk65_addr_count".to_string()), + p2pkh: MetricPattern1::new(client.clone(), "p2pkh_addr_count".to_string()), + p2sh: MetricPattern1::new(client.clone(), "p2sh_addr_count".to_string()), + p2tr: MetricPattern1::new(client.clone(), "p2tr_addr_count".to_string()), + p2wpkh: MetricPattern1::new(client.clone(), "p2wpkh_addr_count".to_string()), + p2wsh: MetricPattern1::new(client.clone(), "p2wsh_addr_count".to_string()), } } } @@ -5095,18 +4310,9 @@ pub struct CatalogTree_Distribution_AddressCohorts { impl CatalogTree_Distribution_AddressCohorts { pub fn new(client: Arc, base_path: String) -> Self { Self { - amount_range: CatalogTree_Distribution_AddressCohorts_AmountRange::new( - client.clone(), - format!("{base_path}_amount_range"), - ), - ge_amount: CatalogTree_Distribution_AddressCohorts_GeAmount::new( - client.clone(), - format!("{base_path}_ge_amount"), - ), - lt_amount: CatalogTree_Distribution_AddressCohorts_LtAmount::new( - client.clone(), - format!("{base_path}_lt_amount"), - ), + amount_range: CatalogTree_Distribution_AddressCohorts_AmountRange::new(client.clone(), format!("{base_path}_amount_range")), + ge_amount: CatalogTree_Distribution_AddressCohorts_GeAmount::new(client.clone(), format!("{base_path}_ge_amount")), + lt_amount: CatalogTree_Distribution_AddressCohorts_LtAmount::new(client.clone(), format!("{base_path}_lt_amount")), } } } @@ -5134,62 +4340,20 @@ impl CatalogTree_Distribution_AddressCohorts_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { _0sats: _0satsPattern::new(client.clone(), "addrs_with_0sats".to_string()), - _100btc_to_1k_btc: _0satsPattern::new( - client.clone(), - "addrs_above_100btc_under_1k_btc".to_string(), - ), - _100k_btc_or_more: _0satsPattern::new( - client.clone(), - "addrs_above_100k_btc".to_string(), - ), - _100k_sats_to_1m_sats: _0satsPattern::new( - client.clone(), - "addrs_above_100k_sats_under_1m_sats".to_string(), - ), - _100sats_to_1k_sats: _0satsPattern::new( - client.clone(), - "addrs_above_100sats_under_1k_sats".to_string(), - ), - _10btc_to_100btc: _0satsPattern::new( - client.clone(), - "addrs_above_10btc_under_100btc".to_string(), - ), - _10k_btc_to_100k_btc: _0satsPattern::new( - client.clone(), - "addrs_above_10k_btc_under_100k_btc".to_string(), - ), - _10k_sats_to_100k_sats: _0satsPattern::new( - client.clone(), - "addrs_above_10k_sats_under_100k_sats".to_string(), - ), - _10m_sats_to_1btc: _0satsPattern::new( - client.clone(), - "addrs_above_10m_sats_under_1btc".to_string(), - ), - _10sats_to_100sats: _0satsPattern::new( - client.clone(), - "addrs_above_10sats_under_100sats".to_string(), - ), - _1btc_to_10btc: _0satsPattern::new( - client.clone(), - "addrs_above_1btc_under_10btc".to_string(), - ), - _1k_btc_to_10k_btc: _0satsPattern::new( - client.clone(), - "addrs_above_1k_btc_under_10k_btc".to_string(), - ), - _1k_sats_to_10k_sats: _0satsPattern::new( - client.clone(), - "addrs_above_1k_sats_under_10k_sats".to_string(), - ), - _1m_sats_to_10m_sats: _0satsPattern::new( - client.clone(), - "addrs_above_1m_sats_under_10m_sats".to_string(), - ), - _1sat_to_10sats: _0satsPattern::new( - client.clone(), - "addrs_above_1sat_under_10sats".to_string(), - ), + _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()), } } } @@ -5277,8 +4441,8 @@ pub struct CatalogTree_Distribution_AddressesData { impl CatalogTree_Distribution_AddressesData { pub fn new(client: Arc, base_path: String) -> Self { Self { - empty: MetricPattern32::new(client.clone(), format!("{base_path}_empty")), - loaded: MetricPattern31::new(client.clone(), format!("{base_path}_loaded")), + empty: MetricPattern32::new(client.clone(), "emptyaddressdata".to_string()), + loaded: MetricPattern31::new(client.clone(), "loadedaddressdata".to_string()), } } } @@ -5298,14 +4462,14 @@ pub struct CatalogTree_Distribution_AnyAddressIndexes { impl CatalogTree_Distribution_AnyAddressIndexes { pub fn new(client: Arc, base_path: String) -> Self { Self { - p2a: MetricPattern16::new(client.clone(), format!("{base_path}_p2a")), - p2pk33: MetricPattern18::new(client.clone(), format!("{base_path}_p2pk33")), - p2pk65: MetricPattern19::new(client.clone(), format!("{base_path}_p2pk65")), - p2pkh: MetricPattern20::new(client.clone(), format!("{base_path}_p2pkh")), - p2sh: MetricPattern21::new(client.clone(), format!("{base_path}_p2sh")), - p2tr: MetricPattern22::new(client.clone(), format!("{base_path}_p2tr")), - p2wpkh: MetricPattern23::new(client.clone(), format!("{base_path}_p2wpkh")), - p2wsh: MetricPattern24::new(client.clone(), format!("{base_path}_p2wsh")), + p2a: MetricPattern16::new(client.clone(), "anyaddressindex".to_string()), + p2pk33: MetricPattern18::new(client.clone(), "anyaddressindex".to_string()), + p2pk65: MetricPattern19::new(client.clone(), "anyaddressindex".to_string()), + p2pkh: MetricPattern20::new(client.clone(), "anyaddressindex".to_string()), + p2sh: MetricPattern21::new(client.clone(), "anyaddressindex".to_string()), + p2tr: MetricPattern22::new(client.clone(), "anyaddressindex".to_string()), + p2wpkh: MetricPattern23::new(client.clone(), "anyaddressindex".to_string()), + p2wsh: MetricPattern24::new(client.clone(), "anyaddressindex".to_string()), } } } @@ -5326,15 +4490,15 @@ pub struct CatalogTree_Distribution_EmptyAddrCount { impl CatalogTree_Distribution_EmptyAddrCount { pub fn new(client: Arc, base_path: String) -> Self { Self { - all: MetricPattern1::new(client.clone(), format!("{base_path}_all")), - p2a: MetricPattern1::new(client.clone(), format!("{base_path}_p2a")), - p2pk33: MetricPattern1::new(client.clone(), format!("{base_path}_p2pk33")), - p2pk65: MetricPattern1::new(client.clone(), format!("{base_path}_p2pk65")), - p2pkh: MetricPattern1::new(client.clone(), format!("{base_path}_p2pkh")), - p2sh: MetricPattern1::new(client.clone(), format!("{base_path}_p2sh")), - p2tr: MetricPattern1::new(client.clone(), format!("{base_path}_p2tr")), - p2wpkh: MetricPattern1::new(client.clone(), format!("{base_path}_p2wpkh")), - p2wsh: MetricPattern1::new(client.clone(), format!("{base_path}_p2wsh")), + all: MetricPattern1::new(client.clone(), "empty_addr_count".to_string()), + p2a: MetricPattern1::new(client.clone(), "p2a_empty_addr_count".to_string()), + p2pk33: MetricPattern1::new(client.clone(), "p2pk33_empty_addr_count".to_string()), + p2pk65: MetricPattern1::new(client.clone(), "p2pk65_empty_addr_count".to_string()), + p2pkh: MetricPattern1::new(client.clone(), "p2pkh_empty_addr_count".to_string()), + p2sh: MetricPattern1::new(client.clone(), "p2sh_empty_addr_count".to_string()), + p2tr: MetricPattern1::new(client.clone(), "p2tr_empty_addr_count".to_string()), + p2wpkh: MetricPattern1::new(client.clone(), "p2wpkh_empty_addr_count".to_string()), + p2wsh: MetricPattern1::new(client.clone(), "p2wsh_empty_addr_count".to_string()), } } } @@ -5357,50 +4521,17 @@ pub struct CatalogTree_Distribution_UtxoCohorts { impl CatalogTree_Distribution_UtxoCohorts { pub fn new(client: Arc, base_path: String) -> Self { Self { - age_range: CatalogTree_Distribution_UtxoCohorts_AgeRange::new( - client.clone(), - format!("{base_path}_age_range"), - ), - all: CatalogTree_Distribution_UtxoCohorts_All::new( - client.clone(), - format!("{base_path}_all"), - ), - amount_range: CatalogTree_Distribution_UtxoCohorts_AmountRange::new( - client.clone(), - format!("{base_path}_amount_range"), - ), - epoch: CatalogTree_Distribution_UtxoCohorts_Epoch::new( - client.clone(), - format!("{base_path}_epoch"), - ), - ge_amount: CatalogTree_Distribution_UtxoCohorts_GeAmount::new( - client.clone(), - format!("{base_path}_ge_amount"), - ), - lt_amount: CatalogTree_Distribution_UtxoCohorts_LtAmount::new( - client.clone(), - format!("{base_path}_lt_amount"), - ), - max_age: CatalogTree_Distribution_UtxoCohorts_MaxAge::new( - client.clone(), - format!("{base_path}_max_age"), - ), - min_age: CatalogTree_Distribution_UtxoCohorts_MinAge::new( - client.clone(), - format!("{base_path}_min_age"), - ), - term: CatalogTree_Distribution_UtxoCohorts_Term::new( - client.clone(), - format!("{base_path}_term"), - ), - type_: CatalogTree_Distribution_UtxoCohorts_Type::new( - client.clone(), - format!("{base_path}_type_"), - ), - year: CatalogTree_Distribution_UtxoCohorts_Year::new( - client.clone(), - format!("{base_path}_year"), - ), + age_range: CatalogTree_Distribution_UtxoCohorts_AgeRange::new(client.clone(), format!("{base_path}_age_range")), + all: CatalogTree_Distribution_UtxoCohorts_All::new(client.clone(), format!("{base_path}_all")), + amount_range: CatalogTree_Distribution_UtxoCohorts_AmountRange::new(client.clone(), format!("{base_path}_amount_range")), + epoch: CatalogTree_Distribution_UtxoCohorts_Epoch::new(client.clone(), format!("{base_path}_epoch")), + ge_amount: CatalogTree_Distribution_UtxoCohorts_GeAmount::new(client.clone(), format!("{base_path}_ge_amount")), + lt_amount: CatalogTree_Distribution_UtxoCohorts_LtAmount::new(client.clone(), format!("{base_path}_lt_amount")), + max_age: CatalogTree_Distribution_UtxoCohorts_MaxAge::new(client.clone(), format!("{base_path}_max_age")), + min_age: CatalogTree_Distribution_UtxoCohorts_MinAge::new(client.clone(), format!("{base_path}_min_age")), + term: CatalogTree_Distribution_UtxoCohorts_Term::new(client.clone(), format!("{base_path}_term")), + type_: CatalogTree_Distribution_UtxoCohorts_Type::new(client.clone(), format!("{base_path}_type_")), + year: CatalogTree_Distribution_UtxoCohorts_Year::new(client.clone(), format!("{base_path}_year")), } } } @@ -5433,82 +4564,25 @@ pub struct CatalogTree_Distribution_UtxoCohorts_AgeRange { impl CatalogTree_Distribution_UtxoCohorts_AgeRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _10y_to_12y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_10y_up_to_12y_old".to_string(), - ), - _12y_to_15y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_12y_up_to_15y_old".to_string(), - ), - _1d_to_1w: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_1d_up_to_1w_old".to_string(), - ), - _1h_to_1d: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_1h_up_to_1d_old".to_string(), - ), - _1m_to_2m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_1m_up_to_2m_old".to_string(), - ), - _1w_to_1m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_1w_up_to_1m_old".to_string(), - ), - _1y_to_2y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_1y_up_to_2y_old".to_string(), - ), - _2m_to_3m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_2m_up_to_3m_old".to_string(), - ), - _2y_to_3y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_2y_up_to_3y_old".to_string(), - ), - _3m_to_4m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_3m_up_to_4m_old".to_string(), - ), - _3y_to_4y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_3y_up_to_4y_old".to_string(), - ), - _4m_to_5m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_4m_up_to_5m_old".to_string(), - ), - _4y_to_5y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_4y_up_to_5y_old".to_string(), - ), - _5m_to_6m: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_5m_up_to_6m_old".to_string(), - ), - _5y_to_6y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_5y_up_to_6y_old".to_string(), - ), - _6m_to_1y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_6m_up_to_1y_old".to_string(), - ), - _6y_to_7y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_6y_up_to_7y_old".to_string(), - ), - _7y_to_8y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_7y_up_to_8y_old".to_string(), - ), - _8y_to_10y: _10yTo12yPattern::new( - client.clone(), - "utxos_at_least_8y_up_to_10y_old".to_string(), - ), + _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()), } @@ -5529,19 +4603,13 @@ pub struct CatalogTree_Distribution_UtxoCohorts_All { impl CatalogTree_Distribution_UtxoCohorts_All { pub fn new(client: Arc, base_path: String) -> Self { Self { - activity: ActivityPattern2::new(client.clone(), "".to_string()), - cost_basis: CatalogTree_Distribution_UtxoCohorts_All_CostBasis::new( - client.clone(), - format!("{base_path}_cost_basis"), - ), + activity: ActivityPattern2::new(client.clone(), "coinblocks_destroyed_cumulative".to_string()), + cost_basis: CatalogTree_Distribution_UtxoCohorts_All_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), outputs: OutputsPattern::new(client.clone(), "utxo_count".to_string()), - realized: RealizedPattern3::new(client.clone(), "".to_string()), - relative: CatalogTree_Distribution_UtxoCohorts_All_Relative::new( - client.clone(), - format!("{base_path}_relative"), - ), + realized: RealizedPattern3::new(client.clone(), "adjusted_sopr".to_string()), + relative: CatalogTree_Distribution_UtxoCohorts_All_Relative::new(client.clone(), format!("{base_path}_relative")), supply: SupplyPattern2::new(client.clone(), "supply".to_string()), - unrealized: UnrealizedPattern::new(client.clone(), "".to_string()), + unrealized: UnrealizedPattern::new(client.clone(), "neg_unrealized_loss".to_string()), } } } @@ -5556,8 +4624,8 @@ pub struct CatalogTree_Distribution_UtxoCohorts_All_CostBasis { impl CatalogTree_Distribution_UtxoCohorts_All_CostBasis { pub fn new(client: Arc, base_path: String) -> Self { Self { - max: MetricPattern1::new(client.clone(), format!("{base_path}_max")), - min: MetricPattern1::new(client.clone(), format!("{base_path}_min")), + max: MetricPattern1::new(client.clone(), "max_cost_basis".to_string()), + min: MetricPattern1::new(client.clone(), "min_cost_basis".to_string()), percentiles: PercentilesPattern::new(client.clone(), "cost_basis".to_string()), } } @@ -5576,30 +4644,12 @@ pub struct CatalogTree_Distribution_UtxoCohorts_All_Relative { impl CatalogTree_Distribution_UtxoCohorts_All_Relative { pub fn new(client: Arc, base_path: String) -> Self { Self { - neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - format!("{base_path}_neg_unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - format!("{base_path}_net_unrealized_pnl_rel_to_own_total_unrealized_pnl"), - ), - supply_in_loss_rel_to_own_supply: MetricPattern1::new( - client.clone(), - format!("{base_path}_supply_in_loss_rel_to_own_supply"), - ), - supply_in_profit_rel_to_own_supply: MetricPattern1::new( - client.clone(), - format!("{base_path}_supply_in_profit_rel_to_own_supply"), - ), - unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - format!("{base_path}_unrealized_loss_rel_to_own_total_unrealized_pnl"), - ), - unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new( - client.clone(), - format!("{base_path}_unrealized_profit_rel_to_own_total_unrealized_pnl"), - ), + neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "neg_unrealized_loss_rel_to_own_total_unrealized_pnl".to_string()), + net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "net_unrealized_pnl_rel_to_own_total_unrealized_pnl".to_string()), + supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), "supply_in_loss_rel_to_own_supply".to_string()), + supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), "supply_in_profit_rel_to_own_supply".to_string()), + unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "unrealized_loss_rel_to_own_total_unrealized_pnl".to_string()), + unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "unrealized_profit_rel_to_own_total_unrealized_pnl".to_string()), } } } @@ -5627,62 +4677,20 @@ impl CatalogTree_Distribution_UtxoCohorts_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { _0sats: _0satsPattern2::new(client.clone(), "utxos_with_0sats".to_string()), - _100btc_to_1k_btc: _0satsPattern2::new( - client.clone(), - "utxos_above_100btc_under_1k_btc".to_string(), - ), - _100k_btc_or_more: _0satsPattern2::new( - client.clone(), - "utxos_above_100k_btc".to_string(), - ), - _100k_sats_to_1m_sats: _0satsPattern2::new( - client.clone(), - "utxos_above_100k_sats_under_1m_sats".to_string(), - ), - _100sats_to_1k_sats: _0satsPattern2::new( - client.clone(), - "utxos_above_100sats_under_1k_sats".to_string(), - ), - _10btc_to_100btc: _0satsPattern2::new( - client.clone(), - "utxos_above_10btc_under_100btc".to_string(), - ), - _10k_btc_to_100k_btc: _0satsPattern2::new( - client.clone(), - "utxos_above_10k_btc_under_100k_btc".to_string(), - ), - _10k_sats_to_100k_sats: _0satsPattern2::new( - client.clone(), - "utxos_above_10k_sats_under_100k_sats".to_string(), - ), - _10m_sats_to_1btc: _0satsPattern2::new( - client.clone(), - "utxos_above_10m_sats_under_1btc".to_string(), - ), - _10sats_to_100sats: _0satsPattern2::new( - client.clone(), - "utxos_above_10sats_under_100sats".to_string(), - ), - _1btc_to_10btc: _0satsPattern2::new( - client.clone(), - "utxos_above_1btc_under_10btc".to_string(), - ), - _1k_btc_to_10k_btc: _0satsPattern2::new( - client.clone(), - "utxos_above_1k_btc_under_10k_btc".to_string(), - ), - _1k_sats_to_10k_sats: _0satsPattern2::new( - client.clone(), - "utxos_above_1k_sats_under_10k_sats".to_string(), - ), - _1m_sats_to_10m_sats: _0satsPattern2::new( - client.clone(), - "utxos_above_1m_sats_under_10m_sats".to_string(), - ), - _1sat_to_10sats: _0satsPattern2::new( - client.clone(), - "utxos_above_1sat_under_10sats".to_string(), - ), + _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()), } } } @@ -5885,14 +4893,8 @@ pub struct CatalogTree_Distribution_UtxoCohorts_Term { impl CatalogTree_Distribution_UtxoCohorts_Term { pub fn new(client: Arc, base_path: String) -> Self { Self { - long: CatalogTree_Distribution_UtxoCohorts_Term_Long::new( - client.clone(), - format!("{base_path}_long"), - ), - short: CatalogTree_Distribution_UtxoCohorts_Term_Short::new( - client.clone(), - format!("{base_path}_short"), - ), + long: CatalogTree_Distribution_UtxoCohorts_Term_Long::new(client.clone(), format!("{base_path}_long")), + short: CatalogTree_Distribution_UtxoCohorts_Term_Short::new(client.clone(), format!("{base_path}_short")), } } } @@ -5912,11 +4914,8 @@ impl CatalogTree_Distribution_UtxoCohorts_Term_Long { pub fn new(client: Arc, base_path: String) -> Self { Self { activity: ActivityPattern2::new(client.clone(), "lth".to_string()), - cost_basis: CatalogTree_Distribution_UtxoCohorts_Term_Long_CostBasis::new( - client.clone(), - format!("{base_path}_cost_basis"), - ), - outputs: OutputsPattern::new(client.clone(), "lth_utxo_count".to_string()), + cost_basis: CatalogTree_Distribution_UtxoCohorts_Term_Long_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "lth".to_string()), realized: RealizedPattern2::new(client.clone(), "lth".to_string()), relative: RelativePattern5::new(client.clone(), "lth".to_string()), supply: SupplyPattern2::new(client.clone(), "lth_supply".to_string()), @@ -5935,8 +4934,8 @@ pub struct CatalogTree_Distribution_UtxoCohorts_Term_Long_CostBasis { impl CatalogTree_Distribution_UtxoCohorts_Term_Long_CostBasis { pub fn new(client: Arc, base_path: String) -> Self { Self { - max: MetricPattern1::new(client.clone(), format!("{base_path}_max")), - min: MetricPattern1::new(client.clone(), format!("{base_path}_min")), + 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()), } } @@ -5957,11 +4956,8 @@ impl CatalogTree_Distribution_UtxoCohorts_Term_Short { pub fn new(client: Arc, base_path: String) -> Self { Self { activity: ActivityPattern2::new(client.clone(), "sth".to_string()), - cost_basis: CatalogTree_Distribution_UtxoCohorts_Term_Short_CostBasis::new( - client.clone(), - format!("{base_path}_cost_basis"), - ), - outputs: OutputsPattern::new(client.clone(), "sth_utxo_count".to_string()), + cost_basis: CatalogTree_Distribution_UtxoCohorts_Term_Short_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + outputs: OutputsPattern::new(client.clone(), "sth".to_string()), realized: RealizedPattern3::new(client.clone(), "sth".to_string()), relative: RelativePattern5::new(client.clone(), "sth".to_string()), supply: SupplyPattern2::new(client.clone(), "sth_supply".to_string()), @@ -5980,8 +4976,8 @@ pub struct CatalogTree_Distribution_UtxoCohorts_Term_Short_CostBasis { impl CatalogTree_Distribution_UtxoCohorts_Term_Short_CostBasis { pub fn new(client: Arc, base_path: String) -> Self { Self { - max: MetricPattern1::new(client.clone(), format!("{base_path}_max")), - min: MetricPattern1::new(client.clone(), format!("{base_path}_min")), + 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()), } } @@ -6088,59 +5084,20 @@ pub struct CatalogTree_Indexes { impl CatalogTree_Indexes { pub fn new(client: Arc, base_path: String) -> Self { Self { - address: CatalogTree_Indexes_Address::new( - client.clone(), - format!("{base_path}_address"), - ), - dateindex: CatalogTree_Indexes_Dateindex::new( - client.clone(), - format!("{base_path}_dateindex"), - ), - decadeindex: CatalogTree_Indexes_Decadeindex::new( - client.clone(), - format!("{base_path}_decadeindex"), - ), - difficultyepoch: CatalogTree_Indexes_Difficultyepoch::new( - client.clone(), - format!("{base_path}_difficultyepoch"), - ), - halvingepoch: CatalogTree_Indexes_Halvingepoch::new( - client.clone(), - format!("{base_path}_halvingepoch"), - ), + address: CatalogTree_Indexes_Address::new(client.clone(), format!("{base_path}_address")), + dateindex: CatalogTree_Indexes_Dateindex::new(client.clone(), format!("{base_path}_dateindex")), + decadeindex: CatalogTree_Indexes_Decadeindex::new(client.clone(), format!("{base_path}_decadeindex")), + difficultyepoch: CatalogTree_Indexes_Difficultyepoch::new(client.clone(), format!("{base_path}_difficultyepoch")), + halvingepoch: CatalogTree_Indexes_Halvingepoch::new(client.clone(), format!("{base_path}_halvingepoch")), height: CatalogTree_Indexes_Height::new(client.clone(), format!("{base_path}_height")), - monthindex: CatalogTree_Indexes_Monthindex::new( - client.clone(), - format!("{base_path}_monthindex"), - ), - quarterindex: CatalogTree_Indexes_Quarterindex::new( - client.clone(), - format!("{base_path}_quarterindex"), - ), - semesterindex: CatalogTree_Indexes_Semesterindex::new( - client.clone(), - format!("{base_path}_semesterindex"), - ), - txindex: CatalogTree_Indexes_Txindex::new( - client.clone(), - format!("{base_path}_txindex"), - ), - txinindex: CatalogTree_Indexes_Txinindex::new( - client.clone(), - format!("{base_path}_txinindex"), - ), - txoutindex: CatalogTree_Indexes_Txoutindex::new( - client.clone(), - format!("{base_path}_txoutindex"), - ), - weekindex: CatalogTree_Indexes_Weekindex::new( - client.clone(), - format!("{base_path}_weekindex"), - ), - yearindex: CatalogTree_Indexes_Yearindex::new( - client.clone(), - format!("{base_path}_yearindex"), - ), + monthindex: CatalogTree_Indexes_Monthindex::new(client.clone(), format!("{base_path}_monthindex")), + quarterindex: CatalogTree_Indexes_Quarterindex::new(client.clone(), format!("{base_path}_quarterindex")), + semesterindex: CatalogTree_Indexes_Semesterindex::new(client.clone(), format!("{base_path}_semesterindex")), + txindex: CatalogTree_Indexes_Txindex::new(client.clone(), format!("{base_path}_txindex")), + txinindex: CatalogTree_Indexes_Txinindex::new(client.clone(), format!("{base_path}_txinindex")), + txoutindex: CatalogTree_Indexes_Txoutindex::new(client.clone(), format!("{base_path}_txoutindex")), + weekindex: CatalogTree_Indexes_Weekindex::new(client.clone(), format!("{base_path}_weekindex")), + yearindex: CatalogTree_Indexes_Yearindex::new(client.clone(), format!("{base_path}_yearindex")), } } } @@ -6164,51 +5121,18 @@ pub struct CatalogTree_Indexes_Address { impl CatalogTree_Indexes_Address { pub fn new(client: Arc, base_path: String) -> Self { Self { - empty: CatalogTree_Indexes_Address_Empty::new( - client.clone(), - format!("{base_path}_empty"), - ), - opreturn: CatalogTree_Indexes_Address_Opreturn::new( - client.clone(), - format!("{base_path}_opreturn"), - ), + empty: CatalogTree_Indexes_Address_Empty::new(client.clone(), format!("{base_path}_empty")), + opreturn: CatalogTree_Indexes_Address_Opreturn::new(client.clone(), format!("{base_path}_opreturn")), p2a: CatalogTree_Indexes_Address_P2a::new(client.clone(), format!("{base_path}_p2a")), - p2ms: CatalogTree_Indexes_Address_P2ms::new( - client.clone(), - format!("{base_path}_p2ms"), - ), - p2pk33: CatalogTree_Indexes_Address_P2pk33::new( - client.clone(), - format!("{base_path}_p2pk33"), - ), - p2pk65: CatalogTree_Indexes_Address_P2pk65::new( - client.clone(), - format!("{base_path}_p2pk65"), - ), - p2pkh: CatalogTree_Indexes_Address_P2pkh::new( - client.clone(), - format!("{base_path}_p2pkh"), - ), - p2sh: CatalogTree_Indexes_Address_P2sh::new( - client.clone(), - format!("{base_path}_p2sh"), - ), - p2tr: CatalogTree_Indexes_Address_P2tr::new( - client.clone(), - format!("{base_path}_p2tr"), - ), - p2wpkh: CatalogTree_Indexes_Address_P2wpkh::new( - client.clone(), - format!("{base_path}_p2wpkh"), - ), - p2wsh: CatalogTree_Indexes_Address_P2wsh::new( - client.clone(), - format!("{base_path}_p2wsh"), - ), - unknown: CatalogTree_Indexes_Address_Unknown::new( - client.clone(), - format!("{base_path}_unknown"), - ), + p2ms: CatalogTree_Indexes_Address_P2ms::new(client.clone(), format!("{base_path}_p2ms")), + p2pk33: CatalogTree_Indexes_Address_P2pk33::new(client.clone(), format!("{base_path}_p2pk33")), + p2pk65: CatalogTree_Indexes_Address_P2pk65::new(client.clone(), format!("{base_path}_p2pk65")), + p2pkh: CatalogTree_Indexes_Address_P2pkh::new(client.clone(), format!("{base_path}_p2pkh")), + p2sh: CatalogTree_Indexes_Address_P2sh::new(client.clone(), format!("{base_path}_p2sh")), + p2tr: CatalogTree_Indexes_Address_P2tr::new(client.clone(), format!("{base_path}_p2tr")), + p2wpkh: CatalogTree_Indexes_Address_P2wpkh::new(client.clone(), format!("{base_path}_p2wpkh")), + p2wsh: CatalogTree_Indexes_Address_P2wsh::new(client.clone(), format!("{base_path}_p2wsh")), + unknown: CatalogTree_Indexes_Address_Unknown::new(client.clone(), format!("{base_path}_unknown")), } } } @@ -6221,7 +5145,7 @@ pub struct CatalogTree_Indexes_Address_Empty { impl CatalogTree_Indexes_Address_Empty { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern9::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern9::new(client.clone(), "emptyoutputindex".to_string()), } } } @@ -6234,7 +5158,7 @@ pub struct CatalogTree_Indexes_Address_Opreturn { impl CatalogTree_Indexes_Address_Opreturn { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern14::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern14::new(client.clone(), "opreturnindex".to_string()), } } } @@ -6247,7 +5171,7 @@ pub struct CatalogTree_Indexes_Address_P2a { impl CatalogTree_Indexes_Address_P2a { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern16::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern16::new(client.clone(), "p2aaddressindex".to_string()), } } } @@ -6260,7 +5184,7 @@ pub struct CatalogTree_Indexes_Address_P2ms { impl CatalogTree_Indexes_Address_P2ms { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern17::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern17::new(client.clone(), "p2msoutputindex".to_string()), } } } @@ -6273,7 +5197,7 @@ pub struct CatalogTree_Indexes_Address_P2pk33 { impl CatalogTree_Indexes_Address_P2pk33 { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern18::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern18::new(client.clone(), "p2pk33addressindex".to_string()), } } } @@ -6286,7 +5210,7 @@ pub struct CatalogTree_Indexes_Address_P2pk65 { impl CatalogTree_Indexes_Address_P2pk65 { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern19::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern19::new(client.clone(), "p2pk65addressindex".to_string()), } } } @@ -6299,7 +5223,7 @@ pub struct CatalogTree_Indexes_Address_P2pkh { impl CatalogTree_Indexes_Address_P2pkh { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern20::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern20::new(client.clone(), "p2pkhaddressindex".to_string()), } } } @@ -6312,7 +5236,7 @@ pub struct CatalogTree_Indexes_Address_P2sh { impl CatalogTree_Indexes_Address_P2sh { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern21::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern21::new(client.clone(), "p2shaddressindex".to_string()), } } } @@ -6325,7 +5249,7 @@ pub struct CatalogTree_Indexes_Address_P2tr { impl CatalogTree_Indexes_Address_P2tr { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern22::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern22::new(client.clone(), "p2traddressindex".to_string()), } } } @@ -6338,7 +5262,7 @@ pub struct CatalogTree_Indexes_Address_P2wpkh { impl CatalogTree_Indexes_Address_P2wpkh { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern23::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern23::new(client.clone(), "p2wpkhaddressindex".to_string()), } } } @@ -6351,7 +5275,7 @@ pub struct CatalogTree_Indexes_Address_P2wsh { impl CatalogTree_Indexes_Address_P2wsh { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern24::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern24::new(client.clone(), "p2wshaddressindex".to_string()), } } } @@ -6364,7 +5288,7 @@ pub struct CatalogTree_Indexes_Address_Unknown { impl CatalogTree_Indexes_Address_Unknown { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern28::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern28::new(client.clone(), "unknownoutputindex".to_string()), } } } @@ -6382,12 +5306,12 @@ pub struct CatalogTree_Indexes_Dateindex { impl CatalogTree_Indexes_Dateindex { pub fn new(client: Arc, base_path: String) -> Self { Self { - date: MetricPattern6::new(client.clone(), format!("{base_path}_date")), - first_height: MetricPattern6::new(client.clone(), format!("{base_path}_first_height")), - height_count: MetricPattern6::new(client.clone(), format!("{base_path}_height_count")), - identity: MetricPattern6::new(client.clone(), format!("{base_path}_identity")), - monthindex: MetricPattern6::new(client.clone(), format!("{base_path}_monthindex")), - weekindex: MetricPattern6::new(client.clone(), format!("{base_path}_weekindex")), + date: MetricPattern6::new(client.clone(), "dateindex_date".to_string()), + first_height: MetricPattern6::new(client.clone(), "dateindex_first_height".to_string()), + height_count: MetricPattern6::new(client.clone(), "dateindex_height_count".to_string()), + identity: MetricPattern6::new(client.clone(), "dateindex".to_string()), + monthindex: MetricPattern6::new(client.clone(), "dateindex_monthindex".to_string()), + weekindex: MetricPattern6::new(client.clone(), "dateindex_weekindex".to_string()), } } } @@ -6402,15 +5326,9 @@ pub struct CatalogTree_Indexes_Decadeindex { impl CatalogTree_Indexes_Decadeindex { pub fn new(client: Arc, base_path: String) -> Self { Self { - first_yearindex: MetricPattern7::new( - client.clone(), - format!("{base_path}_first_yearindex"), - ), - identity: MetricPattern7::new(client.clone(), format!("{base_path}_identity")), - yearindex_count: MetricPattern7::new( - client.clone(), - format!("{base_path}_yearindex_count"), - ), + first_yearindex: MetricPattern7::new(client.clone(), "decadeindex_first_yearindex".to_string()), + identity: MetricPattern7::new(client.clone(), "decadeindex".to_string()), + yearindex_count: MetricPattern7::new(client.clone(), "decadeindex_yearindex_count".to_string()), } } } @@ -6425,9 +5343,9 @@ pub struct CatalogTree_Indexes_Difficultyepoch { impl CatalogTree_Indexes_Difficultyepoch { pub fn new(client: Arc, base_path: String) -> Self { Self { - first_height: MetricPattern8::new(client.clone(), format!("{base_path}_first_height")), - height_count: MetricPattern8::new(client.clone(), format!("{base_path}_height_count")), - identity: MetricPattern8::new(client.clone(), format!("{base_path}_identity")), + first_height: MetricPattern8::new(client.clone(), "difficultyepoch_first_height".to_string()), + height_count: MetricPattern8::new(client.clone(), "difficultyepoch_height_count".to_string()), + identity: MetricPattern8::new(client.clone(), "difficultyepoch".to_string()), } } } @@ -6441,8 +5359,8 @@ pub struct CatalogTree_Indexes_Halvingepoch { impl CatalogTree_Indexes_Halvingepoch { pub fn new(client: Arc, base_path: String) -> Self { Self { - first_height: MetricPattern10::new(client.clone(), format!("{base_path}_first_height")), - identity: MetricPattern10::new(client.clone(), format!("{base_path}_identity")), + first_height: MetricPattern10::new(client.clone(), "halvingepoch_first_height".to_string()), + identity: MetricPattern10::new(client.clone(), "halvingepoch".to_string()), } } } @@ -6459,17 +5377,11 @@ pub struct CatalogTree_Indexes_Height { impl CatalogTree_Indexes_Height { pub fn new(client: Arc, base_path: String) -> Self { Self { - dateindex: MetricPattern11::new(client.clone(), format!("{base_path}_dateindex")), - difficultyepoch: MetricPattern11::new( - client.clone(), - format!("{base_path}_difficultyepoch"), - ), - halvingepoch: MetricPattern11::new(client.clone(), format!("{base_path}_halvingepoch")), - identity: MetricPattern11::new(client.clone(), format!("{base_path}_identity")), - txindex_count: MetricPattern11::new( - client.clone(), - format!("{base_path}_txindex_count"), - ), + dateindex: MetricPattern11::new(client.clone(), "height_dateindex".to_string()), + difficultyepoch: MetricPattern11::new(client.clone(), "height_difficultyepoch".to_string()), + halvingepoch: MetricPattern11::new(client.clone(), "height_halvingepoch".to_string()), + identity: MetricPattern11::new(client.clone(), "height".to_string()), + txindex_count: MetricPattern11::new(client.clone(), "height_txindex_count".to_string()), } } } @@ -6487,21 +5399,12 @@ pub struct CatalogTree_Indexes_Monthindex { impl CatalogTree_Indexes_Monthindex { pub fn new(client: Arc, base_path: String) -> Self { Self { - dateindex_count: MetricPattern13::new( - client.clone(), - format!("{base_path}_dateindex_count"), - ), - first_dateindex: MetricPattern13::new( - client.clone(), - format!("{base_path}_first_dateindex"), - ), - identity: MetricPattern13::new(client.clone(), format!("{base_path}_identity")), - quarterindex: MetricPattern13::new(client.clone(), format!("{base_path}_quarterindex")), - semesterindex: MetricPattern13::new( - client.clone(), - format!("{base_path}_semesterindex"), - ), - yearindex: MetricPattern13::new(client.clone(), format!("{base_path}_yearindex")), + dateindex_count: MetricPattern13::new(client.clone(), "monthindex_dateindex_count".to_string()), + first_dateindex: MetricPattern13::new(client.clone(), "monthindex_first_dateindex".to_string()), + identity: MetricPattern13::new(client.clone(), "monthindex".to_string()), + quarterindex: MetricPattern13::new(client.clone(), "monthindex_quarterindex".to_string()), + semesterindex: MetricPattern13::new(client.clone(), "monthindex_semesterindex".to_string()), + yearindex: MetricPattern13::new(client.clone(), "monthindex_yearindex".to_string()), } } } @@ -6516,15 +5419,9 @@ pub struct CatalogTree_Indexes_Quarterindex { impl CatalogTree_Indexes_Quarterindex { pub fn new(client: Arc, base_path: String) -> Self { Self { - first_monthindex: MetricPattern25::new( - client.clone(), - format!("{base_path}_first_monthindex"), - ), - identity: MetricPattern25::new(client.clone(), format!("{base_path}_identity")), - monthindex_count: MetricPattern25::new( - client.clone(), - format!("{base_path}_monthindex_count"), - ), + first_monthindex: MetricPattern25::new(client.clone(), "quarterindex_first_monthindex".to_string()), + identity: MetricPattern25::new(client.clone(), "quarterindex".to_string()), + monthindex_count: MetricPattern25::new(client.clone(), "quarterindex_monthindex_count".to_string()), } } } @@ -6539,15 +5436,9 @@ pub struct CatalogTree_Indexes_Semesterindex { impl CatalogTree_Indexes_Semesterindex { pub fn new(client: Arc, base_path: String) -> Self { Self { - first_monthindex: MetricPattern26::new( - client.clone(), - format!("{base_path}_first_monthindex"), - ), - identity: MetricPattern26::new(client.clone(), format!("{base_path}_identity")), - monthindex_count: MetricPattern26::new( - client.clone(), - format!("{base_path}_monthindex_count"), - ), + first_monthindex: MetricPattern26::new(client.clone(), "semesterindex_first_monthindex".to_string()), + identity: MetricPattern26::new(client.clone(), "semesterindex".to_string()), + monthindex_count: MetricPattern26::new(client.clone(), "semesterindex_monthindex_count".to_string()), } } } @@ -6562,9 +5453,9 @@ pub struct CatalogTree_Indexes_Txindex { impl CatalogTree_Indexes_Txindex { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern27::new(client.clone(), format!("{base_path}_identity")), - input_count: MetricPattern27::new(client.clone(), format!("{base_path}_input_count")), - output_count: MetricPattern27::new(client.clone(), format!("{base_path}_output_count")), + identity: MetricPattern27::new(client.clone(), "txindex".to_string()), + input_count: MetricPattern27::new(client.clone(), "txindex_input_count".to_string()), + output_count: MetricPattern27::new(client.clone(), "txindex_output_count".to_string()), } } } @@ -6577,7 +5468,7 @@ pub struct CatalogTree_Indexes_Txinindex { impl CatalogTree_Indexes_Txinindex { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern12::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern12::new(client.clone(), "txinindex".to_string()), } } } @@ -6590,7 +5481,7 @@ pub struct CatalogTree_Indexes_Txoutindex { impl CatalogTree_Indexes_Txoutindex { pub fn new(client: Arc, base_path: String) -> Self { Self { - identity: MetricPattern15::new(client.clone(), format!("{base_path}_identity")), + identity: MetricPattern15::new(client.clone(), "txoutindex".to_string()), } } } @@ -6605,15 +5496,9 @@ pub struct CatalogTree_Indexes_Weekindex { impl CatalogTree_Indexes_Weekindex { pub fn new(client: Arc, base_path: String) -> Self { Self { - dateindex_count: MetricPattern29::new( - client.clone(), - format!("{base_path}_dateindex_count"), - ), - first_dateindex: MetricPattern29::new( - client.clone(), - format!("{base_path}_first_dateindex"), - ), - identity: MetricPattern29::new(client.clone(), format!("{base_path}_identity")), + dateindex_count: MetricPattern29::new(client.clone(), "weekindex_dateindex_count".to_string()), + first_dateindex: MetricPattern29::new(client.clone(), "weekindex_first_dateindex".to_string()), + identity: MetricPattern29::new(client.clone(), "weekindex".to_string()), } } } @@ -6629,16 +5514,10 @@ pub struct CatalogTree_Indexes_Yearindex { impl CatalogTree_Indexes_Yearindex { pub fn new(client: Arc, base_path: String) -> Self { Self { - decadeindex: MetricPattern30::new(client.clone(), format!("{base_path}_decadeindex")), - first_monthindex: MetricPattern30::new( - client.clone(), - format!("{base_path}_first_monthindex"), - ), - identity: MetricPattern30::new(client.clone(), format!("{base_path}_identity")), - monthindex_count: MetricPattern30::new( - client.clone(), - format!("{base_path}_monthindex_count"), - ), + decadeindex: MetricPattern30::new(client.clone(), "yearindex_decadeindex".to_string()), + first_monthindex: MetricPattern30::new(client.clone(), "yearindex_first_monthindex".to_string()), + identity: MetricPattern30::new(client.clone(), "yearindex".to_string()), + monthindex_count: MetricPattern30::new(client.clone(), "yearindex_monthindex_count".to_string()), } } } @@ -6659,16 +5538,13 @@ impl CatalogTree_Inputs { pub fn new(client: Arc, base_path: String) -> Self { Self { count: CountPattern2::new(client.clone(), "input_count".to_string()), - first_txinindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_txinindex"), - ), - outpoint: MetricPattern12::new(client.clone(), format!("{base_path}_outpoint")), - outputtype: MetricPattern12::new(client.clone(), format!("{base_path}_outputtype")), + first_txinindex: MetricPattern11::new(client.clone(), "first_txinindex".to_string()), + outpoint: MetricPattern12::new(client.clone(), "outpoint".to_string()), + outputtype: MetricPattern12::new(client.clone(), "outputtype".to_string()), spent: CatalogTree_Inputs_Spent::new(client.clone(), format!("{base_path}_spent")), - txindex: MetricPattern12::new(client.clone(), format!("{base_path}_txindex")), - typeindex: MetricPattern12::new(client.clone(), format!("{base_path}_typeindex")), - witness_size: MetricPattern12::new(client.clone(), format!("{base_path}_witness_size")), + txindex: MetricPattern12::new(client.clone(), "txindex".to_string()), + typeindex: MetricPattern12::new(client.clone(), "typeindex".to_string()), + witness_size: MetricPattern12::new(client.clone(), "witness_size".to_string()), } } } @@ -6682,8 +5558,8 @@ pub struct CatalogTree_Inputs_Spent { impl CatalogTree_Inputs_Spent { pub fn new(client: Arc, base_path: String) -> Self { Self { - txoutindex: MetricPattern12::new(client.clone(), format!("{base_path}_txoutindex")), - value: MetricPattern12::new(client.clone(), format!("{base_path}_value")), + txoutindex: MetricPattern12::new(client.clone(), "txoutindex".to_string()), + value: MetricPattern12::new(client.clone(), "value".to_string()), } } } @@ -6705,27 +5581,12 @@ impl CatalogTree_Market { Self { ath: CatalogTree_Market_Ath::new(client.clone(), format!("{base_path}_ath")), dca: CatalogTree_Market_Dca::new(client.clone(), format!("{base_path}_dca")), - indicators: CatalogTree_Market_Indicators::new( - client.clone(), - format!("{base_path}_indicators"), - ), - lookback: CatalogTree_Market_Lookback::new( - client.clone(), - format!("{base_path}_lookback"), - ), - moving_average: CatalogTree_Market_MovingAverage::new( - client.clone(), - format!("{base_path}_moving_average"), - ), + indicators: CatalogTree_Market_Indicators::new(client.clone(), format!("{base_path}_indicators")), + lookback: CatalogTree_Market_Lookback::new(client.clone(), format!("{base_path}_lookback")), + moving_average: CatalogTree_Market_MovingAverage::new(client.clone(), format!("{base_path}_moving_average")), range: CatalogTree_Market_Range::new(client.clone(), format!("{base_path}_range")), - returns: CatalogTree_Market_Returns::new( - client.clone(), - format!("{base_path}_returns"), - ), - volatility: CatalogTree_Market_Volatility::new( - client.clone(), - format!("{base_path}_volatility"), - ), + returns: CatalogTree_Market_Returns::new(client.clone(), format!("{base_path}_returns")), + volatility: CatalogTree_Market_Volatility::new(client.clone(), format!("{base_path}_volatility")), } } } @@ -6743,27 +5604,12 @@ pub struct CatalogTree_Market_Ath { impl CatalogTree_Market_Ath { pub fn new(client: Arc, base_path: String) -> Self { Self { - days_since_price_ath: MetricPattern4::new( - client.clone(), - format!("{base_path}_days_since_price_ath"), - ), - max_days_between_price_aths: MetricPattern4::new( - client.clone(), - format!("{base_path}_max_days_between_price_aths"), - ), - max_years_between_price_aths: MetricPattern4::new( - client.clone(), - format!("{base_path}_max_years_between_price_aths"), - ), - price_ath: MetricPattern1::new(client.clone(), format!("{base_path}_price_ath")), - price_drawdown: MetricPattern3::new( - client.clone(), - format!("{base_path}_price_drawdown"), - ), - years_since_price_ath: MetricPattern4::new( - client.clone(), - format!("{base_path}_years_since_price_ath"), - ), + days_since_price_ath: MetricPattern4::new(client.clone(), "days_since_price_ath".to_string()), + max_days_between_price_aths: MetricPattern4::new(client.clone(), "max_days_between_price_aths".to_string()), + max_years_between_price_aths: MetricPattern4::new(client.clone(), "max_years_between_price_aths".to_string()), + price_ath: MetricPattern1::new(client.clone(), "price_ath".to_string()), + price_drawdown: MetricPattern3::new(client.clone(), "price_drawdown".to_string()), + years_since_price_ath: MetricPattern4::new(client.clone(), "years_since_price_ath".to_string()), } } } @@ -6783,32 +5629,14 @@ pub struct CatalogTree_Market_Dca { impl CatalogTree_Market_Dca { pub fn new(client: Arc, base_path: String) -> Self { Self { - class_average_price: CatalogTree_Market_Dca_ClassAveragePrice::new( - client.clone(), - format!("{base_path}_class_average_price"), - ), - class_returns: CatalogTree_Market_Dca_ClassReturns::new( - client.clone(), - format!("{base_path}_class_returns"), - ), - class_stack: CatalogTree_Market_Dca_ClassStack::new( - client.clone(), - format!("{base_path}_class_stack"), - ), - period_average_price: PeriodAveragePricePattern::new( - client.clone(), - "dca_average_price".to_string(), - ), + class_average_price: CatalogTree_Market_Dca_ClassAveragePrice::new(client.clone(), format!("{base_path}_class_average_price")), + class_returns: CatalogTree_Market_Dca_ClassReturns::new(client.clone(), format!("{base_path}_class_returns")), + class_stack: CatalogTree_Market_Dca_ClassStack::new(client.clone(), format!("{base_path}_class_stack")), + period_average_price: PeriodAveragePricePattern::new(client.clone(), "dca_average_price".to_string()), period_cagr: PeriodCagrPattern::new(client.clone(), "dca_cagr".to_string()), - period_lump_sum_stack: PeriodLumpSumStackPattern::new( - client.clone(), - "lump_sum_stack".to_string(), - ), - period_returns: PeriodAveragePricePattern::new( - client.clone(), - "dca_returns".to_string(), - ), - period_stack: PeriodLumpSumStackPattern::new(client.clone(), "dca_stack".to_string()), + period_lump_sum_stack: PeriodLumpSumStackPattern::new(client.clone(), "lump_sum_stack_btc".to_string()), + period_returns: PeriodAveragePricePattern::new(client.clone(), "dca_returns".to_string()), + period_stack: PeriodLumpSumStackPattern::new(client.clone(), "dca_stack_btc".to_string()), } } } @@ -6831,17 +5659,17 @@ pub struct CatalogTree_Market_Dca_ClassAveragePrice { impl CatalogTree_Market_Dca_ClassAveragePrice { pub fn new(client: Arc, base_path: String) -> Self { Self { - _2015: MetricPattern4::new(client.clone(), format!("{base_path}_2015")), - _2016: MetricPattern4::new(client.clone(), format!("{base_path}_2016")), - _2017: MetricPattern4::new(client.clone(), format!("{base_path}_2017")), - _2018: MetricPattern4::new(client.clone(), format!("{base_path}_2018")), - _2019: MetricPattern4::new(client.clone(), format!("{base_path}_2019")), - _2020: MetricPattern4::new(client.clone(), format!("{base_path}_2020")), - _2021: MetricPattern4::new(client.clone(), format!("{base_path}_2021")), - _2022: MetricPattern4::new(client.clone(), format!("{base_path}_2022")), - _2023: MetricPattern4::new(client.clone(), format!("{base_path}_2023")), - _2024: MetricPattern4::new(client.clone(), format!("{base_path}_2024")), - _2025: MetricPattern4::new(client.clone(), format!("{base_path}_2025")), + _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()), } } } @@ -6864,17 +5692,17 @@ pub struct CatalogTree_Market_Dca_ClassReturns { impl CatalogTree_Market_Dca_ClassReturns { pub fn new(client: Arc, base_path: String) -> Self { Self { - _2015: MetricPattern4::new(client.clone(), format!("{base_path}_2015")), - _2016: MetricPattern4::new(client.clone(), format!("{base_path}_2016")), - _2017: MetricPattern4::new(client.clone(), format!("{base_path}_2017")), - _2018: MetricPattern4::new(client.clone(), format!("{base_path}_2018")), - _2019: MetricPattern4::new(client.clone(), format!("{base_path}_2019")), - _2020: MetricPattern4::new(client.clone(), format!("{base_path}_2020")), - _2021: MetricPattern4::new(client.clone(), format!("{base_path}_2021")), - _2022: MetricPattern4::new(client.clone(), format!("{base_path}_2022")), - _2023: MetricPattern4::new(client.clone(), format!("{base_path}_2023")), - _2024: MetricPattern4::new(client.clone(), format!("{base_path}_2024")), - _2025: MetricPattern4::new(client.clone(), format!("{base_path}_2025")), + _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()), } } } @@ -6938,37 +5766,25 @@ pub struct CatalogTree_Market_Indicators { impl CatalogTree_Market_Indicators { pub fn new(client: Arc, base_path: String) -> Self { Self { - gini: MetricPattern6::new(client.clone(), format!("{base_path}_gini")), - macd_histogram: MetricPattern6::new( - client.clone(), - format!("{base_path}_macd_histogram"), - ), - macd_line: MetricPattern6::new(client.clone(), format!("{base_path}_macd_line")), - macd_signal: MetricPattern6::new(client.clone(), format!("{base_path}_macd_signal")), - nvt: MetricPattern4::new(client.clone(), format!("{base_path}_nvt")), - pi_cycle: MetricPattern6::new(client.clone(), format!("{base_path}_pi_cycle")), - puell_multiple: MetricPattern4::new( - client.clone(), - format!("{base_path}_puell_multiple"), - ), - rsi_14d: MetricPattern6::new(client.clone(), format!("{base_path}_rsi_14d")), - rsi_14d_max: MetricPattern6::new(client.clone(), format!("{base_path}_rsi_14d_max")), - rsi_14d_min: MetricPattern6::new(client.clone(), format!("{base_path}_rsi_14d_min")), - rsi_average_gain_14d: MetricPattern6::new( - client.clone(), - format!("{base_path}_rsi_average_gain_14d"), - ), - rsi_average_loss_14d: MetricPattern6::new( - client.clone(), - format!("{base_path}_rsi_average_loss_14d"), - ), - rsi_gains: MetricPattern6::new(client.clone(), format!("{base_path}_rsi_gains")), - rsi_losses: MetricPattern6::new(client.clone(), format!("{base_path}_rsi_losses")), - stoch_d: MetricPattern6::new(client.clone(), format!("{base_path}_stoch_d")), - stoch_k: MetricPattern6::new(client.clone(), format!("{base_path}_stoch_k")), - stoch_rsi: MetricPattern6::new(client.clone(), format!("{base_path}_stoch_rsi")), - stoch_rsi_d: MetricPattern6::new(client.clone(), format!("{base_path}_stoch_rsi_d")), - stoch_rsi_k: MetricPattern6::new(client.clone(), format!("{base_path}_stoch_rsi_k")), + gini: MetricPattern6::new(client.clone(), "gini".to_string()), + macd_histogram: MetricPattern6::new(client.clone(), "macd_histogram".to_string()), + macd_line: MetricPattern6::new(client.clone(), "macd_line".to_string()), + macd_signal: MetricPattern6::new(client.clone(), "macd_signal".to_string()), + nvt: MetricPattern4::new(client.clone(), "nvt".to_string()), + pi_cycle: MetricPattern6::new(client.clone(), "pi_cycle".to_string()), + puell_multiple: MetricPattern4::new(client.clone(), "puell_multiple".to_string()), + rsi_14d: MetricPattern6::new(client.clone(), "rsi_14d".to_string()), + rsi_14d_max: MetricPattern6::new(client.clone(), "rsi_14d_max".to_string()), + rsi_14d_min: MetricPattern6::new(client.clone(), "rsi_14d_min".to_string()), + rsi_average_gain_14d: MetricPattern6::new(client.clone(), "rsi_average_gain_14d".to_string()), + rsi_average_loss_14d: MetricPattern6::new(client.clone(), "rsi_average_loss_14d".to_string()), + rsi_gains: MetricPattern6::new(client.clone(), "rsi_gains".to_string()), + rsi_losses: MetricPattern6::new(client.clone(), "rsi_losses".to_string()), + stoch_d: MetricPattern6::new(client.clone(), "stoch_d".to_string()), + stoch_k: MetricPattern6::new(client.clone(), "stoch_k".to_string()), + stoch_rsi: MetricPattern6::new(client.clone(), "stoch_rsi".to_string()), + stoch_rsi_d: MetricPattern6::new(client.clone(), "stoch_rsi_d".to_string()), + stoch_rsi_k: MetricPattern6::new(client.clone(), "stoch_rsi_k".to_string()), } } } @@ -6981,10 +5797,7 @@ pub struct CatalogTree_Market_Lookback { impl CatalogTree_Market_Lookback { pub fn new(client: Arc, base_path: String) -> Self { Self { - price_ago: CatalogTree_Market_Lookback_PriceAgo::new( - client.clone(), - format!("{base_path}_price_ago"), - ), + price_ago: CatalogTree_Market_Lookback_PriceAgo::new(client.clone(), format!("{base_path}_price_ago")), } } } @@ -7009,19 +5822,19 @@ pub struct CatalogTree_Market_Lookback_PriceAgo { impl CatalogTree_Market_Lookback_PriceAgo { pub fn new(client: Arc, base_path: String) -> Self { Self { - _10y: MetricPattern4::new(client.clone(), format!("{base_path}_10y")), - _1d: MetricPattern4::new(client.clone(), format!("{base_path}_1d")), - _1m: MetricPattern4::new(client.clone(), format!("{base_path}_1m")), - _1w: MetricPattern4::new(client.clone(), format!("{base_path}_1w")), - _1y: MetricPattern4::new(client.clone(), format!("{base_path}_1y")), - _2y: MetricPattern4::new(client.clone(), format!("{base_path}_2y")), - _3m: MetricPattern4::new(client.clone(), format!("{base_path}_3m")), - _3y: MetricPattern4::new(client.clone(), format!("{base_path}_3y")), - _4y: MetricPattern4::new(client.clone(), format!("{base_path}_4y")), - _5y: MetricPattern4::new(client.clone(), format!("{base_path}_5y")), - _6m: MetricPattern4::new(client.clone(), format!("{base_path}_6m")), - _6y: MetricPattern4::new(client.clone(), format!("{base_path}_6y")), - _8y: MetricPattern4::new(client.clone(), format!("{base_path}_8y")), + _10y: MetricPattern4::new(client.clone(), "price_10y_ago".to_string()), + _1d: MetricPattern4::new(client.clone(), "price_1d_ago".to_string()), + _1m: MetricPattern4::new(client.clone(), "price_1m_ago".to_string()), + _1w: MetricPattern4::new(client.clone(), "price_1w_ago".to_string()), + _1y: MetricPattern4::new(client.clone(), "price_1y_ago".to_string()), + _2y: MetricPattern4::new(client.clone(), "price_2y_ago".to_string()), + _3m: MetricPattern4::new(client.clone(), "price_3m_ago".to_string()), + _3y: MetricPattern4::new(client.clone(), "price_3y_ago".to_string()), + _4y: MetricPattern4::new(client.clone(), "price_4y_ago".to_string()), + _5y: MetricPattern4::new(client.clone(), "price_5y_ago".to_string()), + _6m: MetricPattern4::new(client.clone(), "price_6m_ago".to_string()), + _6y: MetricPattern4::new(client.clone(), "price_6y_ago".to_string()), + _8y: MetricPattern4::new(client.clone(), "price_8y_ago".to_string()), } } } @@ -7082,14 +5895,8 @@ impl CatalogTree_Market_MovingAverage { 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(), - format!("{base_path}_price_200d_sma_x0_8"), - ), - price_200d_sma_x2_4: MetricPattern4::new( - client.clone(), - format!("{base_path}_price_200d_sma_x2_4"), - ), + price_200d_sma_x0_8: MetricPattern4::new(client.clone(), "price_200d_sma_x0_8".to_string()), + price_200d_sma_x2_4: MetricPattern4::new(client.clone(), "price_200d_sma_x2_4".to_string()), price_200w_ema: Price111dSmaPattern::new(client.clone(), "price_200w_ema".to_string()), price_200w_sma: Price111dSmaPattern::new(client.clone(), "price_200w_sma".to_string()), price_21d_ema: Price111dSmaPattern::new(client.clone(), "price_21d_ema".to_string()), @@ -7100,10 +5907,7 @@ impl CatalogTree_Market_MovingAverage { 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(), - format!("{base_path}_price_350d_sma_x2"), - ), + price_350d_sma_x2: MetricPattern4::new(client.clone(), "price_350d_sma_x2".to_string()), price_4y_ema: Price111dSmaPattern::new(client.clone(), "price_4y_ema".to_string()), price_4y_sma: Price111dSmaPattern::new(client.clone(), "price_4y_sma".to_string()), price_55d_ema: Price111dSmaPattern::new(client.clone(), "price_55d_ema".to_string()), @@ -7134,26 +5938,17 @@ pub struct CatalogTree_Market_Range { impl CatalogTree_Market_Range { pub fn new(client: Arc, base_path: String) -> Self { Self { - price_1m_max: MetricPattern4::new(client.clone(), format!("{base_path}_price_1m_max")), - price_1m_min: MetricPattern4::new(client.clone(), format!("{base_path}_price_1m_min")), - price_1w_max: MetricPattern4::new(client.clone(), format!("{base_path}_price_1w_max")), - price_1w_min: MetricPattern4::new(client.clone(), format!("{base_path}_price_1w_min")), - price_1y_max: MetricPattern4::new(client.clone(), format!("{base_path}_price_1y_max")), - price_1y_min: MetricPattern4::new(client.clone(), format!("{base_path}_price_1y_min")), - price_2w_choppiness_index: MetricPattern4::new( - client.clone(), - format!("{base_path}_price_2w_choppiness_index"), - ), - price_2w_max: MetricPattern4::new(client.clone(), format!("{base_path}_price_2w_max")), - price_2w_min: MetricPattern4::new(client.clone(), format!("{base_path}_price_2w_min")), - price_true_range: MetricPattern6::new( - client.clone(), - format!("{base_path}_price_true_range"), - ), - price_true_range_2w_sum: MetricPattern6::new( - client.clone(), - format!("{base_path}_price_true_range_2w_sum"), - ), + price_1m_max: MetricPattern4::new(client.clone(), "price_1m_max".to_string()), + price_1m_min: MetricPattern4::new(client.clone(), "price_1m_min".to_string()), + price_1w_max: MetricPattern4::new(client.clone(), "price_1w_max".to_string()), + price_1w_min: MetricPattern4::new(client.clone(), "price_1w_min".to_string()), + price_1y_max: MetricPattern4::new(client.clone(), "price_1y_max".to_string()), + price_1y_min: MetricPattern4::new(client.clone(), "price_1y_min".to_string()), + price_2w_choppiness_index: MetricPattern4::new(client.clone(), "price_2w_choppiness_index".to_string()), + price_2w_max: MetricPattern4::new(client.clone(), "price_2w_max".to_string()), + price_2w_min: MetricPattern4::new(client.clone(), "price_2w_min".to_string()), + price_true_range: MetricPattern6::new(client.clone(), "price_true_range".to_string()), + price_true_range_2w_sum: MetricPattern6::new(client.clone(), "price_true_range_2w_sum".to_string()), } } } @@ -7174,39 +5969,15 @@ pub struct CatalogTree_Market_Returns { impl CatalogTree_Market_Returns { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1d_returns_1m_sd: _1dReturns1mSdPattern::new( - client.clone(), - "1d_returns_1m_sd".to_string(), - ), - _1d_returns_1w_sd: _1dReturns1mSdPattern::new( - client.clone(), - "1d_returns_1w_sd".to_string(), - ), - _1d_returns_1y_sd: _1dReturns1mSdPattern::new( - client.clone(), - "1d_returns_1y_sd".to_string(), - ), + _1d_returns_1m_sd: _1dReturns1mSdPattern::new(client.clone(), "1d_returns_1m_sd".to_string()), + _1d_returns_1w_sd: _1dReturns1mSdPattern::new(client.clone(), "1d_returns_1w_sd".to_string()), + _1d_returns_1y_sd: _1dReturns1mSdPattern::new(client.clone(), "1d_returns_1y_sd".to_string()), cagr: PeriodCagrPattern::new(client.clone(), "cagr".to_string()), - downside_1m_sd: _1dReturns1mSdPattern::new( - client.clone(), - "downside_1m_sd".to_string(), - ), - downside_1w_sd: _1dReturns1mSdPattern::new( - client.clone(), - "downside_1w_sd".to_string(), - ), - downside_1y_sd: _1dReturns1mSdPattern::new( - client.clone(), - "downside_1y_sd".to_string(), - ), - downside_returns: MetricPattern6::new( - client.clone(), - format!("{base_path}_downside_returns"), - ), - price_returns: CatalogTree_Market_Returns_PriceReturns::new( - client.clone(), - format!("{base_path}_price_returns"), - ), + downside_1m_sd: _1dReturns1mSdPattern::new(client.clone(), "downside_1m_sd".to_string()), + downside_1w_sd: _1dReturns1mSdPattern::new(client.clone(), "downside_1w_sd".to_string()), + downside_1y_sd: _1dReturns1mSdPattern::new(client.clone(), "downside_1y_sd".to_string()), + downside_returns: MetricPattern6::new(client.clone(), "downside_returns".to_string()), + price_returns: CatalogTree_Market_Returns_PriceReturns::new(client.clone(), format!("{base_path}_price_returns")), } } } @@ -7231,19 +6002,19 @@ pub struct CatalogTree_Market_Returns_PriceReturns { impl CatalogTree_Market_Returns_PriceReturns { pub fn new(client: Arc, base_path: String) -> Self { Self { - _10y: MetricPattern4::new(client.clone(), format!("{base_path}_10y")), - _1d: MetricPattern4::new(client.clone(), format!("{base_path}_1d")), - _1m: MetricPattern4::new(client.clone(), format!("{base_path}_1m")), - _1w: MetricPattern4::new(client.clone(), format!("{base_path}_1w")), - _1y: MetricPattern4::new(client.clone(), format!("{base_path}_1y")), - _2y: MetricPattern4::new(client.clone(), format!("{base_path}_2y")), - _3m: MetricPattern4::new(client.clone(), format!("{base_path}_3m")), - _3y: MetricPattern4::new(client.clone(), format!("{base_path}_3y")), - _4y: MetricPattern4::new(client.clone(), format!("{base_path}_4y")), - _5y: MetricPattern4::new(client.clone(), format!("{base_path}_5y")), - _6m: MetricPattern4::new(client.clone(), format!("{base_path}_6m")), - _6y: MetricPattern4::new(client.clone(), format!("{base_path}_6y")), - _8y: MetricPattern4::new(client.clone(), format!("{base_path}_8y")), + _10y: MetricPattern4::new(client.clone(), "10y_price_returns".to_string()), + _1d: MetricPattern4::new(client.clone(), "1d_price_returns".to_string()), + _1m: MetricPattern4::new(client.clone(), "1m_price_returns".to_string()), + _1w: MetricPattern4::new(client.clone(), "1w_price_returns".to_string()), + _1y: MetricPattern4::new(client.clone(), "1y_price_returns".to_string()), + _2y: MetricPattern4::new(client.clone(), "2y_price_returns".to_string()), + _3m: MetricPattern4::new(client.clone(), "3m_price_returns".to_string()), + _3y: MetricPattern4::new(client.clone(), "3y_price_returns".to_string()), + _4y: MetricPattern4::new(client.clone(), "4y_price_returns".to_string()), + _5y: MetricPattern4::new(client.clone(), "5y_price_returns".to_string()), + _6m: MetricPattern4::new(client.clone(), "6m_price_returns".to_string()), + _6y: MetricPattern4::new(client.clone(), "6y_price_returns".to_string()), + _8y: MetricPattern4::new(client.clone(), "8y_price_returns".to_string()), } } } @@ -7264,24 +6035,15 @@ pub struct CatalogTree_Market_Volatility { impl CatalogTree_Market_Volatility { pub fn new(client: Arc, base_path: String) -> Self { Self { - price_1m_volatility: MetricPattern4::new( - client.clone(), - format!("{base_path}_price_1m_volatility"), - ), - price_1w_volatility: MetricPattern4::new( - client.clone(), - format!("{base_path}_price_1w_volatility"), - ), - price_1y_volatility: MetricPattern4::new( - client.clone(), - format!("{base_path}_price_1y_volatility"), - ), - sharpe_1m: MetricPattern6::new(client.clone(), format!("{base_path}_sharpe_1m")), - sharpe_1w: MetricPattern6::new(client.clone(), format!("{base_path}_sharpe_1w")), - sharpe_1y: MetricPattern6::new(client.clone(), format!("{base_path}_sharpe_1y")), - sortino_1m: MetricPattern6::new(client.clone(), format!("{base_path}_sortino_1m")), - sortino_1w: MetricPattern6::new(client.clone(), format!("{base_path}_sortino_1w")), - sortino_1y: MetricPattern6::new(client.clone(), format!("{base_path}_sortino_1y")), + price_1m_volatility: MetricPattern4::new(client.clone(), "price_1m_volatility".to_string()), + price_1w_volatility: MetricPattern4::new(client.clone(), "price_1w_volatility".to_string()), + price_1y_volatility: MetricPattern4::new(client.clone(), "price_1y_volatility".to_string()), + sharpe_1m: MetricPattern6::new(client.clone(), "sharpe_1m".to_string()), + sharpe_1w: MetricPattern6::new(client.clone(), "sharpe_1w".to_string()), + sharpe_1y: MetricPattern6::new(client.clone(), "sharpe_1y".to_string()), + sortino_1m: MetricPattern6::new(client.clone(), "sortino_1m".to_string()), + sortino_1w: MetricPattern6::new(client.clone(), "sortino_1w".to_string()), + sortino_1y: MetricPattern6::new(client.clone(), "sortino_1y".to_string()), } } } @@ -7301,15 +6063,12 @@ impl CatalogTree_Outputs { pub fn new(client: Arc, base_path: String) -> Self { Self { count: CatalogTree_Outputs_Count::new(client.clone(), format!("{base_path}_count")), - first_txoutindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_txoutindex"), - ), - outputtype: MetricPattern15::new(client.clone(), format!("{base_path}_outputtype")), + first_txoutindex: MetricPattern11::new(client.clone(), "first_txoutindex".to_string()), + outputtype: MetricPattern15::new(client.clone(), "outputtype".to_string()), spent: CatalogTree_Outputs_Spent::new(client.clone(), format!("{base_path}_spent")), - txindex: MetricPattern15::new(client.clone(), format!("{base_path}_txindex")), - typeindex: MetricPattern15::new(client.clone(), format!("{base_path}_typeindex")), - value: MetricPattern15::new(client.clone(), format!("{base_path}_value")), + txindex: MetricPattern15::new(client.clone(), "txindex".to_string()), + typeindex: MetricPattern15::new(client.clone(), "typeindex".to_string()), + value: MetricPattern15::new(client.clone(), "value".to_string()), } } } @@ -7324,7 +6083,7 @@ impl CatalogTree_Outputs_Count { pub fn new(client: Arc, base_path: String) -> Self { Self { total_count: CountPattern2::new(client.clone(), "output_count".to_string()), - utxo_count: MetricPattern1::new(client.clone(), format!("{base_path}_utxo_count")), + utxo_count: MetricPattern1::new(client.clone(), "exact_utxo_count".to_string()), } } } @@ -7337,7 +6096,7 @@ pub struct CatalogTree_Outputs_Spent { impl CatalogTree_Outputs_Spent { pub fn new(client: Arc, base_path: String) -> Self { Self { - txinindex: MetricPattern15::new(client.clone(), format!("{base_path}_txinindex")), + txinindex: MetricPattern15::new(client.clone(), "txinindex".to_string()), } } } @@ -7351,10 +6110,7 @@ pub struct CatalogTree_Pools { impl CatalogTree_Pools { pub fn new(client: Arc, base_path: String) -> Self { Self { - height_to_pool: MetricPattern11::new( - client.clone(), - format!("{base_path}_height_to_pool"), - ), + height_to_pool: MetricPattern11::new(client.clone(), "pool".to_string()), vecs: CatalogTree_Pools_Vecs::new(client.clone(), format!("{base_path}_vecs")), } } @@ -7536,10 +6292,7 @@ impl CatalogTree_Pools_Vecs { binancepool: AaopoolPattern::new(client.clone(), "binancepool".to_string()), bitalo: AaopoolPattern::new(client.clone(), "bitalo".to_string()), bitclub: AaopoolPattern::new(client.clone(), "bitclub".to_string()), - bitcoinaffiliatenetwork: AaopoolPattern::new( - client.clone(), - "bitcoinaffiliatenetwork".to_string(), - ), + bitcoinaffiliatenetwork: AaopoolPattern::new(client.clone(), "bitcoinaffiliatenetwork".to_string()), bitcoincom: AaopoolPattern::new(client.clone(), "bitcoincom".to_string()), bitcoinindia: AaopoolPattern::new(client.clone(), "bitcoinindia".to_string()), bitcoinrussia: AaopoolPattern::new(client.clone(), "bitcoinrussia".to_string()), @@ -7585,19 +6338,13 @@ impl CatalogTree_Pools_Vecs { ekanembtc: AaopoolPattern::new(client.clone(), "ekanembtc".to_string()), eligius: AaopoolPattern::new(client.clone(), "eligius".to_string()), emcdpool: AaopoolPattern::new(client.clone(), "emcdpool".to_string()), - entrustcharitypool: AaopoolPattern::new( - client.clone(), - "entrustcharitypool".to_string(), - ), + entrustcharitypool: AaopoolPattern::new(client.clone(), "entrustcharitypool".to_string()), eobot: AaopoolPattern::new(client.clone(), "eobot".to_string()), exxbw: AaopoolPattern::new(client.clone(), "exxbw".to_string()), f2pool: AaopoolPattern::new(client.clone(), "f2pool".to_string()), fiftyeightcoin: AaopoolPattern::new(client.clone(), "fiftyeightcoin".to_string()), foundryusa: AaopoolPattern::new(client.clone(), "foundryusa".to_string()), - futurebitapollosolo: AaopoolPattern::new( - client.clone(), - "futurebitapollosolo".to_string(), - ), + futurebitapollosolo: AaopoolPattern::new(client.clone(), "futurebitapollosolo".to_string()), gbminers: AaopoolPattern::new(client.clone(), "gbminers".to_string()), ghashio: AaopoolPattern::new(client.clone(), "ghashio".to_string()), givemecoins: AaopoolPattern::new(client.clone(), "givemecoins".to_string()), @@ -7678,10 +6425,7 @@ impl CatalogTree_Pools_Vecs { tiger: AaopoolPattern::new(client.clone(), "tiger".to_string()), tigerpoolnet: AaopoolPattern::new(client.clone(), "tigerpoolnet".to_string()), titan: AaopoolPattern::new(client.clone(), "titan".to_string()), - transactioncoinmining: AaopoolPattern::new( - client.clone(), - "transactioncoinmining".to_string(), - ), + transactioncoinmining: AaopoolPattern::new(client.clone(), "transactioncoinmining".to_string()), trickysbtcpool: AaopoolPattern::new(client.clone(), "trickysbtcpool".to_string()), triplemining: AaopoolPattern::new(client.clone(), "triplemining".to_string()), twentyoneinc: AaopoolPattern::new(client.clone(), "twentyoneinc".to_string()), @@ -7708,11 +6452,8 @@ pub struct CatalogTree_Positions { impl CatalogTree_Positions { pub fn new(client: Arc, base_path: String) -> Self { Self { - block_position: MetricPattern11::new( - client.clone(), - format!("{base_path}_block_position"), - ), - tx_position: MetricPattern27::new(client.clone(), format!("{base_path}_tx_position")), + block_position: MetricPattern11::new(client.clone(), "position".to_string()), + tx_position: MetricPattern27::new(client.clone(), "position".to_string()), } } } @@ -7743,7 +6484,7 @@ pub struct CatalogTree_Price_Cents { impl CatalogTree_Price_Cents { pub fn new(client: Arc, base_path: String) -> Self { Self { - ohlc: MetricPattern5::new(client.clone(), format!("{base_path}_ohlc")), + ohlc: MetricPattern5::new(client.clone(), "ohlc_cents".to_string()), split: CatalogTree_Price_Cents_Split::new(client.clone(), format!("{base_path}_split")), } } @@ -7760,10 +6501,10 @@ pub struct CatalogTree_Price_Cents_Split { impl CatalogTree_Price_Cents_Split { pub fn new(client: Arc, base_path: String) -> Self { Self { - close: MetricPattern5::new(client.clone(), format!("{base_path}_close")), - high: MetricPattern5::new(client.clone(), format!("{base_path}_high")), - low: MetricPattern5::new(client.clone(), format!("{base_path}_low")), - open: MetricPattern5::new(client.clone(), format!("{base_path}_open")), + close: MetricPattern5::new(client.clone(), "price_close_cents".to_string()), + high: MetricPattern5::new(client.clone(), "price_high_cents".to_string()), + low: MetricPattern5::new(client.clone(), "price_low_cents".to_string()), + open: MetricPattern5::new(client.clone(), "price_open_cents".to_string()), } } } @@ -7777,7 +6518,7 @@ pub struct CatalogTree_Price_Sats { impl CatalogTree_Price_Sats { pub fn new(client: Arc, base_path: String) -> Self { Self { - ohlc: MetricPattern1::new(client.clone(), format!("{base_path}_ohlc")), + ohlc: MetricPattern1::new(client.clone(), "price_ohlc_sats".to_string()), split: SplitPattern2::new(client.clone(), "price_sats".to_string()), } } @@ -7792,7 +6533,7 @@ pub struct CatalogTree_Price_Usd { impl CatalogTree_Price_Usd { pub fn new(client: Arc, base_path: String) -> Self { Self { - ohlc: MetricPattern1::new(client.clone(), format!("{base_path}_ohlc")), + ohlc: MetricPattern1::new(client.clone(), "price_ohlc".to_string()), split: SplitPattern2::new(client.clone(), "price".to_string()), } } @@ -7816,38 +6557,14 @@ impl CatalogTree_Scripts { pub fn new(client: Arc, base_path: String) -> Self { Self { count: CatalogTree_Scripts_Count::new(client.clone(), format!("{base_path}_count")), - empty_to_txindex: MetricPattern9::new( - client.clone(), - format!("{base_path}_empty_to_txindex"), - ), - first_emptyoutputindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_emptyoutputindex"), - ), - first_opreturnindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_opreturnindex"), - ), - first_p2msoutputindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_p2msoutputindex"), - ), - first_unknownoutputindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_unknownoutputindex"), - ), - opreturn_to_txindex: MetricPattern14::new( - client.clone(), - format!("{base_path}_opreturn_to_txindex"), - ), - p2ms_to_txindex: MetricPattern17::new( - client.clone(), - format!("{base_path}_p2ms_to_txindex"), - ), - unknown_to_txindex: MetricPattern28::new( - client.clone(), - format!("{base_path}_unknown_to_txindex"), - ), + empty_to_txindex: MetricPattern9::new(client.clone(), "txindex".to_string()), + first_emptyoutputindex: MetricPattern11::new(client.clone(), "first_emptyoutputindex".to_string()), + first_opreturnindex: MetricPattern11::new(client.clone(), "first_opreturnindex".to_string()), + first_p2msoutputindex: MetricPattern11::new(client.clone(), "first_p2msoutputindex".to_string()), + first_unknownoutputindex: MetricPattern11::new(client.clone(), "first_unknownoutputindex".to_string()), + opreturn_to_txindex: MetricPattern14::new(client.clone(), "txindex".to_string()), + p2ms_to_txindex: MetricPattern17::new(client.clone(), "txindex".to_string()), + unknown_to_txindex: MetricPattern28::new(client.clone(), "txindex".to_string()), value: CatalogTree_Scripts_Value::new(client.clone(), format!("{base_path}_value")), } } @@ -7887,14 +6604,8 @@ impl CatalogTree_Scripts_Count { p2wpkh: DollarsPattern::new(client.clone(), "p2wpkh_count".to_string()), p2wsh: DollarsPattern::new(client.clone(), "p2wsh_count".to_string()), segwit: DollarsPattern::new(client.clone(), "segwit_count".to_string()), - segwit_adoption: SegwitAdoptionPattern::new( - client.clone(), - "segwit_adoption".to_string(), - ), - taproot_adoption: SegwitAdoptionPattern::new( - client.clone(), - "taproot_adoption".to_string(), - ), + segwit_adoption: SegwitAdoptionPattern::new(client.clone(), "segwit_adoption".to_string()), + taproot_adoption: SegwitAdoptionPattern::new(client.clone(), "taproot_adoption".to_string()), unknownoutput: DollarsPattern::new(client.clone(), "unknownoutput_count".to_string()), } } @@ -7926,16 +6637,10 @@ impl CatalogTree_Supply { pub fn new(client: Arc, base_path: String) -> Self { Self { burned: CatalogTree_Supply_Burned::new(client.clone(), format!("{base_path}_burned")), - circulating: CatalogTree_Supply_Circulating::new( - client.clone(), - format!("{base_path}_circulating"), - ), - inflation: MetricPattern4::new(client.clone(), format!("{base_path}_inflation")), - market_cap: MetricPattern1::new(client.clone(), format!("{base_path}_market_cap")), - velocity: CatalogTree_Supply_Velocity::new( - client.clone(), - format!("{base_path}_velocity"), - ), + circulating: CatalogTree_Supply_Circulating::new(client.clone(), format!("{base_path}_circulating")), + inflation: MetricPattern4::new(client.clone(), "inflation_rate".to_string()), + market_cap: MetricPattern1::new(client.clone(), "market_cap".to_string()), + velocity: CatalogTree_Supply_Velocity::new(client.clone(), format!("{base_path}_velocity")), } } } @@ -7950,10 +6655,7 @@ impl CatalogTree_Supply_Burned { pub fn new(client: Arc, base_path: String) -> Self { Self { opreturn: UnclaimedRewardsPattern::new(client.clone(), "opreturn_supply".to_string()), - unspendable: UnclaimedRewardsPattern::new( - client.clone(), - "unspendable_supply".to_string(), - ), + unspendable: UnclaimedRewardsPattern::new(client.clone(), "unspendable_supply".to_string()), } } } @@ -7968,9 +6670,9 @@ pub struct CatalogTree_Supply_Circulating { impl CatalogTree_Supply_Circulating { pub fn new(client: Arc, base_path: String) -> Self { Self { - bitcoin: MetricPattern3::new(client.clone(), format!("{base_path}_bitcoin")), - dollars: MetricPattern3::new(client.clone(), format!("{base_path}_dollars")), - sats: MetricPattern3::new(client.clone(), format!("{base_path}_sats")), + bitcoin: MetricPattern3::new(client.clone(), "circulating_supply_btc".to_string()), + dollars: MetricPattern3::new(client.clone(), "circulating_supply_usd".to_string()), + sats: MetricPattern3::new(client.clone(), "circulating_supply".to_string()), } } } @@ -7984,8 +6686,8 @@ pub struct CatalogTree_Supply_Velocity { impl CatalogTree_Supply_Velocity { pub fn new(client: Arc, base_path: String) -> Self { Self { - btc: MetricPattern4::new(client.clone(), format!("{base_path}_btc")), - usd: MetricPattern4::new(client.clone(), format!("{base_path}_usd")), + btc: MetricPattern4::new(client.clone(), "btc_velocity".to_string()), + usd: MetricPattern4::new(client.clone(), "usd_velocity".to_string()), } } } @@ -8012,42 +6714,21 @@ pub struct CatalogTree_Transactions { impl CatalogTree_Transactions { pub fn new(client: Arc, base_path: String) -> Self { Self { - base_size: MetricPattern27::new(client.clone(), format!("{base_path}_base_size")), - count: CatalogTree_Transactions_Count::new( - client.clone(), - format!("{base_path}_count"), - ), + base_size: MetricPattern27::new(client.clone(), "base_size".to_string()), + count: CatalogTree_Transactions_Count::new(client.clone(), format!("{base_path}_count")), fees: CatalogTree_Transactions_Fees::new(client.clone(), format!("{base_path}_fees")), - first_txindex: MetricPattern11::new( - client.clone(), - format!("{base_path}_first_txindex"), - ), - first_txinindex: MetricPattern27::new( - client.clone(), - format!("{base_path}_first_txinindex"), - ), - first_txoutindex: MetricPattern27::new( - client.clone(), - format!("{base_path}_first_txoutindex"), - ), - height: MetricPattern27::new(client.clone(), format!("{base_path}_height")), - is_explicitly_rbf: MetricPattern27::new( - client.clone(), - format!("{base_path}_is_explicitly_rbf"), - ), - rawlocktime: MetricPattern27::new(client.clone(), format!("{base_path}_rawlocktime")), + first_txindex: MetricPattern11::new(client.clone(), "first_txindex".to_string()), + first_txinindex: MetricPattern27::new(client.clone(), "first_txinindex".to_string()), + first_txoutindex: MetricPattern27::new(client.clone(), "first_txoutindex".to_string()), + height: MetricPattern27::new(client.clone(), "height".to_string()), + is_explicitly_rbf: MetricPattern27::new(client.clone(), "is_explicitly_rbf".to_string()), + rawlocktime: MetricPattern27::new(client.clone(), "rawlocktime".to_string()), size: CatalogTree_Transactions_Size::new(client.clone(), format!("{base_path}_size")), - total_size: MetricPattern27::new(client.clone(), format!("{base_path}_total_size")), - txid: MetricPattern27::new(client.clone(), format!("{base_path}_txid")), - txversion: MetricPattern27::new(client.clone(), format!("{base_path}_txversion")), - versions: CatalogTree_Transactions_Versions::new( - client.clone(), - format!("{base_path}_versions"), - ), - volume: CatalogTree_Transactions_Volume::new( - client.clone(), - format!("{base_path}_volume"), - ), + total_size: MetricPattern27::new(client.clone(), "total_size".to_string()), + txid: MetricPattern27::new(client.clone(), "txid".to_string()), + txversion: MetricPattern27::new(client.clone(), "txversion".to_string()), + versions: CatalogTree_Transactions_Versions::new(client.clone(), format!("{base_path}_versions")), + volume: CatalogTree_Transactions_Volume::new(client.clone(), format!("{base_path}_volume")), } } } @@ -8061,7 +6742,7 @@ pub struct CatalogTree_Transactions_Count { impl CatalogTree_Transactions_Count { pub fn new(client: Arc, base_path: String) -> Self { Self { - is_coinbase: MetricPattern27::new(client.clone(), format!("{base_path}_is_coinbase")), + is_coinbase: MetricPattern27::new(client.clone(), "is_coinbase".to_string()), tx_count: DollarsPattern::new(client.clone(), "tx_count".to_string()), } } @@ -8080,8 +6761,8 @@ impl CatalogTree_Transactions_Fees { Self { fee: CatalogTree_Transactions_Fees_Fee::new(client.clone(), format!("{base_path}_fee")), fee_rate: FeeRatePattern::new(client.clone(), "fee_rate".to_string()), - input_value: MetricPattern27::new(client.clone(), format!("{base_path}_input_value")), - output_value: MetricPattern27::new(client.clone(), format!("{base_path}_output_value")), + input_value: MetricPattern27::new(client.clone(), "input_value".to_string()), + output_value: MetricPattern27::new(client.clone(), "output_value".to_string()), } } } @@ -8098,12 +6779,9 @@ impl CatalogTree_Transactions_Fees_Fee { pub fn new(client: Arc, base_path: String) -> Self { Self { bitcoin: CountPattern2::new(client.clone(), "fee_btc".to_string()), - dollars: CatalogTree_Transactions_Fees_Fee_Dollars::new( - client.clone(), - format!("{base_path}_dollars"), - ), + dollars: CatalogTree_Transactions_Fees_Fee_Dollars::new(client.clone(), format!("{base_path}_dollars")), sats: CountPattern2::new(client.clone(), "fee".to_string()), - txindex: MetricPattern27::new(client.clone(), format!("{base_path}_txindex")), + txindex: MetricPattern27::new(client.clone(), "fee".to_string()), } } } @@ -8126,20 +6804,17 @@ pub struct CatalogTree_Transactions_Fees_Fee_Dollars { impl CatalogTree_Transactions_Fees_Fee_Dollars { pub fn new(client: Arc, base_path: String) -> Self { Self { - average: MetricPattern1::new(client.clone(), format!("{base_path}_average")), - cumulative: MetricPattern2::new(client.clone(), format!("{base_path}_cumulative")), - height_cumulative: MetricPattern11::new( - client.clone(), - format!("{base_path}_height_cumulative"), - ), - max: MetricPattern1::new(client.clone(), format!("{base_path}_max")), - median: MetricPattern11::new(client.clone(), format!("{base_path}_median")), - min: MetricPattern1::new(client.clone(), format!("{base_path}_min")), - pct10: MetricPattern11::new(client.clone(), format!("{base_path}_pct10")), - pct25: MetricPattern11::new(client.clone(), format!("{base_path}_pct25")), - pct75: MetricPattern11::new(client.clone(), format!("{base_path}_pct75")), - pct90: MetricPattern11::new(client.clone(), format!("{base_path}_pct90")), - sum: MetricPattern1::new(client.clone(), format!("{base_path}_sum")), + average: MetricPattern1::new(client.clone(), "fee_usd_average".to_string()), + cumulative: MetricPattern2::new(client.clone(), "fee_usd_cumulative".to_string()), + height_cumulative: MetricPattern11::new(client.clone(), "fee_usd_cumulative".to_string()), + max: MetricPattern1::new(client.clone(), "fee_usd_max".to_string()), + median: MetricPattern11::new(client.clone(), "fee_usd_median".to_string()), + min: MetricPattern1::new(client.clone(), "fee_usd_min".to_string()), + pct10: MetricPattern11::new(client.clone(), "fee_usd_pct10".to_string()), + pct25: MetricPattern11::new(client.clone(), "fee_usd_pct25".to_string()), + pct75: MetricPattern11::new(client.clone(), "fee_usd_pct75".to_string()), + pct90: MetricPattern11::new(client.clone(), "fee_usd_pct90".to_string()), + sum: MetricPattern1::new(client.clone(), "fee_usd_sum".to_string()), } } } @@ -8153,8 +6828,8 @@ pub struct CatalogTree_Transactions_Size { impl CatalogTree_Transactions_Size { pub fn new(client: Arc, base_path: String) -> Self { Self { - vsize: FeeRatePattern::new(client.clone(), "".to_string()), - weight: FeeRatePattern::new(client.clone(), "".to_string()), + vsize: FeeRatePattern::new(client.clone(), "tx_vsize_average".to_string()), + weight: FeeRatePattern::new(client.clone(), "tx_weight_average".to_string()), } } } @@ -8189,16 +6864,10 @@ impl CatalogTree_Transactions_Volume { pub fn new(client: Arc, base_path: String) -> Self { Self { annualized_volume: _2015Pattern::new(client.clone(), "annualized_volume".to_string()), - inputs_per_sec: MetricPattern4::new( - client.clone(), - format!("{base_path}_inputs_per_sec"), - ), - outputs_per_sec: MetricPattern4::new( - client.clone(), - format!("{base_path}_outputs_per_sec"), - ), + inputs_per_sec: MetricPattern4::new(client.clone(), "inputs_per_sec".to_string()), + outputs_per_sec: MetricPattern4::new(client.clone(), "outputs_per_sec".to_string()), sent_sum: ActiveSupplyPattern::new(client.clone(), "sent_sum".to_string()), - tx_per_sec: MetricPattern4::new(client.clone(), format!("{base_path}_tx_per_sec")), + tx_per_sec: MetricPattern4::new(client.clone(), "tx_per_sec".to_string()), } } } @@ -8242,59 +6911,30 @@ impl BrkClient { /// Address transaction IDs /// /// Get transaction IDs for an address, newest first. Use after_txid for pagination. - pub fn get_address_txs( - &self, - address: &str, - after_txid: Option<&str>, - limit: Option<&str>, - ) -> Result> { + pub fn get_address_txs(&self, address: &str, after_txid: Option<&str>, limit: Option<&str>) -> Result> { let mut query = Vec::new(); - if let Some(v) = after_txid { - query.push(format!("after_txid={}", v)); - } - if let Some(v) = limit { - query.push(format!("limit={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; - self.base - .get(&format!("/api/address/{address}/txs{}", query_str)) + if let Some(v) = after_txid { query.push(format!("after_txid={}", v)); } + if let Some(v) = limit { query.push(format!("limit={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; + self.base.get(&format!("/api/address/{address}/txs{}", query_str)) } /// Address confirmed transactions /// /// Get confirmed transaction IDs for an address, 25 per page. Use ?after_txid= for pagination. - pub fn get_address_txs_chain( - &self, - address: &str, - after_txid: Option<&str>, - limit: Option<&str>, - ) -> Result> { + pub fn get_address_txs_chain(&self, address: &str, after_txid: Option<&str>, limit: Option<&str>) -> Result> { let mut query = Vec::new(); - if let Some(v) = after_txid { - query.push(format!("after_txid={}", v)); - } - if let Some(v) = limit { - query.push(format!("limit={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; - self.base - .get(&format!("/api/address/{address}/txs/chain{}", query_str)) + if let Some(v) = after_txid { query.push(format!("after_txid={}", v)); } + if let Some(v) = limit { query.push(format!("limit={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; + self.base.get(&format!("/api/address/{address}/txs/chain{}", query_str)) } /// Address mempool transactions /// /// Get unconfirmed transaction IDs for an address from the mempool (up to 50). pub fn get_address_txs_mempool(&self, address: &str) -> Result> { - self.base - .get(&format!("/api/address/{address}/txs/mempool")) + self.base.get(&format!("/api/address/{address}/txs/mempool")) } /// Address UTXOs @@ -8349,13 +6989,8 @@ impl BrkClient { /// Block transactions (paginated) /// /// Retrieve transactions in a block by block hash, starting from the specified index. Returns up to 25 transactions at a time. - pub fn get_block_by_hash_txs_by_start_index( - &self, - hash: &str, - start_index: &str, - ) -> Result> { - self.base - .get(&format!("/api/block/{hash}/txs/{start_index}")) + pub fn get_block_by_hash_txs_by_start_index(&self, hash: &str, start_index: &str) -> Result> { + self.base.get(&format!("/api/block/{hash}/txs/{start_index}")) } /// Recent blocks @@ -8396,69 +7031,28 @@ impl BrkClient { /// Get metric data /// /// Fetch data for a specific metric at the given index. Use query parameters to filter by date range and format (json/csv). - pub fn get_metric_by_index( - &self, - index: &str, - metric: &str, - count: Option<&str>, - format: Option<&str>, - from: Option<&str>, - to: Option<&str>, - ) -> Result { + pub fn get_metric_by_index(&self, index: &str, metric: &str, count: Option<&str>, format: Option<&str>, from: Option<&str>, to: Option<&str>) -> Result { let mut query = Vec::new(); - if let Some(v) = count { - query.push(format!("count={}", v)); - } - if let Some(v) = format { - query.push(format!("format={}", v)); - } - if let Some(v) = from { - query.push(format!("from={}", v)); - } - if let Some(v) = to { - query.push(format!("to={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; - self.base - .get(&format!("/api/metric/{metric}/{index}{}", query_str)) + if let Some(v) = count { query.push(format!("count={}", v)); } + if let Some(v) = format { query.push(format!("format={}", v)); } + if let Some(v) = from { query.push(format!("from={}", v)); } + if let Some(v) = to { query.push(format!("to={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; + self.base.get(&format!("/api/metric/{metric}/{index}{}", query_str)) } /// Bulk metric data /// /// Fetch multiple metrics in a single request. Supports filtering by index and date range. Returns an array of MetricData objects. - pub fn get_metrics_bulk( - &self, - count: Option<&str>, - format: Option<&str>, - from: Option<&str>, - index: &str, - metrics: &str, - to: Option<&str>, - ) -> Result> { + pub fn get_metrics_bulk(&self, count: Option<&str>, format: Option<&str>, from: Option<&str>, index: &str, metrics: &str, to: Option<&str>) -> Result> { let mut query = Vec::new(); - if let Some(v) = count { - query.push(format!("count={}", v)); - } - if let Some(v) = format { - query.push(format!("format={}", v)); - } - if let Some(v) = from { - query.push(format!("from={}", v)); - } + if let Some(v) = count { query.push(format!("count={}", v)); } + if let Some(v) = format { query.push(format!("format={}", v)); } + if let Some(v) = from { query.push(format!("from={}", v)); } query.push(format!("index={}", index)); query.push(format!("metrics={}", metrics)); - if let Some(v) = to { - query.push(format!("to={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; + if let Some(v) = to { query.push(format!("to={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; self.base.get(&format!("/api/metrics/bulk{}", query_str)) } @@ -8488,36 +7082,19 @@ impl BrkClient { /// Paginated list of available metrics pub fn get_metrics_list(&self, page: Option<&str>) -> Result { let mut query = Vec::new(); - if let Some(v) = page { - query.push(format!("page={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; + if let Some(v) = page { query.push(format!("page={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; self.base.get(&format!("/api/metrics/list{}", query_str)) } /// Search metrics /// /// Fuzzy search for metrics by name. Supports partial matches and typos. - pub fn get_metrics_search_by_metric( - &self, - metric: &str, - limit: Option<&str>, - ) -> Result> { + pub fn get_metrics_search_by_metric(&self, metric: &str, limit: Option<&str>) -> Result> { let mut query = Vec::new(); - if let Some(v) = limit { - query.push(format!("limit={}", v)); - } - let query_str = if query.is_empty() { - String::new() - } else { - format!("?{}", query.join("&")) - }; - self.base - .get(&format!("/api/metrics/search/{metric}{}", query_str)) + if let Some(v) = limit { query.push(format!("limit={}", v)); } + let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; + self.base.get(&format!("/api/metrics/search/{metric}{}", query_str)) } /// Transaction information @@ -8579,63 +7156,43 @@ impl BrkClient { /// Block fees /// /// Get average block fees for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y - pub fn get_v1_mining_blocks_fees_by_time_period( - &self, - time_period: &str, - ) -> Result> { - self.base - .get(&format!("/api/v1/mining/blocks/fees/{time_period}")) + pub fn get_v1_mining_blocks_fees_by_time_period(&self, time_period: &str) -> Result> { + self.base.get(&format!("/api/v1/mining/blocks/fees/{time_period}")) } /// Block rewards /// /// Get average block rewards (coinbase = subsidy + fees) for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y - pub fn get_v1_mining_blocks_rewards_by_time_period( - &self, - time_period: &str, - ) -> Result> { - self.base - .get(&format!("/api/v1/mining/blocks/rewards/{time_period}")) + pub fn get_v1_mining_blocks_rewards_by_time_period(&self, time_period: &str) -> Result> { + self.base.get(&format!("/api/v1/mining/blocks/rewards/{time_period}")) } /// Block sizes and weights /// /// Get average block sizes and weights for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y - pub fn get_v1_mining_blocks_sizes_weights_by_time_period( - &self, - time_period: &str, - ) -> Result { - self.base.get(&format!( - "/api/v1/mining/blocks/sizes-weights/{time_period}" - )) + pub fn get_v1_mining_blocks_sizes_weights_by_time_period(&self, time_period: &str) -> Result { + self.base.get(&format!("/api/v1/mining/blocks/sizes-weights/{time_period}")) } /// Block by timestamp /// /// Find the block closest to a given UNIX timestamp. pub fn get_v1_mining_blocks_timestamp(&self, timestamp: &str) -> Result { - self.base - .get(&format!("/api/v1/mining/blocks/timestamp/{timestamp}")) + self.base.get(&format!("/api/v1/mining/blocks/timestamp/{timestamp}")) } /// Difficulty adjustments (all time) /// /// Get historical difficulty adjustments. Returns array of [timestamp, height, difficulty, change_percent]. pub fn get_v1_mining_difficulty_adjustments(&self) -> Result> { - self.base - .get(&format!("/api/v1/mining/difficulty-adjustments")) + self.base.get(&format!("/api/v1/mining/difficulty-adjustments")) } /// Difficulty adjustments /// /// Get historical difficulty adjustments for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y. Returns array of [timestamp, height, difficulty, change_percent]. - pub fn get_v1_mining_difficulty_adjustments_by_time_period( - &self, - time_period: &str, - ) -> Result> { - self.base.get(&format!( - "/api/v1/mining/difficulty-adjustments/{time_period}" - )) + pub fn get_v1_mining_difficulty_adjustments_by_time_period(&self, time_period: &str) -> Result> { + self.base.get(&format!("/api/v1/mining/difficulty-adjustments/{time_period}")) } /// Network hashrate (all time) @@ -8648,12 +7205,8 @@ impl BrkClient { /// Network hashrate /// /// Get network hashrate and difficulty data for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y - pub fn get_v1_mining_hashrate_by_time_period( - &self, - time_period: &str, - ) -> Result { - self.base - .get(&format!("/api/v1/mining/hashrate/{time_period}")) + pub fn get_v1_mining_hashrate_by_time_period(&self, time_period: &str) -> Result { + self.base.get(&format!("/api/v1/mining/hashrate/{time_period}")) } /// Mining pool details @@ -8674,27 +7227,21 @@ impl BrkClient { /// /// Get mining pool statistics for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y pub fn get_v1_mining_pools_by_time_period(&self, time_period: &str) -> Result { - self.base - .get(&format!("/api/v1/mining/pools/{time_period}")) + self.base.get(&format!("/api/v1/mining/pools/{time_period}")) } /// Mining reward statistics /// /// Get mining reward statistics for the last N blocks including total rewards, fees, and transaction count. - pub fn get_v1_mining_reward_stats_by_block_count( - &self, - block_count: &str, - ) -> Result { - self.base - .get(&format!("/api/v1/mining/reward-stats/{block_count}")) + pub fn get_v1_mining_reward_stats_by_block_count(&self, block_count: &str) -> Result { + self.base.get(&format!("/api/v1/mining/reward-stats/{block_count}")) } /// Validate address /// /// Validate a Bitcoin address and get information about its type and scriptPubKey. pub fn get_v1_validate_address(&self, address: &str) -> Result { - self.base - .get(&format!("/api/v1/validate-address/{address}")) + self.base.get(&format!("/api/v1/validate-address/{address}")) } /// Health check @@ -8710,4 +7257,5 @@ impl BrkClient { pub fn get_version(&self) -> Result { self.base.get(&format!("/version")) } + } diff --git a/crates/brk_query/Cargo.toml b/crates/brk_query/Cargo.toml index 54953618a..ddb06010c 100644 --- a/crates/brk_query/Cargo.toml +++ b/crates/brk_query/Cargo.toml @@ -25,8 +25,5 @@ derive_more = { workspace = true } jiff = { workspace = true } # quickmatch = { path = "../../../quickmatch" } quickmatch = "0.1.8" -schemars = { workspace = true } -serde = { workspace = true } -serde_json = { workspace = true } tokio = { workspace = true, optional = true } vecdb = { workspace = true } diff --git a/crates/brk_types/src/metric.rs b/crates/brk_types/src/metric.rs index 35f4772fc..0b6f6b124 100644 --- a/crates/brk_types/src/metric.rs +++ b/crates/brk_types/src/metric.rs @@ -2,10 +2,10 @@ use std::fmt::Display; use derive_more::Deref; use schemars::JsonSchema; -use serde::Deserialize; +use serde::{Deserialize, Serialize}; /// Metric name -#[derive(Debug, Clone, Deref, Deserialize, JsonSchema)] +#[derive(Debug, Clone, Deref, Serialize, Deserialize, JsonSchema)] #[serde(transparent)] #[schemars( with = "String", diff --git a/crates/brk_types/src/metricdata.rs b/crates/brk_types/src/metricdata.rs index cb53ae547..6bae745db 100644 --- a/crates/brk_types/src/metricdata.rs +++ b/crates/brk_types/src/metricdata.rs @@ -9,7 +9,7 @@ use vecdb::AnySerializableVec; /// /// All metric data endpoints return this structure when format is JSON. /// This type is not instantiated - use `MetricData::serialize()` to write JSON bytes directly. -#[derive(JsonSchema, Deserialize)] +#[derive(Debug, JsonSchema, Deserialize)] pub struct MetricData { /// Total number of data points in the metric pub total: usize, diff --git a/crates/brk_types/src/metricwithindex.rs b/crates/brk_types/src/metricwithindex.rs index dfa7ad825..deed228a7 100644 --- a/crates/brk_types/src/metricwithindex.rs +++ b/crates/brk_types/src/metricwithindex.rs @@ -1,9 +1,9 @@ use schemars::JsonSchema; -use serde::Deserialize; +use serde::{Deserialize, Serialize}; use crate::{Index, Metric}; -#[derive(Deserialize, JsonSchema)] +#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema)] pub struct MetricWithIndex { /// Metric name pub metric: Metric, @@ -11,3 +11,27 @@ pub struct MetricWithIndex { /// Aggregation index pub index: Index, } + +impl MetricWithIndex { + pub fn new(metric: impl Into, index: Index) -> Self { + Self { + metric: metric.into(), + index, + } + } +} + +impl From<(Metric, Index)> for MetricWithIndex { + fn from((metric, index): (Metric, Index)) -> Self { + Self { metric, index } + } +} + +impl From<(&str, Index)> for MetricWithIndex { + fn from((metric, index): (&str, Index)) -> Self { + Self { + metric: metric.into(), + index, + } + } +} diff --git a/modules/brk-client/index.js b/modules/brk-client/index.js index 96136fd31..91d24c9b6 100644 --- a/modules/brk-client/index.js +++ b/modules/brk-client/index.js @@ -774,13 +774,12 @@ * @property {number} [timeout] - Request timeout in milliseconds */ -const _isBrowser = typeof window !== "undefined" && "caches" in window; -const _runIdle = (/** @type {VoidFunction} */ fn) => - (globalThis.requestIdleCallback ?? setTimeout)(fn); +const _isBrowser = typeof window !== 'undefined' && 'caches' in window; +const _runIdle = (/** @type {VoidFunction} */ fn) => (globalThis.requestIdleCallback ?? setTimeout)(fn); /** @type {Promise} */ const _cachePromise = _isBrowser - ? caches.open("__BRK_CLIENT__").catch(() => null) + ? caches.open('__BRK_CLIENT__').catch(() => null) : Promise.resolve(null); /** @@ -793,7 +792,7 @@ class BrkError extends Error { */ constructor(message, status) { super(message); - this.name = "BrkError"; + this.name = 'BrkError'; this.status = status; } } @@ -842,14 +841,12 @@ function _endpoint(client, name, index) { get: (onUpdate) => client.get(p, onUpdate), range: (from, to, onUpdate) => { const params = new URLSearchParams(); - if (from !== undefined) params.set("from", String(from)); - if (to !== undefined) params.set("to", String(to)); + if (from !== undefined) params.set('from', String(from)); + if (to !== undefined) params.set('to', String(to)); const query = params.toString(); return client.get(query ? `${p}?${query}` : p, onUpdate); }, - get path() { - return p; - }, + get path() { return p; }, }; } @@ -861,7 +858,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); } @@ -874,9 +871,7 @@ class BrkClientBase { * @returns {Promise} */ async get(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 _cachePromise; const cachedRes = await cache?.match(url); @@ -885,16 +880,13 @@ class BrkClientBase { if (cachedJson) onUpdate?.(cachedJson); if (!globalThis.navigator?.onLine) { 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 fetch(url, { - signal: AbortSignal.timeout(this.timeout), - }); + const res = await fetch(url, { signal: AbortSignal.timeout(this.timeout) }); if (!res.ok) throw new BrkError(`HTTP ${res.status}`, res.status); - 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(); @@ -914,7 +906,8 @@ class BrkClientBase { * @param {string} s - Metric suffix * @returns {string} */ -const _m = (acc, s) => (acc ? `${acc}_${s}` : s); +const _m = (acc, s) => acc ? `${acc}_${s}` : s; + // Index accessor factory functions @@ -934,52 +927,24 @@ function createMetricPattern1(client, name) { return { name, by: { - get dateindex() { - return _endpoint(client, name, "dateindex"); - }, - get decadeindex() { - return _endpoint(client, name, "decadeindex"); - }, - get difficultyepoch() { - return _endpoint(client, name, "difficultyepoch"); - }, - get height() { - return _endpoint(client, name, "height"); - }, - get monthindex() { - return _endpoint(client, name, "monthindex"); - }, - get quarterindex() { - return _endpoint(client, name, "quarterindex"); - }, - get semesterindex() { - return _endpoint(client, name, "semesterindex"); - }, - get weekindex() { - return _endpoint(client, name, "weekindex"); - }, - get yearindex() { - return _endpoint(client, name, "yearindex"); - }, + get dateindex() { return _endpoint(client, name, 'dateindex'); }, + get decadeindex() { return _endpoint(client, name, 'decadeindex'); }, + get difficultyepoch() { return _endpoint(client, name, 'difficultyepoch'); }, + get height() { return _endpoint(client, name, 'height'); }, + get monthindex() { return _endpoint(client, name, 'monthindex'); }, + get quarterindex() { return _endpoint(client, name, 'quarterindex'); }, + get semesterindex() { return _endpoint(client, name, 'semesterindex'); }, + get weekindex() { return _endpoint(client, name, 'weekindex'); }, + get yearindex() { return _endpoint(client, name, 'yearindex'); } }, indexes() { - return [ - "dateindex", - "decadeindex", - "difficultyepoch", - "height", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", - ]; + return ['dateindex', 'decadeindex', 'difficultyepoch', 'height', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -999,48 +964,23 @@ function createMetricPattern2(client, name) { return { name, by: { - get dateindex() { - return _endpoint(client, name, "dateindex"); - }, - get decadeindex() { - return _endpoint(client, name, "decadeindex"); - }, - get difficultyepoch() { - return _endpoint(client, name, "difficultyepoch"); - }, - get monthindex() { - return _endpoint(client, name, "monthindex"); - }, - get quarterindex() { - return _endpoint(client, name, "quarterindex"); - }, - get semesterindex() { - return _endpoint(client, name, "semesterindex"); - }, - get weekindex() { - return _endpoint(client, name, "weekindex"); - }, - get yearindex() { - return _endpoint(client, name, "yearindex"); - }, + get dateindex() { return _endpoint(client, name, 'dateindex'); }, + get decadeindex() { return _endpoint(client, name, 'decadeindex'); }, + get difficultyepoch() { return _endpoint(client, name, 'difficultyepoch'); }, + get monthindex() { return _endpoint(client, name, 'monthindex'); }, + get quarterindex() { return _endpoint(client, name, 'quarterindex'); }, + get semesterindex() { return _endpoint(client, name, 'semesterindex'); }, + get weekindex() { return _endpoint(client, name, 'weekindex'); }, + get yearindex() { return _endpoint(client, name, 'yearindex'); } }, indexes() { - return [ - "dateindex", - "decadeindex", - "difficultyepoch", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", - ]; + return ['dateindex', 'decadeindex', 'difficultyepoch', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1060,48 +1000,23 @@ function createMetricPattern3(client, name) { return { name, by: { - get dateindex() { - return _endpoint(client, name, "dateindex"); - }, - get decadeindex() { - return _endpoint(client, name, "decadeindex"); - }, - get height() { - return _endpoint(client, name, "height"); - }, - get monthindex() { - return _endpoint(client, name, "monthindex"); - }, - get quarterindex() { - return _endpoint(client, name, "quarterindex"); - }, - get semesterindex() { - return _endpoint(client, name, "semesterindex"); - }, - get weekindex() { - return _endpoint(client, name, "weekindex"); - }, - get yearindex() { - return _endpoint(client, name, "yearindex"); - }, + get dateindex() { return _endpoint(client, name, 'dateindex'); }, + get decadeindex() { return _endpoint(client, name, 'decadeindex'); }, + get height() { return _endpoint(client, name, 'height'); }, + get monthindex() { return _endpoint(client, name, 'monthindex'); }, + get quarterindex() { return _endpoint(client, name, 'quarterindex'); }, + get semesterindex() { return _endpoint(client, name, 'semesterindex'); }, + get weekindex() { return _endpoint(client, name, 'weekindex'); }, + get yearindex() { return _endpoint(client, name, 'yearindex'); } }, indexes() { - return [ - "dateindex", - "decadeindex", - "height", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", - ]; + return ['dateindex', 'decadeindex', 'height', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1121,44 +1036,22 @@ function createMetricPattern4(client, name) { return { name, by: { - get dateindex() { - return _endpoint(client, name, "dateindex"); - }, - get decadeindex() { - return _endpoint(client, name, "decadeindex"); - }, - get monthindex() { - return _endpoint(client, name, "monthindex"); - }, - get quarterindex() { - return _endpoint(client, name, "quarterindex"); - }, - get semesterindex() { - return _endpoint(client, name, "semesterindex"); - }, - get weekindex() { - return _endpoint(client, name, "weekindex"); - }, - get yearindex() { - return _endpoint(client, name, "yearindex"); - }, + get dateindex() { return _endpoint(client, name, 'dateindex'); }, + get decadeindex() { return _endpoint(client, name, 'decadeindex'); }, + get monthindex() { return _endpoint(client, name, 'monthindex'); }, + get quarterindex() { return _endpoint(client, name, 'quarterindex'); }, + get semesterindex() { return _endpoint(client, name, 'semesterindex'); }, + get weekindex() { return _endpoint(client, name, 'weekindex'); }, + get yearindex() { return _endpoint(client, name, 'yearindex'); } }, indexes() { - return [ - "dateindex", - "decadeindex", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", - ]; + return ['dateindex', 'decadeindex', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1178,21 +1071,17 @@ function createMetricPattern5(client, name) { return { name, by: { - get dateindex() { - return _endpoint(client, name, "dateindex"); - }, - get height() { - return _endpoint(client, name, "height"); - }, + get dateindex() { return _endpoint(client, name, 'dateindex'); }, + get height() { return _endpoint(client, name, 'height'); } }, indexes() { - return ["dateindex", "height"]; + return ['dateindex', 'height']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1212,18 +1101,16 @@ function createMetricPattern6(client, name) { return { name, by: { - get dateindex() { - return _endpoint(client, name, "dateindex"); - }, + get dateindex() { return _endpoint(client, name, 'dateindex'); } }, indexes() { - return ["dateindex"]; + return ['dateindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1243,18 +1130,16 @@ function createMetricPattern7(client, name) { return { name, by: { - get decadeindex() { - return _endpoint(client, name, "decadeindex"); - }, + get decadeindex() { return _endpoint(client, name, 'decadeindex'); } }, indexes() { - return ["decadeindex"]; + return ['decadeindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1274,18 +1159,16 @@ function createMetricPattern8(client, name) { return { name, by: { - get difficultyepoch() { - return _endpoint(client, name, "difficultyepoch"); - }, + get difficultyepoch() { return _endpoint(client, name, 'difficultyepoch'); } }, indexes() { - return ["difficultyepoch"]; + return ['difficultyepoch']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1305,18 +1188,16 @@ function createMetricPattern9(client, name) { return { name, by: { - get emptyoutputindex() { - return _endpoint(client, name, "emptyoutputindex"); - }, + get emptyoutputindex() { return _endpoint(client, name, 'emptyoutputindex'); } }, indexes() { - return ["emptyoutputindex"]; + return ['emptyoutputindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1336,18 +1217,16 @@ function createMetricPattern10(client, name) { return { name, by: { - get halvingepoch() { - return _endpoint(client, name, "halvingepoch"); - }, + get halvingepoch() { return _endpoint(client, name, 'halvingepoch'); } }, indexes() { - return ["halvingepoch"]; + return ['halvingepoch']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1367,18 +1246,16 @@ function createMetricPattern11(client, name) { return { name, by: { - get height() { - return _endpoint(client, name, "height"); - }, + get height() { return _endpoint(client, name, 'height'); } }, indexes() { - return ["height"]; + return ['height']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1398,18 +1275,16 @@ function createMetricPattern12(client, name) { return { name, by: { - get txinindex() { - return _endpoint(client, name, "txinindex"); - }, + get txinindex() { return _endpoint(client, name, 'txinindex'); } }, indexes() { - return ["txinindex"]; + return ['txinindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1429,18 +1304,16 @@ function createMetricPattern13(client, name) { return { name, by: { - get monthindex() { - return _endpoint(client, name, "monthindex"); - }, + get monthindex() { return _endpoint(client, name, 'monthindex'); } }, indexes() { - return ["monthindex"]; + return ['monthindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1460,18 +1333,16 @@ function createMetricPattern14(client, name) { return { name, by: { - get opreturnindex() { - return _endpoint(client, name, "opreturnindex"); - }, + get opreturnindex() { return _endpoint(client, name, 'opreturnindex'); } }, indexes() { - return ["opreturnindex"]; + return ['opreturnindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1491,18 +1362,16 @@ function createMetricPattern15(client, name) { return { name, by: { - get txoutindex() { - return _endpoint(client, name, "txoutindex"); - }, + get txoutindex() { return _endpoint(client, name, 'txoutindex'); } }, indexes() { - return ["txoutindex"]; + return ['txoutindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1522,18 +1391,16 @@ function createMetricPattern16(client, name) { return { name, by: { - get p2aaddressindex() { - return _endpoint(client, name, "p2aaddressindex"); - }, + get p2aaddressindex() { return _endpoint(client, name, 'p2aaddressindex'); } }, indexes() { - return ["p2aaddressindex"]; + return ['p2aaddressindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1553,18 +1420,16 @@ function createMetricPattern17(client, name) { return { name, by: { - get p2msoutputindex() { - return _endpoint(client, name, "p2msoutputindex"); - }, + get p2msoutputindex() { return _endpoint(client, name, 'p2msoutputindex'); } }, indexes() { - return ["p2msoutputindex"]; + return ['p2msoutputindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1584,18 +1449,16 @@ function createMetricPattern18(client, name) { return { name, by: { - get p2pk33addressindex() { - return _endpoint(client, name, "p2pk33addressindex"); - }, + get p2pk33addressindex() { return _endpoint(client, name, 'p2pk33addressindex'); } }, indexes() { - return ["p2pk33addressindex"]; + return ['p2pk33addressindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1615,18 +1478,16 @@ function createMetricPattern19(client, name) { return { name, by: { - get p2pk65addressindex() { - return _endpoint(client, name, "p2pk65addressindex"); - }, + get p2pk65addressindex() { return _endpoint(client, name, 'p2pk65addressindex'); } }, indexes() { - return ["p2pk65addressindex"]; + return ['p2pk65addressindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1646,18 +1507,16 @@ function createMetricPattern20(client, name) { return { name, by: { - get p2pkhaddressindex() { - return _endpoint(client, name, "p2pkhaddressindex"); - }, + get p2pkhaddressindex() { return _endpoint(client, name, 'p2pkhaddressindex'); } }, indexes() { - return ["p2pkhaddressindex"]; + return ['p2pkhaddressindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1677,18 +1536,16 @@ function createMetricPattern21(client, name) { return { name, by: { - get p2shaddressindex() { - return _endpoint(client, name, "p2shaddressindex"); - }, + get p2shaddressindex() { return _endpoint(client, name, 'p2shaddressindex'); } }, indexes() { - return ["p2shaddressindex"]; + return ['p2shaddressindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1708,18 +1565,16 @@ function createMetricPattern22(client, name) { return { name, by: { - get p2traddressindex() { - return _endpoint(client, name, "p2traddressindex"); - }, + get p2traddressindex() { return _endpoint(client, name, 'p2traddressindex'); } }, indexes() { - return ["p2traddressindex"]; + return ['p2traddressindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1739,18 +1594,16 @@ function createMetricPattern23(client, name) { return { name, by: { - get p2wpkhaddressindex() { - return _endpoint(client, name, "p2wpkhaddressindex"); - }, + get p2wpkhaddressindex() { return _endpoint(client, name, 'p2wpkhaddressindex'); } }, indexes() { - return ["p2wpkhaddressindex"]; + return ['p2wpkhaddressindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1770,18 +1623,16 @@ function createMetricPattern24(client, name) { return { name, by: { - get p2wshaddressindex() { - return _endpoint(client, name, "p2wshaddressindex"); - }, + get p2wshaddressindex() { return _endpoint(client, name, 'p2wshaddressindex'); } }, indexes() { - return ["p2wshaddressindex"]; + return ['p2wshaddressindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1801,18 +1652,16 @@ function createMetricPattern25(client, name) { return { name, by: { - get quarterindex() { - return _endpoint(client, name, "quarterindex"); - }, + get quarterindex() { return _endpoint(client, name, 'quarterindex'); } }, indexes() { - return ["quarterindex"]; + return ['quarterindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1832,18 +1681,16 @@ function createMetricPattern26(client, name) { return { name, by: { - get semesterindex() { - return _endpoint(client, name, "semesterindex"); - }, + get semesterindex() { return _endpoint(client, name, 'semesterindex'); } }, indexes() { - return ["semesterindex"]; + return ['semesterindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1863,18 +1710,16 @@ function createMetricPattern27(client, name) { return { name, by: { - get txindex() { - return _endpoint(client, name, "txindex"); - }, + get txindex() { return _endpoint(client, name, 'txindex'); } }, indexes() { - return ["txindex"]; + return ['txindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1894,18 +1739,16 @@ function createMetricPattern28(client, name) { return { name, by: { - get unknownoutputindex() { - return _endpoint(client, name, "unknownoutputindex"); - }, + get unknownoutputindex() { return _endpoint(client, name, 'unknownoutputindex'); } }, indexes() { - return ["unknownoutputindex"]; + return ['unknownoutputindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1925,18 +1768,16 @@ function createMetricPattern29(client, name) { return { name, by: { - get weekindex() { - return _endpoint(client, name, "weekindex"); - }, + get weekindex() { return _endpoint(client, name, 'weekindex'); } }, indexes() { - return ["weekindex"]; + return ['weekindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1956,18 +1797,16 @@ function createMetricPattern30(client, name) { return { name, by: { - get yearindex() { - return _endpoint(client, name, "yearindex"); - }, + get yearindex() { return _endpoint(client, name, 'yearindex'); } }, indexes() { - return ["yearindex"]; + return ['yearindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -1987,18 +1826,16 @@ function createMetricPattern31(client, name) { return { name, by: { - get loadedaddressindex() { - return _endpoint(client, name, "loadedaddressindex"); - }, + get loadedaddressindex() { return _endpoint(client, name, 'loadedaddressindex'); } }, indexes() { - return ["loadedaddressindex"]; + return ['loadedaddressindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -2018,18 +1855,16 @@ function createMetricPattern32(client, name) { return { name, by: { - get emptyaddressindex() { - return _endpoint(client, name, "emptyaddressindex"); - }, + get emptyaddressindex() { return _endpoint(client, name, 'emptyaddressindex'); } }, indexes() { - return ["emptyaddressindex"]; + return ['emptyaddressindex']; }, get(index) { if (this.indexes().includes(index)) { return _endpoint(client, name, index); } - }, + } }; } @@ -2079,95 +1914,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: createBitcoinPattern(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: createBitcoinPattern(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')), }; } @@ -2213,87 +1991,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: createBitcoinPattern(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"), - ), - 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: createBitcoinPattern(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')), + 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')), }; } @@ -2337,34 +2064,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')), }; } @@ -2407,78 +2134,33 @@ function createRatio1ySdPattern(client, acc) { */ function createRealizedPattern2(client, acc) { return { - mvrv: createMetricPattern4(client, _m(acc, "mvrv")), - negRealizedLoss: createBitcoinPattern(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: createBitcoinPattern(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')), }; } @@ -2519,70 +2201,31 @@ function createRealizedPattern2(client, acc) { */ function createRealizedPattern(client, acc) { return { - mvrv: createMetricPattern4(client, _m(acc, "mvrv")), - negRealizedLoss: createBitcoinPattern(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"), - ), - 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: createBitcoinPattern(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')), + 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')), }; } @@ -2619,78 +2262,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} costBasisPct05 - * @property {MetricPattern4} costBasisPct10 - * @property {MetricPattern4} costBasisPct15 - * @property {MetricPattern4} costBasisPct20 - * @property {MetricPattern4} costBasisPct25 - * @property {MetricPattern4} costBasisPct30 - * @property {MetricPattern4} costBasisPct35 - * @property {MetricPattern4} costBasisPct40 - * @property {MetricPattern4} costBasisPct45 - * @property {MetricPattern4} costBasisPct50 - * @property {MetricPattern4} costBasisPct55 - * @property {MetricPattern4} costBasisPct60 - * @property {MetricPattern4} costBasisPct65 - * @property {MetricPattern4} costBasisPct70 - * @property {MetricPattern4} costBasisPct75 - * @property {MetricPattern4} costBasisPct80 - * @property {MetricPattern4} costBasisPct85 - * @property {MetricPattern4} costBasisPct90 - * @property {MetricPattern4} costBasisPct95 - */ - -/** - * Create a PercentilesPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {PercentilesPattern} - */ -function createPercentilesPattern(client, acc) { - return { - costBasisPct05: createMetricPattern4(client, _m(acc, "pct05")), - costBasisPct10: createMetricPattern4(client, _m(acc, "pct10")), - costBasisPct15: createMetricPattern4(client, _m(acc, "pct15")), - costBasisPct20: createMetricPattern4(client, _m(acc, "pct20")), - costBasisPct25: createMetricPattern4(client, _m(acc, "pct25")), - costBasisPct30: createMetricPattern4(client, _m(acc, "pct30")), - costBasisPct35: createMetricPattern4(client, _m(acc, "pct35")), - costBasisPct40: createMetricPattern4(client, _m(acc, "pct40")), - costBasisPct45: createMetricPattern4(client, _m(acc, "pct45")), - costBasisPct50: createMetricPattern4(client, _m(acc, "pct50")), - costBasisPct55: createMetricPattern4(client, _m(acc, "pct55")), - costBasisPct60: createMetricPattern4(client, _m(acc, "pct60")), - costBasisPct65: createMetricPattern4(client, _m(acc, "pct65")), - costBasisPct70: createMetricPattern4(client, _m(acc, "pct70")), - costBasisPct75: createMetricPattern4(client, _m(acc, "pct75")), - costBasisPct80: createMetricPattern4(client, _m(acc, "pct80")), - costBasisPct85: createMetricPattern4(client, _m(acc, "pct85")), - costBasisPct90: createMetricPattern4(client, _m(acc, "pct90")), - costBasisPct95: 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')), }; } @@ -2726,27 +2316,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} costBasisPct05 + * @property {MetricPattern4} costBasisPct10 + * @property {MetricPattern4} costBasisPct15 + * @property {MetricPattern4} costBasisPct20 + * @property {MetricPattern4} costBasisPct25 + * @property {MetricPattern4} costBasisPct30 + * @property {MetricPattern4} costBasisPct35 + * @property {MetricPattern4} costBasisPct40 + * @property {MetricPattern4} costBasisPct45 + * @property {MetricPattern4} costBasisPct50 + * @property {MetricPattern4} costBasisPct55 + * @property {MetricPattern4} costBasisPct60 + * @property {MetricPattern4} costBasisPct65 + * @property {MetricPattern4} costBasisPct70 + * @property {MetricPattern4} costBasisPct75 + * @property {MetricPattern4} costBasisPct80 + * @property {MetricPattern4} costBasisPct85 + * @property {MetricPattern4} costBasisPct90 + * @property {MetricPattern4} costBasisPct95 + */ + +/** + * Create a PercentilesPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {PercentilesPattern} + */ +function createPercentilesPattern(client, acc) { + return { + costBasisPct05: createMetricPattern4(client, _m(acc, 'pct05')), + costBasisPct10: createMetricPattern4(client, _m(acc, 'pct10')), + costBasisPct15: createMetricPattern4(client, _m(acc, 'pct15')), + costBasisPct20: createMetricPattern4(client, _m(acc, 'pct20')), + costBasisPct25: createMetricPattern4(client, _m(acc, 'pct25')), + costBasisPct30: createMetricPattern4(client, _m(acc, 'pct30')), + costBasisPct35: createMetricPattern4(client, _m(acc, 'pct35')), + costBasisPct40: createMetricPattern4(client, _m(acc, 'pct40')), + costBasisPct45: createMetricPattern4(client, _m(acc, 'pct45')), + costBasisPct50: createMetricPattern4(client, _m(acc, 'pct50')), + costBasisPct55: createMetricPattern4(client, _m(acc, 'pct55')), + costBasisPct60: createMetricPattern4(client, _m(acc, 'pct60')), + costBasisPct65: createMetricPattern4(client, _m(acc, 'pct65')), + costBasisPct70: createMetricPattern4(client, _m(acc, 'pct70')), + costBasisPct75: createMetricPattern4(client, _m(acc, 'pct75')), + costBasisPct80: createMetricPattern4(client, _m(acc, 'pct80')), + costBasisPct85: createMetricPattern4(client, _m(acc, 'pct85')), + costBasisPct90: createMetricPattern4(client, _m(acc, 'pct90')), + costBasisPct95: createMetricPattern4(client, _m(acc, 'pct95')), + }; +} + /** * @typedef {Object} RelativePattern5 * @property {MetricPattern1} negUnrealizedLossRelToMarketCap @@ -2777,75 +2420,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')), }; } @@ -2875,20 +2467,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')), }; } @@ -2959,18 +2551,18 @@ function createPriceAgoPattern(client, basePath) { */ function createPeriodLumpSumStackPattern(client, acc) { return { - _10y: create_2015Pattern(client, acc ? `10y_${acc}` : "10y"), - _1m: create_2015Pattern(client, acc ? `1m_${acc}` : "1m"), - _1w: create_2015Pattern(client, acc ? `1w_${acc}` : "1w"), - _1y: create_2015Pattern(client, acc ? `1y_${acc}` : "1y"), - _2y: create_2015Pattern(client, acc ? `2y_${acc}` : "2y"), - _3m: create_2015Pattern(client, acc ? `3m_${acc}` : "3m"), - _3y: create_2015Pattern(client, acc ? `3y_${acc}` : "3y"), - _4y: create_2015Pattern(client, acc ? `4y_${acc}` : "4y"), - _5y: create_2015Pattern(client, acc ? `5y_${acc}` : "5y"), - _6m: create_2015Pattern(client, acc ? `6m_${acc}` : "6m"), - _6y: create_2015Pattern(client, acc ? `6y_${acc}` : "6y"), - _8y: create_2015Pattern(client, acc ? `8y_${acc}` : "8y"), + _10y: create_2015Pattern(client, (acc ? `10y_${acc}` : '10y')), + _1m: create_2015Pattern(client, (acc ? `1m_${acc}` : '1m')), + _1w: create_2015Pattern(client, (acc ? `1w_${acc}` : '1w')), + _1y: create_2015Pattern(client, (acc ? `1y_${acc}` : '1y')), + _2y: create_2015Pattern(client, (acc ? `2y_${acc}` : '2y')), + _3m: create_2015Pattern(client, (acc ? `3m_${acc}` : '3m')), + _3y: create_2015Pattern(client, (acc ? `3y_${acc}` : '3y')), + _4y: create_2015Pattern(client, (acc ? `4y_${acc}` : '4y')), + _5y: create_2015Pattern(client, (acc ? `5y_${acc}` : '5y')), + _6m: create_2015Pattern(client, (acc ? `6m_${acc}` : '6m')), + _6y: create_2015Pattern(client, (acc ? `6y_${acc}` : '6y')), + _8y: create_2015Pattern(client, (acc ? `8y_${acc}` : '8y')), }; } @@ -3000,18 +2592,18 @@ function createPeriodLumpSumStackPattern(client, acc) { */ function createPeriodAveragePricePattern(client, acc) { return { - _10y: createMetricPattern4(client, acc ? `10y_${acc}` : "10y"), - _1m: createMetricPattern4(client, acc ? `1m_${acc}` : "1m"), - _1w: createMetricPattern4(client, acc ? `1w_${acc}` : "1w"), - _1y: createMetricPattern4(client, acc ? `1y_${acc}` : "1y"), - _2y: createMetricPattern4(client, acc ? `2y_${acc}` : "2y"), - _3m: createMetricPattern4(client, acc ? `3m_${acc}` : "3m"), - _3y: createMetricPattern4(client, acc ? `3y_${acc}` : "3y"), - _4y: createMetricPattern4(client, acc ? `4y_${acc}` : "4y"), - _5y: createMetricPattern4(client, acc ? `5y_${acc}` : "5y"), - _6m: createMetricPattern4(client, acc ? `6m_${acc}` : "6m"), - _6y: createMetricPattern4(client, acc ? `6y_${acc}` : "6y"), - _8y: createMetricPattern4(client, acc ? `8y_${acc}` : "8y"), + _10y: createMetricPattern4(client, (acc ? `10y_${acc}` : '10y')), + _1m: createMetricPattern4(client, (acc ? `1m_${acc}` : '1m')), + _1w: createMetricPattern4(client, (acc ? `1w_${acc}` : '1w')), + _1y: createMetricPattern4(client, (acc ? `1y_${acc}` : '1y')), + _2y: createMetricPattern4(client, (acc ? `2y_${acc}` : '2y')), + _3m: createMetricPattern4(client, (acc ? `3m_${acc}` : '3m')), + _3y: createMetricPattern4(client, (acc ? `3y_${acc}` : '3y')), + _4y: createMetricPattern4(client, (acc ? `4y_${acc}` : '4y')), + _5y: createMetricPattern4(client, (acc ? `5y_${acc}` : '5y')), + _6m: createMetricPattern4(client, (acc ? `6m_${acc}` : '6m')), + _6y: createMetricPattern4(client, (acc ? `6y_${acc}` : '6y')), + _8y: createMetricPattern4(client, (acc ? `8y_${acc}` : '8y')), }; } @@ -3040,17 +2632,17 @@ function createPeriodAveragePricePattern(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')), }; } @@ -3118,17 +2710,17 @@ function createClassAveragePricePattern(client, basePath) { */ function createFullnessPattern(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')), }; } @@ -3154,43 +2746,16 @@ function createFullnessPattern(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')), }; } @@ -3216,46 +2781,16 @@ function createRelativePattern(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')), }; } @@ -3283,16 +2818,16 @@ function createRelativePattern2(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')), }; } @@ -3352,14 +2887,14 @@ function createAddrCountPattern(client, basePath) { */ 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), }; } @@ -3385,70 +2920,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, acc), realized: createRealizedPattern(client, acc), relative: createRelativePattern(client, acc), - supply: createSupplyPattern2(client, _m(acc, "supply")), - unrealized: createUnrealizedPattern(client, acc), - }; -} - -/** - * @typedef {Object} _100btcPattern - * @property {ActivityPattern2} activity - * @property {CostBasisPattern} costBasis - * @property {OutputsPattern} outputs - * @property {RealizedPattern} realized - * @property {RelativePattern} relative - * @property {SupplyPattern2} supply - * @property {UnrealizedPattern} unrealized - */ - -/** - * Create a _100btcPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {_100btcPattern} - */ -function create_100btcPattern(client, acc) { - return { - activity: createActivityPattern2(client, acc), - costBasis: createCostBasisPattern(client, acc), - outputs: createOutputsPattern(client, acc), - realized: createRealizedPattern(client, acc), - relative: createRelativePattern(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, acc), - 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), }; } @@ -3477,7 +2954,65 @@ function create_10yTo12yPattern(client, acc) { outputs: createOutputsPattern(client, acc), realized: createRealizedPattern2(client, acc), relative: createRelativePattern2(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, (acc ? `10y_${acc}` : '10y')), + _2y: createMetricPattern4(client, (acc ? `2y_${acc}` : '2y')), + _3y: createMetricPattern4(client, (acc ? `3y_${acc}` : '3y')), + _4y: createMetricPattern4(client, (acc ? `4y_${acc}` : '4y')), + _5y: createMetricPattern4(client, (acc ? `5y_${acc}` : '5y')), + _6y: createMetricPattern4(client, (acc ? `6y_${acc}` : '6y')), + _8y: createMetricPattern4(client, (acc ? `8y_${acc}` : '8y')), + }; +} + +/** + * @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, acc), + realized: createRealizedPattern(client, acc), + relative: createRelativePattern4(client, _m(acc, 'supply_in')), + supply: createSupplyPattern2(client, _m(acc, 'supply')), unrealized: createUnrealizedPattern(client, acc), }; } @@ -3501,57 +3036,42 @@ function create_10yTo12yPattern(client, acc) { */ 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"), - ), + 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} PeriodCagrPattern - * @property {MetricPattern4} _10y - * @property {MetricPattern4} _2y - * @property {MetricPattern4} _3y - * @property {MetricPattern4} _4y - * @property {MetricPattern4} _5y - * @property {MetricPattern4} _6y - * @property {MetricPattern4} _8y + * @typedef {Object} _100btcPattern + * @property {ActivityPattern2} activity + * @property {CostBasisPattern} costBasis + * @property {OutputsPattern} outputs + * @property {RealizedPattern} realized + * @property {RelativePattern} relative + * @property {SupplyPattern2} supply + * @property {UnrealizedPattern} unrealized */ /** - * Create a PeriodCagrPattern pattern node + * Create a _100btcPattern pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {PeriodCagrPattern} + * @returns {_100btcPattern} */ -function createPeriodCagrPattern(client, acc) { +function create_100btcPattern(client, acc) { return { - _10y: createMetricPattern4(client, acc ? `10y_${acc}` : "10y"), - _2y: createMetricPattern4(client, acc ? `2y_${acc}` : "2y"), - _3y: createMetricPattern4(client, acc ? `3y_${acc}` : "3y"), - _4y: createMetricPattern4(client, acc ? `4y_${acc}` : "4y"), - _5y: createMetricPattern4(client, acc ? `5y_${acc}` : "5y"), - _6y: createMetricPattern4(client, acc ? `6y_${acc}` : "6y"), - _8y: createMetricPattern4(client, acc ? `8y_${acc}` : "8y"), + activity: createActivityPattern2(client, acc), + costBasis: createCostBasisPattern(client, acc), + outputs: createOutputsPattern(client, acc), + realized: createRealizedPattern(client, acc), + relative: createRelativePattern(client, acc), + supply: createSupplyPattern2(client, _m(acc, 'supply')), + unrealized: createUnrealizedPattern(client, acc), }; } @@ -3579,7 +3099,7 @@ function create_10yPattern(client, acc) { outputs: createOutputsPattern(client, acc), realized: createRealizedPattern4(client, acc), relative: createRelativePattern(client, acc), - supply: createSupplyPattern2(client, _m(acc, "supply")), + supply: createSupplyPattern2(client, _m(acc, 'supply')), unrealized: createUnrealizedPattern(client, acc), }; } @@ -3601,23 +3121,11 @@ function create_10yPattern(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')), }; } @@ -3639,10 +3147,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")), + close: createMetricPattern1(client, _m(acc, 'close')), + high: createMetricPattern1(client, _m(acc, 'high')), + low: createMetricPattern1(client, _m(acc, 'low')), + open: createMetricPattern1(client, _m(acc, 'open')), }; } @@ -3661,33 +3169,12 @@ function createSplitPattern2(client, acc) { */ function createCoinbasePattern(client, acc) { return { - bitcoin: createFullnessPattern(client, _m(acc, "btc")), - dollars: createDollarsPattern(client, _m(acc, "usd")), + bitcoin: createFullnessPattern(client, _m(acc, 'btc')), + dollars: createDollarsPattern(client, _m(acc, 'usd')), sats: createDollarsPattern(client, acc), }; } -/** - * @typedef {Object} CoinbasePattern2 - * @property {BlockCountPattern} bitcoin - * @property {BlockCountPattern} dollars - * @property {BlockCountPattern} sats - */ - -/** - * Create a CoinbasePattern2 pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {CoinbasePattern2} - */ -function createCoinbasePattern2(client, acc) { - return { - bitcoin: createBlockCountPattern(client, _m(acc, "btc")), - dollars: createBlockCountPattern(client, _m(acc, "usd")), - sats: createBlockCountPattern(client, acc), - }; -} - /** * @typedef {Object} ActiveSupplyPattern * @property {MetricPattern1} bitcoin @@ -3703,8 +3190,8 @@ function createCoinbasePattern2(client, acc) { */ function createActiveSupplyPattern(client, acc) { return { - bitcoin: createMetricPattern1(client, _m(acc, "btc")), - dollars: createMetricPattern1(client, _m(acc, "usd")), + bitcoin: createMetricPattern1(client, _m(acc, 'btc')), + dollars: createMetricPattern1(client, _m(acc, 'usd')), sats: createMetricPattern1(client, acc), }; } @@ -3724,30 +3211,30 @@ function createActiveSupplyPattern(client, acc) { */ function createUnclaimedRewardsPattern(client, acc) { return { - bitcoin: createBitcoinPattern(client, _m(acc, "btc")), - dollars: createBlockCountPattern(client, _m(acc, "usd")), + bitcoin: createBitcoinPattern(client, _m(acc, 'btc')), + dollars: createBlockCountPattern(client, _m(acc, 'usd')), sats: createBlockCountPattern(client, acc), }; } /** - * @typedef {Object} _2015Pattern - * @property {MetricPattern4} bitcoin - * @property {MetricPattern4} dollars - * @property {MetricPattern4} sats + * @typedef {Object} SegwitAdoptionPattern + * @property {MetricPattern11} base + * @property {MetricPattern2} cumulative + * @property {MetricPattern2} sum */ /** - * Create a _2015Pattern pattern node + * Create a SegwitAdoptionPattern pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {_2015Pattern} + * @returns {SegwitAdoptionPattern} */ -function create_2015Pattern(client, acc) { +function createSegwitAdoptionPattern(client, acc) { return { - bitcoin: createMetricPattern4(client, _m(acc, "btc")), - dollars: createMetricPattern4(client, _m(acc, "usd")), - sats: createMetricPattern4(client, acc), + base: createMetricPattern11(client, acc), + cumulative: createMetricPattern2(client, _m(acc, 'cumulative')), + sum: createMetricPattern2(client, _m(acc, 'sum')), }; } @@ -3773,48 +3260,44 @@ function createCostBasisPattern2(client, basePath) { } /** - * @typedef {Object} SegwitAdoptionPattern - * @property {MetricPattern11} base - * @property {MetricPattern2} cumulative - * @property {MetricPattern2} sum + * @typedef {Object} CoinbasePattern2 + * @property {BlockCountPattern} bitcoin + * @property {BlockCountPattern} dollars + * @property {BlockCountPattern} sats */ /** - * Create a SegwitAdoptionPattern pattern node + * Create a CoinbasePattern2 pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {SegwitAdoptionPattern} + * @returns {CoinbasePattern2} */ -function createSegwitAdoptionPattern(client, acc) { +function createCoinbasePattern2(client, acc) { return { - base: createMetricPattern11(client, acc), - cumulative: createMetricPattern2(client, _m(acc, "cumulative")), - sum: createMetricPattern2(client, _m(acc, "sum")), + bitcoin: createBlockCountPattern(client, _m(acc, 'btc')), + dollars: createBlockCountPattern(client, _m(acc, 'usd')), + sats: createBlockCountPattern(client, acc), }; } /** - * @typedef {Object} RelativePattern4 - * @property {MetricPattern1} supplyInLossRelToOwnSupply - * @property {MetricPattern1} supplyInProfitRelToOwnSupply + * @typedef {Object} _2015Pattern + * @property {MetricPattern4} bitcoin + * @property {MetricPattern4} dollars + * @property {MetricPattern4} sats */ /** - * Create a RelativePattern4 pattern node + * Create a _2015Pattern pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {RelativePattern4} + * @returns {_2015Pattern} */ -function createRelativePattern4(client, acc) { +function create_2015Pattern(client, acc) { return { - supplyInLossRelToOwnSupply: createMetricPattern1( - client, - _m(acc, "loss_rel_to_own_supply"), - ), - supplyInProfitRelToOwnSupply: createMetricPattern1( - client, - _m(acc, "profit_rel_to_own_supply"), - ), + bitcoin: createMetricPattern4(client, _m(acc, 'btc')), + dollars: createMetricPattern4(client, _m(acc, 'usd')), + sats: createMetricPattern4(client, acc), }; } @@ -3832,30 +3315,11 @@ function createRelativePattern4(client, acc) { */ function createSupplyPattern2(client, acc) { return { - halved: createActiveSupplyPattern(client, _m(acc, "half")), + halved: createActiveSupplyPattern(client, _m(acc, 'half')), total: createActiveSupplyPattern(client, acc), }; } -/** - * @typedef {Object} CostBasisPattern - * @property {MetricPattern1} max - * @property {MetricPattern1} min - */ - -/** - * Create a CostBasisPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {CostBasisPattern} - */ -function createCostBasisPattern(client, acc) { - return { - max: createMetricPattern1(client, _m(acc, "max_cost_basis")), - min: createMetricPattern1(client, _m(acc, "min_cost_basis")), - }; -} - /** * @typedef {Object} _1dReturns1mSdPattern * @property {MetricPattern4} sd @@ -3870,29 +3334,46 @@ function createCostBasisPattern(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')), }; } /** - * @template T - * @typedef {Object} BlockCountPattern - * @property {MetricPattern1} cumulative - * @property {MetricPattern1} sum + * @typedef {Object} CostBasisPattern + * @property {MetricPattern1} max + * @property {MetricPattern1} min */ /** - * Create a BlockCountPattern pattern node - * @template T + * Create a CostBasisPattern pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated metric name - * @returns {BlockCountPattern} + * @returns {CostBasisPattern} */ -function createBlockCountPattern(client, acc) { +function createCostBasisPattern(client, acc) { return { - cumulative: createMetricPattern1(client, _m(acc, "cumulative")), - sum: createMetricPattern1(client, acc), + max: createMetricPattern1(client, _m(acc, 'max_cost_basis')), + min: createMetricPattern1(client, _m(acc, 'min_cost_basis')), + }; +} + +/** + * @typedef {Object} RelativePattern4 + * @property {MetricPattern1} supplyInLossRelToOwnSupply + * @property {MetricPattern1} supplyInProfitRelToOwnSupply + */ + +/** + * Create a RelativePattern4 pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {RelativePattern4} + */ +function createRelativePattern4(client, acc) { + return { + supplyInLossRelToOwnSupply: createMetricPattern1(client, _m(acc, 'loss_rel_to_own_supply')), + supplyInProfitRelToOwnSupply: createMetricPattern1(client, _m(acc, 'profit_rel_to_own_supply')), }; } @@ -3912,7 +3393,7 @@ function createBlockCountPattern(client, acc) { */ function createBitcoinPattern(client, acc) { return { - cumulative: createMetricPattern2(client, _m(acc, "cumulative")), + cumulative: createMetricPattern2(client, _m(acc, 'cumulative')), sum: createMetricPattern1(client, acc), }; } @@ -3938,6 +3419,27 @@ function createSatsPattern(client, basePath) { }; } +/** + * @template T + * @typedef {Object} BlockCountPattern + * @property {MetricPattern1} cumulative + * @property {MetricPattern1} sum + */ + +/** + * Create a BlockCountPattern pattern node + * @template T + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {BlockCountPattern} + */ +function createBlockCountPattern(client, acc) { + return { + cumulative: createMetricPattern1(client, _m(acc, 'cumulative')), + sum: createMetricPattern1(client, acc), + }; +} + /** * @typedef {Object} RealizedPriceExtraPattern * @property {MetricPattern4} ratio @@ -3951,7 +3453,7 @@ function createSatsPattern(client, basePath) { */ function createRealizedPriceExtraPattern(client, acc) { return { - ratio: createMetricPattern4(client, _m(acc, "ratio")), + ratio: createMetricPattern4(client, _m(acc, 'ratio')), }; } @@ -3968,7 +3470,7 @@ function createRealizedPriceExtraPattern(client, acc) { */ function createOutputsPattern(client, acc) { return { - utxoCount: createMetricPattern1(client, _m(acc, "utxo_count")), + utxoCount: createMetricPattern1(client, _m(acc, 'utxo_count')), }; } @@ -5420,868 +4922,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} */ ({ - long: { - id: "lth", - long: "Long Term Holders", - short: "LTH", - }, - short: { - id: "sth", - long: "Short Term Holders", - short: "STH", + "long": { + "id": "lth", + "long": "Long Term Holders", + "short": "LTH" }, + "short": { + "id": "sth", + "long": "Short Term Holders", + "short": "STH" + } }); EPOCH_NAMES = /** @type {const} */ ({ - _0: { - id: "epoch_0", - long: "Epoch 0", - short: "Epoch 0", + "_0": { + "id": "epoch_0", + "long": "Epoch 0", + "short": "Epoch 0" }, - _1: { - id: "epoch_1", - long: "Epoch 1", - short: "Epoch 1", + "_1": { + "id": "epoch_1", + "long": "Epoch 1", + "short": "Epoch 1" }, - _2: { - id: "epoch_2", - long: "Epoch 2", - short: "Epoch 2", + "_2": { + "id": "epoch_2", + "long": "Epoch 2", + "short": "Epoch 2" }, - _3: { - id: "epoch_3", - long: "Epoch 3", - short: "Epoch 3", - }, - _4: { - id: "epoch_4", - long: "Epoch 4", - short: "Epoch 4", + "_3": { + "id": "epoch_3", + "long": "Epoch 3", + "short": "Epoch 3" }, + "_4": { + "id": "epoch_4", + "long": "Epoch 4", + "short": "Epoch 4" + } }); YEAR_NAMES = /** @type {const} */ ({ - _2009: { - id: "year_2009", - long: "Year 2009", - short: "2009", + "_2009": { + "id": "year_2009", + "long": "Year 2009", + "short": "2009" }, - _2010: { - id: "year_2010", - long: "Year 2010", - short: "2010", + "_2010": { + "id": "year_2010", + "long": "Year 2010", + "short": "2010" }, - _2011: { - id: "year_2011", - long: "Year 2011", - short: "2011", + "_2011": { + "id": "year_2011", + "long": "Year 2011", + "short": "2011" }, - _2012: { - id: "year_2012", - long: "Year 2012", - short: "2012", + "_2012": { + "id": "year_2012", + "long": "Year 2012", + "short": "2012" }, - _2013: { - id: "year_2013", - long: "Year 2013", - short: "2013", + "_2013": { + "id": "year_2013", + "long": "Year 2013", + "short": "2013" }, - _2014: { - id: "year_2014", - long: "Year 2014", - short: "2014", + "_2014": { + "id": "year_2014", + "long": "Year 2014", + "short": "2014" }, - _2015: { - id: "year_2015", - long: "Year 2015", - short: "2015", + "_2015": { + "id": "year_2015", + "long": "Year 2015", + "short": "2015" }, - _2016: { - id: "year_2016", - long: "Year 2016", - short: "2016", + "_2016": { + "id": "year_2016", + "long": "Year 2016", + "short": "2016" }, - _2017: { - id: "year_2017", - long: "Year 2017", - short: "2017", + "_2017": { + "id": "year_2017", + "long": "Year 2017", + "short": "2017" }, - _2018: { - id: "year_2018", - long: "Year 2018", - short: "2018", + "_2018": { + "id": "year_2018", + "long": "Year 2018", + "short": "2018" }, - _2019: { - id: "year_2019", - long: "Year 2019", - short: "2019", + "_2019": { + "id": "year_2019", + "long": "Year 2019", + "short": "2019" }, - _2020: { - id: "year_2020", - long: "Year 2020", - short: "2020", + "_2020": { + "id": "year_2020", + "long": "Year 2020", + "short": "2020" }, - _2021: { - id: "year_2021", - long: "Year 2021", - short: "2021", + "_2021": { + "id": "year_2021", + "long": "Year 2021", + "short": "2021" }, - _2022: { - id: "year_2022", - long: "Year 2022", - short: "2022", + "_2022": { + "id": "year_2022", + "long": "Year 2022", + "short": "2022" }, - _2023: { - id: "year_2023", - long: "Year 2023", - short: "2023", + "_2023": { + "id": "year_2023", + "long": "Year 2023", + "short": "2023" }, - _2024: { - id: "year_2024", - long: "Year 2024", - short: "2024", + "_2024": { + "id": "year_2024", + "long": "Year 2024", + "short": "2024" }, - _2025: { - id: "year_2025", - long: "Year 2025", - short: "2025", - }, - _2026: { - id: "year_2026", - long: "Year 2026", - short: "2026", + "_2025": { + "id": "year_2025", + "long": "Year 2025", + "short": "2025" }, + "_2026": { + "id": "year_2026", + "long": "Year 2026", + "short": "2026" + } }); SPENDABLE_TYPE_NAMES = /** @type {const} */ ({ - empty: { - id: "empty_outputs", - long: "Empty Output", - short: "Empty", + "empty": { + "id": "empty_outputs", + "long": "Empty Output", + "short": "Empty" }, - p2a: { - id: "p2a", - long: "Pay to Anchor", - short: "P2A", + "p2a": { + "id": "p2a", + "long": "Pay to Anchor", + "short": "P2A" }, - p2ms: { - id: "p2ms", - long: "Pay to Multisig", - short: "P2MS", + "p2ms": { + "id": "p2ms", + "long": "Pay to Multisig", + "short": "P2MS" }, - p2pk33: { - id: "p2pk33", - long: "Pay to Public Key (33 bytes)", - short: "P2PK33", + "p2pk33": { + "id": "p2pk33", + "long": "Pay to Public Key (33 bytes)", + "short": "P2PK33" }, - p2pk65: { - id: "p2pk65", - long: "Pay to Public Key (65 bytes)", - short: "P2PK65", + "p2pk65": { + "id": "p2pk65", + "long": "Pay to Public Key (65 bytes)", + "short": "P2PK65" }, - p2pkh: { - id: "p2pkh", - long: "Pay to Public Key Hash", - short: "P2PKH", + "p2pkh": { + "id": "p2pkh", + "long": "Pay to Public Key Hash", + "short": "P2PKH" }, - p2sh: { - id: "p2sh", - long: "Pay to Script Hash", - short: "P2SH", + "p2sh": { + "id": "p2sh", + "long": "Pay to Script Hash", + "short": "P2SH" }, - p2tr: { - id: "p2tr", - long: "Pay to Taproot", - short: "P2TR", + "p2tr": { + "id": "p2tr", + "long": "Pay to Taproot", + "short": "P2TR" }, - p2wpkh: { - id: "p2wpkh", - long: "Pay to Witness Public Key Hash", - short: "P2WPKH", + "p2wpkh": { + "id": "p2wpkh", + "long": "Pay to Witness Public Key Hash", + "short": "P2WPKH" }, - p2wsh: { - id: "p2wsh", - long: "Pay to Witness Script Hash", - short: "P2WSH", - }, - unknown: { - id: "unknown_outputs", - long: "Unknown Output Type", - short: "Unknown", + "p2wsh": { + "id": "p2wsh", + "long": "Pay to Witness Script Hash", + "short": "P2WSH" }, + "unknown": { + "id": "unknown_outputs", + "long": "Unknown Output Type", + "short": "Unknown" + } }); AGE_RANGE_NAMES = /** @type {const} */ ({ - _10yTo12y: { - id: "at_least_10y_up_to_12y_old", - long: "10 to 12 Years Old", - short: "10y-12y", + "_10yTo12y": { + "id": "at_least_10y_up_to_12y_old", + "long": "10 to 12 Years Old", + "short": "10y-12y" }, - _12yTo15y: { - id: "at_least_12y_up_to_15y_old", - long: "12 to 15 Years Old", - short: "12y-15y", + "_12yTo15y": { + "id": "at_least_12y_up_to_15y_old", + "long": "12 to 15 Years Old", + "short": "12y-15y" }, - _1dTo1w: { - id: "at_least_1d_up_to_1w_old", - long: "1 Day to 1 Week Old", - short: "1d-1w", + "_1dTo1w": { + "id": "at_least_1d_up_to_1w_old", + "long": "1 Day to 1 Week Old", + "short": "1d-1w" }, - _1hTo1d: { - id: "at_least_1h_up_to_1d_old", - long: "1 Hour to 1 Day Old", - short: "1h-1d", + "_1hTo1d": { + "id": "at_least_1h_up_to_1d_old", + "long": "1 Hour to 1 Day Old", + "short": "1h-1d" }, - _1mTo2m: { - id: "at_least_1m_up_to_2m_old", - long: "1 to 2 Months Old", - short: "1m-2m", + "_1mTo2m": { + "id": "at_least_1m_up_to_2m_old", + "long": "1 to 2 Months Old", + "short": "1m-2m" }, - _1wTo1m: { - id: "at_least_1w_up_to_1m_old", - long: "1 Week to 1 Month Old", - short: "1w-1m", + "_1wTo1m": { + "id": "at_least_1w_up_to_1m_old", + "long": "1 Week to 1 Month Old", + "short": "1w-1m" }, - _1yTo2y: { - id: "at_least_1y_up_to_2y_old", - long: "1 to 2 Years Old", - short: "1y-2y", + "_1yTo2y": { + "id": "at_least_1y_up_to_2y_old", + "long": "1 to 2 Years Old", + "short": "1y-2y" }, - _2mTo3m: { - id: "at_least_2m_up_to_3m_old", - long: "2 to 3 Months Old", - short: "2m-3m", + "_2mTo3m": { + "id": "at_least_2m_up_to_3m_old", + "long": "2 to 3 Months Old", + "short": "2m-3m" }, - _2yTo3y: { - id: "at_least_2y_up_to_3y_old", - long: "2 to 3 Years Old", - short: "2y-3y", + "_2yTo3y": { + "id": "at_least_2y_up_to_3y_old", + "long": "2 to 3 Years Old", + "short": "2y-3y" }, - _3mTo4m: { - id: "at_least_3m_up_to_4m_old", - long: "3 to 4 Months Old", - short: "3m-4m", + "_3mTo4m": { + "id": "at_least_3m_up_to_4m_old", + "long": "3 to 4 Months Old", + "short": "3m-4m" }, - _3yTo4y: { - id: "at_least_3y_up_to_4y_old", - long: "3 to 4 Years Old", - short: "3y-4y", + "_3yTo4y": { + "id": "at_least_3y_up_to_4y_old", + "long": "3 to 4 Years Old", + "short": "3y-4y" }, - _4mTo5m: { - id: "at_least_4m_up_to_5m_old", - long: "4 to 5 Months Old", - short: "4m-5m", + "_4mTo5m": { + "id": "at_least_4m_up_to_5m_old", + "long": "4 to 5 Months Old", + "short": "4m-5m" }, - _4yTo5y: { - id: "at_least_4y_up_to_5y_old", - long: "4 to 5 Years Old", - short: "4y-5y", + "_4yTo5y": { + "id": "at_least_4y_up_to_5y_old", + "long": "4 to 5 Years Old", + "short": "4y-5y" }, - _5mTo6m: { - id: "at_least_5m_up_to_6m_old", - long: "5 to 6 Months Old", - short: "5m-6m", + "_5mTo6m": { + "id": "at_least_5m_up_to_6m_old", + "long": "5 to 6 Months Old", + "short": "5m-6m" }, - _5yTo6y: { - id: "at_least_5y_up_to_6y_old", - long: "5 to 6 Years Old", - short: "5y-6y", + "_5yTo6y": { + "id": "at_least_5y_up_to_6y_old", + "long": "5 to 6 Years Old", + "short": "5y-6y" }, - _6mTo1y: { - id: "at_least_6m_up_to_1y_old", - long: "6 Months to 1 Year Old", - short: "6m-1y", + "_6mTo1y": { + "id": "at_least_6m_up_to_1y_old", + "long": "6 Months to 1 Year Old", + "short": "6m-1y" }, - _6yTo7y: { - id: "at_least_6y_up_to_7y_old", - long: "6 to 7 Years Old", - short: "6y-7y", + "_6yTo7y": { + "id": "at_least_6y_up_to_7y_old", + "long": "6 to 7 Years Old", + "short": "6y-7y" }, - _7yTo8y: { - id: "at_least_7y_up_to_8y_old", - long: "7 to 8 Years Old", - short: "7y-8y", + "_7yTo8y": { + "id": "at_least_7y_up_to_8y_old", + "long": "7 to 8 Years Old", + "short": "7y-8y" }, - _8yTo10y: { - id: "at_least_8y_up_to_10y_old", - long: "8 to 10 Years Old", - short: "8y-10y", + "_8yTo10y": { + "id": "at_least_8y_up_to_10y_old", + "long": "8 to 10 Years Old", + "short": "8y-10y" }, - from15y: { - id: "at_least_15y_old", - long: "15+ Years Old", - short: "15y+", - }, - upTo1h: { - id: "up_to_1h_old", - long: "Up to 1 Hour Old", - short: "<1h", + "from15y": { + "id": "at_least_15y_old", + "long": "15+ Years Old", + "short": "15y+" }, + "upTo1h": { + "id": "up_to_1h_old", + "long": "Up to 1 Hour Old", + "short": "<1h" + } }); MAX_AGE_NAMES = /** @type {const} */ ({ - _10y: { - id: "up_to_10y_old", - long: "Up to 10 Years Old", - short: "<10y", + "_10y": { + "id": "up_to_10y_old", + "long": "Up to 10 Years Old", + "short": "<10y" }, - _12y: { - id: "up_to_12y_old", - long: "Up to 12 Years Old", - short: "<12y", + "_12y": { + "id": "up_to_12y_old", + "long": "Up to 12 Years Old", + "short": "<12y" }, - _15y: { - id: "up_to_15y_old", - long: "Up to 15 Years Old", - short: "<15y", + "_15y": { + "id": "up_to_15y_old", + "long": "Up to 15 Years Old", + "short": "<15y" }, - _1m: { - id: "up_to_1m_old", - long: "Up to 1 Month Old", - short: "<1m", + "_1m": { + "id": "up_to_1m_old", + "long": "Up to 1 Month Old", + "short": "<1m" }, - _1w: { - id: "up_to_1w_old", - long: "Up to 1 Week Old", - short: "<1w", + "_1w": { + "id": "up_to_1w_old", + "long": "Up to 1 Week Old", + "short": "<1w" }, - _1y: { - id: "up_to_1y_old", - long: "Up to 1 Year Old", - short: "<1y", + "_1y": { + "id": "up_to_1y_old", + "long": "Up to 1 Year Old", + "short": "<1y" }, - _2m: { - id: "up_to_2m_old", - long: "Up to 2 Months Old", - short: "<2m", + "_2m": { + "id": "up_to_2m_old", + "long": "Up to 2 Months Old", + "short": "<2m" }, - _2y: { - id: "up_to_2y_old", - long: "Up to 2 Years Old", - short: "<2y", + "_2y": { + "id": "up_to_2y_old", + "long": "Up to 2 Years Old", + "short": "<2y" }, - _3m: { - id: "up_to_3m_old", - long: "Up to 3 Months Old", - short: "<3m", + "_3m": { + "id": "up_to_3m_old", + "long": "Up to 3 Months Old", + "short": "<3m" }, - _3y: { - id: "up_to_3y_old", - long: "Up to 3 Years Old", - short: "<3y", + "_3y": { + "id": "up_to_3y_old", + "long": "Up to 3 Years Old", + "short": "<3y" }, - _4m: { - id: "up_to_4m_old", - long: "Up to 4 Months Old", - short: "<4m", + "_4m": { + "id": "up_to_4m_old", + "long": "Up to 4 Months Old", + "short": "<4m" }, - _4y: { - id: "up_to_4y_old", - long: "Up to 4 Years Old", - short: "<4y", + "_4y": { + "id": "up_to_4y_old", + "long": "Up to 4 Years Old", + "short": "<4y" }, - _5m: { - id: "up_to_5m_old", - long: "Up to 5 Months Old", - short: "<5m", + "_5m": { + "id": "up_to_5m_old", + "long": "Up to 5 Months Old", + "short": "<5m" }, - _5y: { - id: "up_to_5y_old", - long: "Up to 5 Years Old", - short: "<5y", + "_5y": { + "id": "up_to_5y_old", + "long": "Up to 5 Years Old", + "short": "<5y" }, - _6m: { - id: "up_to_6m_old", - long: "Up to 6 Months Old", - short: "<6m", + "_6m": { + "id": "up_to_6m_old", + "long": "Up to 6 Months Old", + "short": "<6m" }, - _6y: { - id: "up_to_6y_old", - long: "Up to 6 Years Old", - short: "<6y", + "_6y": { + "id": "up_to_6y_old", + "long": "Up to 6 Years Old", + "short": "<6y" }, - _7y: { - id: "up_to_7y_old", - long: "Up to 7 Years Old", - short: "<7y", - }, - _8y: { - id: "up_to_8y_old", - long: "Up to 8 Years Old", - short: "<8y", + "_7y": { + "id": "up_to_7y_old", + "long": "Up to 7 Years Old", + "short": "<7y" }, + "_8y": { + "id": "up_to_8y_old", + "long": "Up to 8 Years Old", + "short": "<8y" + } }); MIN_AGE_NAMES = /** @type {const} */ ({ - _10y: { - id: "at_least_10y_old", - long: "At Least 10 Years Old", - short: "10y+", + "_10y": { + "id": "at_least_10y_old", + "long": "At Least 10 Years Old", + "short": "10y+" }, - _12y: { - id: "at_least_12y_old", - long: "At Least 12 Years Old", - short: "12y+", + "_12y": { + "id": "at_least_12y_old", + "long": "At Least 12 Years Old", + "short": "12y+" }, - _1d: { - id: "at_least_1d_old", - long: "At Least 1 Day Old", - short: "1d+", + "_1d": { + "id": "at_least_1d_old", + "long": "At Least 1 Day Old", + "short": "1d+" }, - _1m: { - id: "at_least_1m_old", - long: "At Least 1 Month Old", - short: "1m+", + "_1m": { + "id": "at_least_1m_old", + "long": "At Least 1 Month Old", + "short": "1m+" }, - _1w: { - id: "at_least_1w_old", - long: "At Least 1 Week Old", - short: "1w+", + "_1w": { + "id": "at_least_1w_old", + "long": "At Least 1 Week Old", + "short": "1w+" }, - _1y: { - id: "at_least_1y_old", - long: "At Least 1 Year Old", - short: "1y+", + "_1y": { + "id": "at_least_1y_old", + "long": "At Least 1 Year Old", + "short": "1y+" }, - _2m: { - id: "at_least_2m_old", - long: "At Least 2 Months Old", - short: "2m+", + "_2m": { + "id": "at_least_2m_old", + "long": "At Least 2 Months Old", + "short": "2m+" }, - _2y: { - id: "at_least_2y_old", - long: "At Least 2 Years Old", - short: "2y+", + "_2y": { + "id": "at_least_2y_old", + "long": "At Least 2 Years Old", + "short": "2y+" }, - _3m: { - id: "at_least_3m_old", - long: "At Least 3 Months Old", - short: "3m+", + "_3m": { + "id": "at_least_3m_old", + "long": "At Least 3 Months Old", + "short": "3m+" }, - _3y: { - id: "at_least_3y_old", - long: "At Least 3 Years Old", - short: "3y+", + "_3y": { + "id": "at_least_3y_old", + "long": "At Least 3 Years Old", + "short": "3y+" }, - _4m: { - id: "at_least_4m_old", - long: "At Least 4 Months Old", - short: "4m+", + "_4m": { + "id": "at_least_4m_old", + "long": "At Least 4 Months Old", + "short": "4m+" }, - _4y: { - id: "at_least_4y_old", - long: "At Least 4 Years Old", - short: "4y+", + "_4y": { + "id": "at_least_4y_old", + "long": "At Least 4 Years Old", + "short": "4y+" }, - _5m: { - id: "at_least_5m_old", - long: "At Least 5 Months Old", - short: "5m+", + "_5m": { + "id": "at_least_5m_old", + "long": "At Least 5 Months Old", + "short": "5m+" }, - _5y: { - id: "at_least_5y_old", - long: "At Least 5 Years Old", - short: "5y+", + "_5y": { + "id": "at_least_5y_old", + "long": "At Least 5 Years Old", + "short": "5y+" }, - _6m: { - id: "at_least_6m_old", - long: "At Least 6 Months Old", - short: "6m+", + "_6m": { + "id": "at_least_6m_old", + "long": "At Least 6 Months Old", + "short": "6m+" }, - _6y: { - id: "at_least_6y_old", - long: "At Least 6 Years Old", - short: "6y+", + "_6y": { + "id": "at_least_6y_old", + "long": "At Least 6 Years Old", + "short": "6y+" }, - _7y: { - id: "at_least_7y_old", - long: "At Least 7 Years Old", - short: "7y+", - }, - _8y: { - id: "at_least_8y_old", - long: "At Least 8 Years Old", - short: "8y+", + "_7y": { + "id": "at_least_7y_old", + "long": "At Least 7 Years Old", + "short": "7y+" }, + "_8y": { + "id": "at_least_8y_old", + "long": "At Least 8 Years Old", + "short": "8y+" + } }); AMOUNT_RANGE_NAMES = /** @type {const} */ ({ - _0sats: { - id: "with_0sats", - long: "0 Sats", - short: "0 sats", + "_0sats": { + "id": "with_0sats", + "long": "0 Sats", + "short": "0 sats" }, - _100btcTo1kBtc: { - id: "above_100btc_under_1k_btc", - long: "100 to 1K BTC", - short: "100-1k BTC", + "_100btcTo1kBtc": { + "id": "above_100btc_under_1k_btc", + "long": "100 to 1K BTC", + "short": "100-1k BTC" }, - _100kBtcOrMore: { - id: "above_100k_btc", - long: "100K+ BTC", - short: "100k+ BTC", + "_100kBtcOrMore": { + "id": "above_100k_btc", + "long": "100K+ BTC", + "short": "100k+ BTC" }, - _100kSatsTo1mSats: { - id: "above_100k_sats_under_1m_sats", - long: "100K to 1M Sats", - short: "100k-1M sats", + "_100kSatsTo1mSats": { + "id": "above_100k_sats_under_1m_sats", + "long": "100K to 1M Sats", + "short": "100k-1M sats" }, - _100satsTo1kSats: { - id: "above_100sats_under_1k_sats", - long: "100 to 1K Sats", - short: "100-1k sats", + "_100satsTo1kSats": { + "id": "above_100sats_under_1k_sats", + "long": "100 to 1K Sats", + "short": "100-1k sats" }, - _10btcTo100btc: { - id: "above_10btc_under_100btc", - long: "10 to 100 BTC", - short: "10-100 BTC", + "_10btcTo100btc": { + "id": "above_10btc_under_100btc", + "long": "10 to 100 BTC", + "short": "10-100 BTC" }, - _10kBtcTo100kBtc: { - id: "above_10k_btc_under_100k_btc", - long: "10K to 100K BTC", - short: "10k-100k BTC", + "_10kBtcTo100kBtc": { + "id": "above_10k_btc_under_100k_btc", + "long": "10K to 100K BTC", + "short": "10k-100k BTC" }, - _10kSatsTo100kSats: { - id: "above_10k_sats_under_100k_sats", - long: "10K to 100K Sats", - short: "10k-100k sats", + "_10kSatsTo100kSats": { + "id": "above_10k_sats_under_100k_sats", + "long": "10K to 100K Sats", + "short": "10k-100k sats" }, - _10mSatsTo1btc: { - id: "above_10m_sats_under_1btc", - long: "0.1 to 1 BTC", - short: "0.1-1 BTC", + "_10mSatsTo1btc": { + "id": "above_10m_sats_under_1btc", + "long": "0.1 to 1 BTC", + "short": "0.1-1 BTC" }, - _10satsTo100sats: { - id: "above_10sats_under_100sats", - long: "10 to 100 Sats", - short: "10-100 sats", + "_10satsTo100sats": { + "id": "above_10sats_under_100sats", + "long": "10 to 100 Sats", + "short": "10-100 sats" }, - _1btcTo10btc: { - id: "above_1btc_under_10btc", - long: "1 to 10 BTC", - short: "1-10 BTC", + "_1btcTo10btc": { + "id": "above_1btc_under_10btc", + "long": "1 to 10 BTC", + "short": "1-10 BTC" }, - _1kBtcTo10kBtc: { - id: "above_1k_btc_under_10k_btc", - long: "1K to 10K BTC", - short: "1k-10k BTC", + "_1kBtcTo10kBtc": { + "id": "above_1k_btc_under_10k_btc", + "long": "1K to 10K BTC", + "short": "1k-10k BTC" }, - _1kSatsTo10kSats: { - id: "above_1k_sats_under_10k_sats", - long: "1K to 10K Sats", - short: "1k-10k sats", + "_1kSatsTo10kSats": { + "id": "above_1k_sats_under_10k_sats", + "long": "1K to 10K Sats", + "short": "1k-10k sats" }, - _1mSatsTo10mSats: { - id: "above_1m_sats_under_10m_sats", - long: "1M to 10M Sats", - short: "1M-10M sats", - }, - _1satTo10sats: { - id: "above_1sat_under_10sats", - long: "1 to 10 Sats", - short: "1-10 sats", + "_1mSatsTo10mSats": { + "id": "above_1m_sats_under_10m_sats", + "long": "1M to 10M Sats", + "short": "1M-10M sats" }, + "_1satTo10sats": { + "id": "above_1sat_under_10sats", + "long": "1 to 10 Sats", + "short": "1-10 sats" + } }); GE_AMOUNT_NAMES = /** @type {const} */ ({ - _100btc: { - id: "above_100btc", - long: "Above 100 BTC", - short: "100+ BTC", + "_100btc": { + "id": "above_100btc", + "long": "Above 100 BTC", + "short": "100+ BTC" }, - _100kSats: { - id: "above_100k_sats", - long: "Above 100K Sats", - short: "100k+ sats", + "_100kSats": { + "id": "above_100k_sats", + "long": "Above 100K Sats", + "short": "100k+ sats" }, - _100sats: { - id: "above_100sats", - long: "Above 100 Sats", - short: "100+ sats", + "_100sats": { + "id": "above_100sats", + "long": "Above 100 Sats", + "short": "100+ sats" }, - _10btc: { - id: "above_10btc", - long: "Above 10 BTC", - short: "10+ BTC", + "_10btc": { + "id": "above_10btc", + "long": "Above 10 BTC", + "short": "10+ BTC" }, - _10kBtc: { - id: "above_10k_btc", - long: "Above 10K BTC", - short: "10k+ BTC", + "_10kBtc": { + "id": "above_10k_btc", + "long": "Above 10K BTC", + "short": "10k+ BTC" }, - _10kSats: { - id: "above_10k_sats", - long: "Above 10K Sats", - short: "10k+ sats", + "_10kSats": { + "id": "above_10k_sats", + "long": "Above 10K Sats", + "short": "10k+ sats" }, - _10mSats: { - id: "above_10m_sats", - long: "Above 0.1 BTC", - short: "0.1+ BTC", + "_10mSats": { + "id": "above_10m_sats", + "long": "Above 0.1 BTC", + "short": "0.1+ BTC" }, - _10sats: { - id: "above_10sats", - long: "Above 10 Sats", - short: "10+ sats", + "_10sats": { + "id": "above_10sats", + "long": "Above 10 Sats", + "short": "10+ sats" }, - _1btc: { - id: "above_1btc", - long: "Above 1 BTC", - short: "1+ BTC", + "_1btc": { + "id": "above_1btc", + "long": "Above 1 BTC", + "short": "1+ BTC" }, - _1kBtc: { - id: "above_1k_btc", - long: "Above 1K BTC", - short: "1k+ BTC", + "_1kBtc": { + "id": "above_1k_btc", + "long": "Above 1K BTC", + "short": "1k+ BTC" }, - _1kSats: { - id: "above_1k_sats", - long: "Above 1K Sats", - short: "1k+ sats", + "_1kSats": { + "id": "above_1k_sats", + "long": "Above 1K Sats", + "short": "1k+ sats" }, - _1mSats: { - id: "above_1m_sats", - long: "Above 1M Sats", - short: "1M+ sats", - }, - _1sat: { - id: "above_1sat", - long: "Above 1 Sat", - short: "1+ sats", + "_1mSats": { + "id": "above_1m_sats", + "long": "Above 1M Sats", + "short": "1M+ sats" }, + "_1sat": { + "id": "above_1sat", + "long": "Above 1 Sat", + "short": "1+ sats" + } }); LT_AMOUNT_NAMES = /** @type {const} */ ({ - _100btc: { - id: "under_100btc", - long: "Under 100 BTC", - short: "<100 BTC", + "_100btc": { + "id": "under_100btc", + "long": "Under 100 BTC", + "short": "<100 BTC" }, - _100kBtc: { - id: "under_100k_btc", - long: "Under 100K BTC", - short: "<100k BTC", + "_100kBtc": { + "id": "under_100k_btc", + "long": "Under 100K BTC", + "short": "<100k BTC" }, - _100kSats: { - id: "under_100k_sats", - long: "Under 100K Sats", - short: "<100k sats", + "_100kSats": { + "id": "under_100k_sats", + "long": "Under 100K Sats", + "short": "<100k sats" }, - _100sats: { - id: "under_100sats", - long: "Under 100 Sats", - short: "<100 sats", + "_100sats": { + "id": "under_100sats", + "long": "Under 100 Sats", + "short": "<100 sats" }, - _10btc: { - id: "under_10btc", - long: "Under 10 BTC", - short: "<10 BTC", + "_10btc": { + "id": "under_10btc", + "long": "Under 10 BTC", + "short": "<10 BTC" }, - _10kBtc: { - id: "under_10k_btc", - long: "Under 10K BTC", - short: "<10k BTC", + "_10kBtc": { + "id": "under_10k_btc", + "long": "Under 10K BTC", + "short": "<10k BTC" }, - _10kSats: { - id: "under_10k_sats", - long: "Under 10K Sats", - short: "<10k sats", + "_10kSats": { + "id": "under_10k_sats", + "long": "Under 10K Sats", + "short": "<10k sats" }, - _10mSats: { - id: "under_10m_sats", - long: "Under 0.1 BTC", - short: "<0.1 BTC", + "_10mSats": { + "id": "under_10m_sats", + "long": "Under 0.1 BTC", + "short": "<0.1 BTC" }, - _10sats: { - id: "under_10sats", - long: "Under 10 Sats", - short: "<10 sats", + "_10sats": { + "id": "under_10sats", + "long": "Under 10 Sats", + "short": "<10 sats" }, - _1btc: { - id: "under_1btc", - long: "Under 1 BTC", - short: "<1 BTC", + "_1btc": { + "id": "under_1btc", + "long": "Under 1 BTC", + "short": "<1 BTC" }, - _1kBtc: { - id: "under_1k_btc", - long: "Under 1K BTC", - short: "<1k BTC", + "_1kBtc": { + "id": "under_1k_btc", + "long": "Under 1K BTC", + "short": "<1k BTC" }, - _1kSats: { - id: "under_1k_sats", - long: "Under 1K Sats", - short: "<1k sats", - }, - _1mSats: { - id: "under_1m_sats", - long: "Under 1M Sats", - short: "<1M sats", + "_1kSats": { + "id": "under_1k_sats", + "long": "Under 1K Sats", + "short": "<1k sats" }, + "_1mSats": { + "id": "under_1m_sats", + "long": "Under 1M Sats", + "short": "<1M sats" + } }); /** @@ -6290,7 +5792,7 @@ class BrkClient extends BrkClientBase { constructor(options) { super(options); /** @type {CatalogTree} */ - this.tree = this._buildTree(""); + this.tree = this._buildTree(''); } /** @@ -6301,1390 +5803,1066 @@ 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: { - average: createMetricPattern2(this, "block_interval_average"), - base: createMetricPattern11(this, "block_interval"), - max: createMetricPattern2(this, "block_interval_max"), - median: createMetricPattern6(this, "block_interval_median"), - min: createMetricPattern2(this, "block_interval_min"), - pct10: createMetricPattern6(this, "block_interval_pct10"), - pct25: createMetricPattern6(this, "block_interval_pct25"), - pct75: createMetricPattern6(this, "block_interval_pct75"), - pct90: createMetricPattern6(this, "block_interval_pct90"), + average: createMetricPattern2(this, 'block_interval_average'), + base: createMetricPattern11(this, 'block_interval'), + max: createMetricPattern2(this, 'block_interval_max'), + median: createMetricPattern6(this, 'block_interval_median'), + min: createMetricPattern2(this, 'block_interval_min'), + pct10: createMetricPattern6(this, 'block_interval_pct10'), + pct25: createMetricPattern6(this, 'block_interval_pct25'), + pct75: createMetricPattern6(this, 'block_interval_pct75'), + pct90: createMetricPattern6(this, 'block_interval_pct90'), }, 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"), - dateFixed: createMetricPattern11(this, "date_fixed"), - timestamp: createMetricPattern1(this, "timestamp"), - timestampFixed: createMetricPattern11(this, "timestamp_fixed"), + date: createMetricPattern11(this, 'date'), + dateFixed: createMetricPattern11(this, 'date_fixed'), + timestamp: createMetricPattern1(this, 'timestamp'), + timestampFixed: createMetricPattern11(this, 'timestamp_fixed'), }, - totalSize: createMetricPattern11(this, "total_size"), - vbytes: createDollarsPattern(this, "block_vbytes"), - weight: createDollarsPattern(this, ""), + totalSize: createMetricPattern11(this, 'total_size'), + vbytes: createDollarsPattern(this, 'block_vbytes'), + weight: createDollarsPattern(this, 'block_weight_average'), }, 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: 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", - ), + 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: { - all: createMetricPattern1(this, "addr_count"), - p2a: createMetricPattern1(this, "p2a_addr_count"), - p2pk33: createMetricPattern1(this, "p2pk33_addr_count"), - p2pk65: createMetricPattern1(this, "p2pk65_addr_count"), - p2pkh: createMetricPattern1(this, "p2pkh_addr_count"), - p2sh: createMetricPattern1(this, "p2sh_addr_count"), - p2tr: createMetricPattern1(this, "p2tr_addr_count"), - p2wpkh: createMetricPattern1(this, "p2wpkh_addr_count"), - p2wsh: createMetricPattern1(this, "p2wsh_addr_count"), + all: createMetricPattern1(this, 'addr_count'), + p2a: createMetricPattern1(this, 'p2a_addr_count'), + p2pk33: createMetricPattern1(this, 'p2pk33_addr_count'), + p2pk65: createMetricPattern1(this, 'p2pk65_addr_count'), + p2pkh: createMetricPattern1(this, 'p2pkh_addr_count'), + p2sh: createMetricPattern1(this, 'p2sh_addr_count'), + p2tr: createMetricPattern1(this, 'p2tr_addr_count'), + p2wpkh: createMetricPattern1(this, 'p2wpkh_addr_count'), + p2wsh: createMetricPattern1(this, 'p2wsh_addr_count'), }, addressCohorts: { amountRange: { - _0sats: create_0satsPattern(this, "addrs_with_0sats"), - _100btcTo1kBtc: create_0satsPattern( - this, - "addrs_above_100btc_under_1k_btc", - ), - _100kBtcOrMore: create_0satsPattern(this, "addrs_above_100k_btc"), - _100kSatsTo1mSats: create_0satsPattern( - this, - "addrs_above_100k_sats_under_1m_sats", - ), - _100satsTo1kSats: create_0satsPattern( - this, - "addrs_above_100sats_under_1k_sats", - ), - _10btcTo100btc: create_0satsPattern( - this, - "addrs_above_10btc_under_100btc", - ), - _10kBtcTo100kBtc: create_0satsPattern( - this, - "addrs_above_10k_btc_under_100k_btc", - ), - _10kSatsTo100kSats: create_0satsPattern( - this, - "addrs_above_10k_sats_under_100k_sats", - ), - _10mSatsTo1btc: create_0satsPattern( - this, - "addrs_above_10m_sats_under_1btc", - ), - _10satsTo100sats: create_0satsPattern( - this, - "addrs_above_10sats_under_100sats", - ), - _1btcTo10btc: create_0satsPattern( - this, - "addrs_above_1btc_under_10btc", - ), - _1kBtcTo10kBtc: create_0satsPattern( - this, - "addrs_above_1k_btc_under_10k_btc", - ), - _1kSatsTo10kSats: create_0satsPattern( - this, - "addrs_above_1k_sats_under_10k_sats", - ), - _1mSatsTo10mSats: create_0satsPattern( - this, - "addrs_above_1m_sats_under_10m_sats", - ), - _1satTo10sats: create_0satsPattern( - this, - "addrs_above_1sat_under_10sats", - ), + _0sats: 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: create_0satsPattern(this, "addrs_above_100btc"), - _100kSats: create_0satsPattern(this, "addrs_above_100k_sats"), - _100sats: create_0satsPattern(this, "addrs_above_100sats"), - _10btc: create_0satsPattern(this, "addrs_above_10btc"), - _10kBtc: create_0satsPattern(this, "addrs_above_10k_btc"), - _10kSats: create_0satsPattern(this, "addrs_above_10k_sats"), - _10mSats: create_0satsPattern(this, "addrs_above_10m_sats"), - _10sats: create_0satsPattern(this, "addrs_above_10sats"), - _1btc: create_0satsPattern(this, "addrs_above_1btc"), - _1kBtc: create_0satsPattern(this, "addrs_above_1k_btc"), - _1kSats: create_0satsPattern(this, "addrs_above_1k_sats"), - _1mSats: create_0satsPattern(this, "addrs_above_1m_sats"), - _1sat: create_0satsPattern(this, "addrs_above_1sat"), + _100btc: 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: create_0satsPattern(this, "addrs_under_100btc"), - _100kBtc: create_0satsPattern(this, "addrs_under_100k_btc"), - _100kSats: create_0satsPattern(this, "addrs_under_100k_sats"), - _100sats: create_0satsPattern(this, "addrs_under_100sats"), - _10btc: create_0satsPattern(this, "addrs_under_10btc"), - _10kBtc: create_0satsPattern(this, "addrs_under_10k_btc"), - _10kSats: create_0satsPattern(this, "addrs_under_10k_sats"), - _10mSats: create_0satsPattern(this, "addrs_under_10m_sats"), - _10sats: create_0satsPattern(this, "addrs_under_10sats"), - _1btc: create_0satsPattern(this, "addrs_under_1btc"), - _1kBtc: create_0satsPattern(this, "addrs_under_1k_btc"), - _1kSats: create_0satsPattern(this, "addrs_under_1k_sats"), - _1mSats: create_0satsPattern(this, "addrs_under_1m_sats"), + _100btc: 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"), + chainState: createMetricPattern11(this, 'chain'), emptyAddrCount: { - all: createMetricPattern1(this, "empty_addr_count"), - p2a: createMetricPattern1(this, "p2a_empty_addr_count"), - p2pk33: createMetricPattern1(this, "p2pk33_empty_addr_count"), - p2pk65: createMetricPattern1(this, "p2pk65_empty_addr_count"), - p2pkh: createMetricPattern1(this, "p2pkh_empty_addr_count"), - p2sh: createMetricPattern1(this, "p2sh_empty_addr_count"), - p2tr: createMetricPattern1(this, "p2tr_empty_addr_count"), - p2wpkh: createMetricPattern1(this, "p2wpkh_empty_addr_count"), - p2wsh: createMetricPattern1(this, "p2wsh_empty_addr_count"), + all: createMetricPattern1(this, 'empty_addr_count'), + p2a: createMetricPattern1(this, 'p2a_empty_addr_count'), + p2pk33: createMetricPattern1(this, 'p2pk33_empty_addr_count'), + p2pk65: createMetricPattern1(this, 'p2pk65_empty_addr_count'), + p2pkh: createMetricPattern1(this, 'p2pkh_empty_addr_count'), + p2sh: createMetricPattern1(this, 'p2sh_empty_addr_count'), + p2tr: createMetricPattern1(this, 'p2tr_empty_addr_count'), + p2wpkh: createMetricPattern1(this, 'p2wpkh_empty_addr_count'), + p2wsh: createMetricPattern1(this, 'p2wsh_empty_addr_count'), }, - emptyaddressindex: createMetricPattern32(this, "emptyaddressindex"), - loadedaddressindex: createMetricPattern31(this, "loadedaddressindex"), + emptyaddressindex: createMetricPattern32(this, 'emptyaddressindex'), + loadedaddressindex: createMetricPattern31(this, 'loadedaddressindex'), utxoCohorts: { ageRange: { - _10yTo12y: create_10yTo12yPattern( - this, - "utxos_at_least_10y_up_to_12y_old", - ), - _12yTo15y: create_10yTo12yPattern( - this, - "utxos_at_least_12y_up_to_15y_old", - ), - _1dTo1w: create_10yTo12yPattern( - this, - "utxos_at_least_1d_up_to_1w_old", - ), - _1hTo1d: create_10yTo12yPattern( - this, - "utxos_at_least_1h_up_to_1d_old", - ), - _1mTo2m: create_10yTo12yPattern( - this, - "utxos_at_least_1m_up_to_2m_old", - ), - _1wTo1m: create_10yTo12yPattern( - this, - "utxos_at_least_1w_up_to_1m_old", - ), - _1yTo2y: create_10yTo12yPattern( - this, - "utxos_at_least_1y_up_to_2y_old", - ), - _2mTo3m: create_10yTo12yPattern( - this, - "utxos_at_least_2m_up_to_3m_old", - ), - _2yTo3y: create_10yTo12yPattern( - this, - "utxos_at_least_2y_up_to_3y_old", - ), - _3mTo4m: create_10yTo12yPattern( - this, - "utxos_at_least_3m_up_to_4m_old", - ), - _3yTo4y: create_10yTo12yPattern( - this, - "utxos_at_least_3y_up_to_4y_old", - ), - _4mTo5m: create_10yTo12yPattern( - this, - "utxos_at_least_4m_up_to_5m_old", - ), - _4yTo5y: create_10yTo12yPattern( - this, - "utxos_at_least_4y_up_to_5y_old", - ), - _5mTo6m: create_10yTo12yPattern( - this, - "utxos_at_least_5m_up_to_6m_old", - ), - _5yTo6y: create_10yTo12yPattern( - this, - "utxos_at_least_5y_up_to_6y_old", - ), - _6mTo1y: create_10yTo12yPattern( - this, - "utxos_at_least_6m_up_to_1y_old", - ), - _6yTo7y: create_10yTo12yPattern( - this, - "utxos_at_least_6y_up_to_7y_old", - ), - _7yTo8y: create_10yTo12yPattern( - this, - "utxos_at_least_7y_up_to_8y_old", - ), - _8yTo10y: create_10yTo12yPattern( - this, - "utxos_at_least_8y_up_to_10y_old", - ), - from15y: create_10yTo12yPattern(this, "utxos_at_least_15y_old"), - upTo1h: create_10yTo12yPattern(this, "utxos_up_to_1h_old"), + _10yTo12y: 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: createActivityPattern2(this, ""), + activity: createActivityPattern2(this, 'coinblocks_destroyed_cumulative'), costBasis: { - max: createMetricPattern1(this, "max_cost_basis"), - min: createMetricPattern1(this, "min_cost_basis"), - percentiles: createPercentilesPattern(this, "cost_basis"), + 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, ""), + outputs: createOutputsPattern(this, 'utxo_count'), + realized: createRealizedPattern3(this, 'adjusted_sopr'), 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", - ), + 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, ""), + supply: createSupplyPattern2(this, 'supply'), + unrealized: createUnrealizedPattern(this, 'neg_unrealized_loss'), }, amountRange: { - _0sats: create_0satsPattern2(this, "utxos_with_0sats"), - _100btcTo1kBtc: create_0satsPattern2( - this, - "utxos_above_100btc_under_1k_btc", - ), - _100kBtcOrMore: create_0satsPattern2(this, "utxos_above_100k_btc"), - _100kSatsTo1mSats: create_0satsPattern2( - this, - "utxos_above_100k_sats_under_1m_sats", - ), - _100satsTo1kSats: create_0satsPattern2( - this, - "utxos_above_100sats_under_1k_sats", - ), - _10btcTo100btc: create_0satsPattern2( - this, - "utxos_above_10btc_under_100btc", - ), - _10kBtcTo100kBtc: create_0satsPattern2( - this, - "utxos_above_10k_btc_under_100k_btc", - ), - _10kSatsTo100kSats: create_0satsPattern2( - this, - "utxos_above_10k_sats_under_100k_sats", - ), - _10mSatsTo1btc: create_0satsPattern2( - this, - "utxos_above_10m_sats_under_1btc", - ), - _10satsTo100sats: create_0satsPattern2( - this, - "utxos_above_10sats_under_100sats", - ), - _1btcTo10btc: create_0satsPattern2( - this, - "utxos_above_1btc_under_10btc", - ), - _1kBtcTo10kBtc: create_0satsPattern2( - this, - "utxos_above_1k_btc_under_10k_btc", - ), - _1kSatsTo10kSats: create_0satsPattern2( - this, - "utxos_above_1k_sats_under_10k_sats", - ), - _1mSatsTo10mSats: create_0satsPattern2( - this, - "utxos_above_1m_sats_under_10m_sats", - ), - _1satTo10sats: create_0satsPattern2( - this, - "utxos_above_1sat_under_10sats", - ), + _0sats: 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: create_0satsPattern2(this, "epoch_0"), - _1: create_0satsPattern2(this, "epoch_1"), - _2: create_0satsPattern2(this, "epoch_2"), - _3: create_0satsPattern2(this, "epoch_3"), - _4: create_0satsPattern2(this, "epoch_4"), + _0: 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: create_100btcPattern(this, "utxos_above_100btc"), - _100kSats: create_100btcPattern(this, "utxos_above_100k_sats"), - _100sats: create_100btcPattern(this, "utxos_above_100sats"), - _10btc: create_100btcPattern(this, "utxos_above_10btc"), - _10kBtc: create_100btcPattern(this, "utxos_above_10k_btc"), - _10kSats: create_100btcPattern(this, "utxos_above_10k_sats"), - _10mSats: create_100btcPattern(this, "utxos_above_10m_sats"), - _10sats: create_100btcPattern(this, "utxos_above_10sats"), - _1btc: create_100btcPattern(this, "utxos_above_1btc"), - _1kBtc: create_100btcPattern(this, "utxos_above_1k_btc"), - _1kSats: create_100btcPattern(this, "utxos_above_1k_sats"), - _1mSats: create_100btcPattern(this, "utxos_above_1m_sats"), - _1sat: create_100btcPattern(this, "utxos_above_1sat"), + _100btc: 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: create_100btcPattern(this, "utxos_under_100btc"), - _100kBtc: create_100btcPattern(this, "utxos_under_100k_btc"), - _100kSats: create_100btcPattern(this, "utxos_under_100k_sats"), - _100sats: create_100btcPattern(this, "utxos_under_100sats"), - _10btc: create_100btcPattern(this, "utxos_under_10btc"), - _10kBtc: create_100btcPattern(this, "utxos_under_10k_btc"), - _10kSats: create_100btcPattern(this, "utxos_under_10k_sats"), - _10mSats: create_100btcPattern(this, "utxos_under_10m_sats"), - _10sats: create_100btcPattern(this, "utxos_under_10sats"), - _1btc: create_100btcPattern(this, "utxos_under_1btc"), - _1kBtc: create_100btcPattern(this, "utxos_under_1k_btc"), - _1kSats: create_100btcPattern(this, "utxos_under_1k_sats"), - _1mSats: create_100btcPattern(this, "utxos_under_1m_sats"), + _100btc: 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: create_10yPattern(this, "utxos_up_to_10y_old"), - _12y: create_10yPattern(this, "utxos_up_to_12y_old"), - _15y: create_10yPattern(this, "utxos_up_to_15y_old"), - _1m: create_10yPattern(this, "utxos_up_to_1m_old"), - _1w: create_10yPattern(this, "utxos_up_to_1w_old"), - _1y: create_10yPattern(this, "utxos_up_to_1y_old"), - _2m: create_10yPattern(this, "utxos_up_to_2m_old"), - _2y: create_10yPattern(this, "utxos_up_to_2y_old"), - _3m: create_10yPattern(this, "utxos_up_to_3m_old"), - _3y: create_10yPattern(this, "utxos_up_to_3y_old"), - _4m: create_10yPattern(this, "utxos_up_to_4m_old"), - _4y: create_10yPattern(this, "utxos_up_to_4y_old"), - _5m: create_10yPattern(this, "utxos_up_to_5m_old"), - _5y: create_10yPattern(this, "utxos_up_to_5y_old"), - _6m: create_10yPattern(this, "utxos_up_to_6m_old"), - _6y: create_10yPattern(this, "utxos_up_to_6y_old"), - _7y: create_10yPattern(this, "utxos_up_to_7y_old"), - _8y: create_10yPattern(this, "utxos_up_to_8y_old"), + _10y: 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: create_100btcPattern(this, "utxos_at_least_10y_old"), - _12y: create_100btcPattern(this, "utxos_at_least_12y_old"), - _1d: create_100btcPattern(this, "utxos_at_least_1d_old"), - _1m: create_100btcPattern(this, "utxos_at_least_1m_old"), - _1w: create_100btcPattern(this, "utxos_at_least_1w_old"), - _1y: create_100btcPattern(this, "utxos_at_least_1y_old"), - _2m: create_100btcPattern(this, "utxos_at_least_2m_old"), - _2y: create_100btcPattern(this, "utxos_at_least_2y_old"), - _3m: create_100btcPattern(this, "utxos_at_least_3m_old"), - _3y: create_100btcPattern(this, "utxos_at_least_3y_old"), - _4m: create_100btcPattern(this, "utxos_at_least_4m_old"), - _4y: create_100btcPattern(this, "utxos_at_least_4y_old"), - _5m: create_100btcPattern(this, "utxos_at_least_5m_old"), - _5y: create_100btcPattern(this, "utxos_at_least_5y_old"), - _6m: create_100btcPattern(this, "utxos_at_least_6m_old"), - _6y: create_100btcPattern(this, "utxos_at_least_6y_old"), - _7y: create_100btcPattern(this, "utxos_at_least_7y_old"), - _8y: create_100btcPattern(this, "utxos_at_least_8y_old"), + _10y: 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"), + 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"), + 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"), + outputs: createOutputsPattern(this, 'lth'), + realized: createRealizedPattern2(this, 'lth'), + relative: createRelativePattern5(this, 'lth'), + supply: createSupplyPattern2(this, 'lth_supply'), + unrealized: createUnrealizedPattern(this, 'lth'), }, short: { - activity: createActivityPattern2(this, "sth"), + 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"), + 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"), + outputs: createOutputsPattern(this, 'sth'), + realized: createRealizedPattern3(this, 'sth'), + relative: createRelativePattern5(this, 'sth'), + supply: createSupplyPattern2(this, 'sth_supply'), + unrealized: createUnrealizedPattern(this, 'sth'), }, }, type: { - empty: create_0satsPattern2(this, "empty_outputs"), - p2a: create_0satsPattern2(this, "p2a"), - p2ms: create_0satsPattern2(this, "p2ms"), - p2pk33: create_0satsPattern2(this, "p2pk33"), - p2pk65: create_0satsPattern2(this, "p2pk65"), - p2pkh: create_0satsPattern2(this, "p2pkh"), - p2sh: create_0satsPattern2(this, "p2sh"), - p2tr: create_0satsPattern2(this, "p2tr"), - p2wpkh: create_0satsPattern2(this, "p2wpkh"), - p2wsh: create_0satsPattern2(this, "p2wsh"), - unknown: create_0satsPattern2(this, "unknown_outputs"), + empty: 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: create_0satsPattern2(this, "year_2009"), - _2010: create_0satsPattern2(this, "year_2010"), - _2011: create_0satsPattern2(this, "year_2011"), - _2012: create_0satsPattern2(this, "year_2012"), - _2013: create_0satsPattern2(this, "year_2013"), - _2014: create_0satsPattern2(this, "year_2014"), - _2015: create_0satsPattern2(this, "year_2015"), - _2016: create_0satsPattern2(this, "year_2016"), - _2017: create_0satsPattern2(this, "year_2017"), - _2018: create_0satsPattern2(this, "year_2018"), - _2019: create_0satsPattern2(this, "year_2019"), - _2020: create_0satsPattern2(this, "year_2020"), - _2021: create_0satsPattern2(this, "year_2021"), - _2022: create_0satsPattern2(this, "year_2022"), - _2023: create_0satsPattern2(this, "year_2023"), - _2024: create_0satsPattern2(this, "year_2024"), - _2025: create_0satsPattern2(this, "year_2025"), - _2026: create_0satsPattern2(this, "year_2026"), + _2009: 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, "dateindex_date"), - firstHeight: createMetricPattern6(this, "dateindex_first_height"), - heightCount: createMetricPattern6(this, "dateindex_height_count"), - identity: createMetricPattern6(this, "dateindex"), - monthindex: createMetricPattern6(this, "dateindex_monthindex"), - weekindex: createMetricPattern6(this, "dateindex_weekindex"), + date: createMetricPattern6(this, 'dateindex_date'), + firstHeight: createMetricPattern6(this, 'dateindex_first_height'), + heightCount: createMetricPattern6(this, 'dateindex_height_count'), + identity: createMetricPattern6(this, 'dateindex'), + monthindex: createMetricPattern6(this, 'dateindex_monthindex'), + weekindex: createMetricPattern6(this, 'dateindex_weekindex'), }, decadeindex: { - firstYearindex: createMetricPattern7( - this, - "decadeindex_first_yearindex", - ), - identity: createMetricPattern7(this, "decadeindex"), - yearindexCount: createMetricPattern7( - this, - "decadeindex_yearindex_count", - ), + firstYearindex: createMetricPattern7(this, 'decadeindex_first_yearindex'), + identity: createMetricPattern7(this, 'decadeindex'), + yearindexCount: createMetricPattern7(this, 'decadeindex_yearindex_count'), }, difficultyepoch: { - firstHeight: createMetricPattern8( - this, - "difficultyepoch_first_height", - ), - heightCount: createMetricPattern8( - this, - "difficultyepoch_height_count", - ), - identity: createMetricPattern8(this, "difficultyepoch"), + firstHeight: createMetricPattern8(this, 'difficultyepoch_first_height'), + heightCount: createMetricPattern8(this, 'difficultyepoch_height_count'), + identity: createMetricPattern8(this, 'difficultyepoch'), }, halvingepoch: { - firstHeight: createMetricPattern10(this, "halvingepoch_first_height"), - identity: createMetricPattern10(this, "halvingepoch"), + firstHeight: createMetricPattern10(this, 'halvingepoch_first_height'), + identity: createMetricPattern10(this, 'halvingepoch'), }, height: { - dateindex: createMetricPattern11(this, "height_dateindex"), - difficultyepoch: createMetricPattern11( - this, - "height_difficultyepoch", - ), - halvingepoch: createMetricPattern11(this, "height_halvingepoch"), - identity: createMetricPattern11(this, "height"), - txindexCount: createMetricPattern11(this, "height_txindex_count"), + dateindex: createMetricPattern11(this, 'height_dateindex'), + difficultyepoch: createMetricPattern11(this, 'height_difficultyepoch'), + halvingepoch: createMetricPattern11(this, 'height_halvingepoch'), + identity: createMetricPattern11(this, 'height'), + txindexCount: createMetricPattern11(this, 'height_txindex_count'), }, monthindex: { - dateindexCount: createMetricPattern13( - this, - "monthindex_dateindex_count", - ), - firstDateindex: createMetricPattern13( - this, - "monthindex_first_dateindex", - ), - identity: createMetricPattern13(this, "monthindex"), - quarterindex: createMetricPattern13(this, "monthindex_quarterindex"), - semesterindex: createMetricPattern13( - this, - "monthindex_semesterindex", - ), - yearindex: createMetricPattern13(this, "monthindex_yearindex"), + dateindexCount: createMetricPattern13(this, 'monthindex_dateindex_count'), + firstDateindex: createMetricPattern13(this, 'monthindex_first_dateindex'), + identity: createMetricPattern13(this, 'monthindex'), + quarterindex: createMetricPattern13(this, 'monthindex_quarterindex'), + semesterindex: createMetricPattern13(this, 'monthindex_semesterindex'), + yearindex: createMetricPattern13(this, 'monthindex_yearindex'), }, quarterindex: { - firstMonthindex: createMetricPattern25( - this, - "quarterindex_first_monthindex", - ), - identity: createMetricPattern25(this, "quarterindex"), - monthindexCount: createMetricPattern25( - this, - "quarterindex_monthindex_count", - ), + firstMonthindex: createMetricPattern25(this, 'quarterindex_first_monthindex'), + identity: createMetricPattern25(this, 'quarterindex'), + monthindexCount: createMetricPattern25(this, 'quarterindex_monthindex_count'), }, semesterindex: { - firstMonthindex: createMetricPattern26( - this, - "semesterindex_first_monthindex", - ), - identity: createMetricPattern26(this, "semesterindex"), - monthindexCount: createMetricPattern26( - this, - "semesterindex_monthindex_count", - ), + firstMonthindex: createMetricPattern26(this, 'semesterindex_first_monthindex'), + identity: createMetricPattern26(this, 'semesterindex'), + monthindexCount: createMetricPattern26(this, 'semesterindex_monthindex_count'), }, txindex: { - identity: createMetricPattern27(this, "txindex"), - inputCount: createMetricPattern27(this, "txindex_input_count"), - outputCount: createMetricPattern27(this, "txindex_output_count"), + identity: createMetricPattern27(this, 'txindex'), + inputCount: createMetricPattern27(this, 'txindex_input_count'), + outputCount: createMetricPattern27(this, 'txindex_output_count'), }, txinindex: { - identity: createMetricPattern12(this, "txinindex"), + identity: createMetricPattern12(this, 'txinindex'), }, txoutindex: { - identity: createMetricPattern15(this, "txoutindex"), + identity: createMetricPattern15(this, 'txoutindex'), }, weekindex: { - dateindexCount: createMetricPattern29( - this, - "weekindex_dateindex_count", - ), - firstDateindex: createMetricPattern29( - this, - "weekindex_first_dateindex", - ), - identity: createMetricPattern29(this, "weekindex"), + dateindexCount: createMetricPattern29(this, 'weekindex_dateindex_count'), + firstDateindex: createMetricPattern29(this, 'weekindex_first_dateindex'), + identity: createMetricPattern29(this, 'weekindex'), }, yearindex: { - decadeindex: createMetricPattern30(this, "yearindex_decadeindex"), - firstMonthindex: createMetricPattern30( - this, - "yearindex_first_monthindex", - ), - identity: createMetricPattern30(this, "yearindex"), - monthindexCount: createMetricPattern30( - this, - "yearindex_monthindex_count", - ), + decadeindex: createMetricPattern30(this, 'yearindex_decadeindex'), + firstMonthindex: createMetricPattern30(this, 'yearindex_first_monthindex'), + identity: createMetricPattern30(this, 'yearindex'), + monthindexCount: createMetricPattern30(this, 'yearindex_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"), - witnessSize: createMetricPattern12(this, "witness_size"), + txindex: createMetricPattern12(this, 'txindex'), + typeindex: createMetricPattern12(this, 'typeindex'), + witnessSize: createMetricPattern12(this, 'witness_size'), }, 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: { - _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"), + _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: { - _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"), + _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'), }, 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_btc'), + periodReturns: createPeriodAveragePricePattern(this, 'dca_returns'), + periodStack: createPeriodLumpSumStackPattern(this, 'dca_stack_btc'), }, 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: { priceAgo: { - _10y: createMetricPattern4(this, "price_10y_ago"), - _1d: createMetricPattern4(this, "price_1d_ago"), - _1m: createMetricPattern4(this, "price_1m_ago"), - _1w: createMetricPattern4(this, "price_1w_ago"), - _1y: createMetricPattern4(this, "price_1y_ago"), - _2y: createMetricPattern4(this, "price_2y_ago"), - _3m: createMetricPattern4(this, "price_3m_ago"), - _3y: createMetricPattern4(this, "price_3y_ago"), - _4y: createMetricPattern4(this, "price_4y_ago"), - _5y: createMetricPattern4(this, "price_5y_ago"), - _6m: createMetricPattern4(this, "price_6m_ago"), - _6y: createMetricPattern4(this, "price_6y_ago"), - _8y: createMetricPattern4(this, "price_8y_ago"), + _10y: createMetricPattern4(this, 'price_10y_ago'), + _1d: createMetricPattern4(this, 'price_1d_ago'), + _1m: createMetricPattern4(this, 'price_1m_ago'), + _1w: createMetricPattern4(this, 'price_1w_ago'), + _1y: createMetricPattern4(this, 'price_1y_ago'), + _2y: createMetricPattern4(this, 'price_2y_ago'), + _3m: createMetricPattern4(this, 'price_3m_ago'), + _3y: createMetricPattern4(this, 'price_3y_ago'), + _4y: createMetricPattern4(this, 'price_4y_ago'), + _5y: createMetricPattern4(this, 'price_5y_ago'), + _6m: createMetricPattern4(this, 'price_6m_ago'), + _6y: createMetricPattern4(this, 'price_6y_ago'), + _8y: createMetricPattern4(this, 'price_8y_ago'), }, }, movingAverage: { - price111dSma: createPrice111dSmaPattern(this, "price_111d_sma"), - price12dEma: createPrice111dSmaPattern(this, "price_12d_ema"), - price13dEma: createPrice111dSmaPattern(this, "price_13d_ema"), - price13dSma: createPrice111dSmaPattern(this, "price_13d_sma"), - price144dEma: createPrice111dSmaPattern(this, "price_144d_ema"), - price144dSma: createPrice111dSmaPattern(this, "price_144d_sma"), - price1mEma: createPrice111dSmaPattern(this, "price_1m_ema"), - price1mSma: createPrice111dSmaPattern(this, "price_1m_sma"), - price1wEma: createPrice111dSmaPattern(this, "price_1w_ema"), - price1wSma: createPrice111dSmaPattern(this, "price_1w_sma"), - price1yEma: createPrice111dSmaPattern(this, "price_1y_ema"), - price1ySma: createPrice111dSmaPattern(this, "price_1y_sma"), - price200dEma: createPrice111dSmaPattern(this, "price_200d_ema"), - price200dSma: createPrice111dSmaPattern(this, "price_200d_sma"), - 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"), + 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'), }, }, sats: { - ohlc: createMetricPattern1(this, "price_ohlc_sats"), - split: createSplitPattern2(this, "price_sats"), + ohlc: createMetricPattern1(this, 'price_ohlc_sats'), + split: createSplitPattern2(this, 'price_sats'), }, 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, ""), - weight: createFeeRatePattern(this, ""), + vsize: createFeeRatePattern(this, 'tx_vsize_average'), + weight: createFeeRatePattern(this, 'tx_weight_average'), }, - 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'), }, }, }; @@ -7714,10 +6892,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(); - return this.get(`/api/address/${address}/txs${query ? "?" + query : ""}`); + return this.get(`/api/address/${address}/txs${query ? '?' + query : ''}`); } /** @@ -7732,12 +6910,10 @@ class BrkClient extends BrkClientBase { */ async getAddressTxsChain(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(); - return this.get( - `/api/address/${address}/txs/chain${query ? "?" + query : ""}`, - ); + return this.get(`/api/address/${address}/txs/chain${query ? '?' + query : ''}`); } /** @@ -7919,14 +7095,12 @@ class BrkClient extends BrkClientBase { */ async getMetricByIndex(index, metric, count, format, from, to) { const params = new URLSearchParams(); - if (count !== undefined) params.set("count", String(count)); - if (format !== undefined) params.set("format", String(format)); - if (from !== undefined) params.set("from", String(from)); - if (to !== undefined) params.set("to", String(to)); + if (count !== undefined) params.set('count', String(count)); + if (format !== undefined) params.set('format', String(format)); + if (from !== undefined) params.set('from', String(from)); + if (to !== undefined) params.set('to', String(to)); const query = params.toString(); - return this.get( - `/api/metric/${metric}/${index}${query ? "?" + query : ""}`, - ); + return this.get(`/api/metric/${metric}/${index}${query ? '?' + query : ''}`); } /** @@ -7944,14 +7118,14 @@ class BrkClient extends BrkClientBase { */ async getMetricsBulk(count, format, from, index, metrics, to) { const params = new URLSearchParams(); - if (count !== undefined) params.set("count", String(count)); - if (format !== undefined) params.set("format", String(format)); - if (from !== undefined) params.set("from", String(from)); - params.set("index", String(index)); - params.set("metrics", String(metrics)); - if (to !== undefined) params.set("to", String(to)); + if (count !== undefined) params.set('count', String(count)); + if (format !== undefined) params.set('format', String(format)); + if (from !== undefined) params.set('from', String(from)); + params.set('index', String(index)); + params.set('metrics', String(metrics)); + if (to !== undefined) params.set('to', String(to)); const query = params.toString(); - return this.get(`/api/metrics/bulk${query ? "?" + query : ""}`); + return this.get(`/api/metrics/bulk${query ? '?' + query : ''}`); } /** @@ -7994,9 +7168,9 @@ class BrkClient extends BrkClientBase { */ async getMetricsList(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(); - return this.get(`/api/metrics/list${query ? "?" + query : ""}`); + return this.get(`/api/metrics/list${query ? '?' + query : ''}`); } /** @@ -8010,9 +7184,9 @@ class BrkClient extends BrkClientBase { */ async getMetricsSearchByMetric(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(); - return this.get(`/api/metrics/search/${metric}${query ? "?" + query : ""}`); + return this.get(`/api/metrics/search/${metric}${query ? '?' + query : ''}`); } /** @@ -8275,6 +7449,7 @@ class BrkClient extends BrkClientBase { async getVersion() { return this.get(`/version`); } + } export { BrkClient, BrkError }; diff --git a/packages/brk_client/docs/API.md b/packages/brk_client/DOCS.md similarity index 99% rename from packages/brk_client/docs/API.md rename to packages/brk_client/DOCS.md index 2e4cfede2..b5a0d925a 100644 --- a/packages/brk_client/docs/API.md +++ b/packages/brk_client/DOCS.md @@ -168,7 +168,7 @@ Main BRK client with catalog tree and API methods. #### \_\_init\_\_ ```python -def __init__(base_url: str = "http://localhost:3000", timeout: float = 30.0) +def __init__(base_url: str = 'http://localhost:3000', timeout: float = 30.0) ``` diff --git a/packages/brk_client/docs/README.md b/packages/brk_client/README.md similarity index 87% rename from packages/brk_client/docs/README.md rename to packages/brk_client/README.md index 6586cc4e6..ffb72925a 100644 --- a/packages/brk_client/docs/README.md +++ b/packages/brk_client/README.md @@ -2,7 +2,7 @@ Python client for the [Bitcoin Research Kit](https://bitcoinresearchkit.org) - a suite of tools to extract, compute and display data stored on a Bitcoin Core node. -[API Documentation](/docs/API.md) +[Documentation](/DOCS.md) ## Installation diff --git a/packages/brk_client/brk_client/__init__.py b/packages/brk_client/brk_client/__init__.py index 909565290..e8fe9c23b 100644 --- a/packages/brk_client/brk_client/__init__.py +++ b/packages/brk_client/brk_client/__init__.py @@ -2,22 +2,10 @@ # Do not edit manually from __future__ import annotations - -from typing import ( - Any, - Generic, - List, - Literal, - Optional, - Protocol, - TypedDict, - TypeVar, - Union, -) - +from typing import TypeVar, Generic, Any, Optional, List, Literal, TypedDict, Union, Protocol import httpx -T = TypeVar("T") +T = TypeVar('T') # Type definitions @@ -27,8 +15,6 @@ Address = str Sats = int # Index within its type (e.g., 0 for first P2WPKH address) TypeIndex = int - - class AddressChainStats(TypedDict): """ Address statistics on the blockchain (confirmed transactions only) @@ -43,7 +29,6 @@ class AddressChainStats(TypedDict): tx_count: Total number of confirmed transactions involving this address type_index: Index of this address within its type on the blockchain """ - funded_txo_count: int funded_txo_sum: Sats spent_txo_count: int @@ -51,7 +36,6 @@ class AddressChainStats(TypedDict): tx_count: int type_index: TypeIndex - class AddressMempoolStats(TypedDict): """ Address statistics in the mempool (unconfirmed transactions only) @@ -65,18 +49,15 @@ class AddressMempoolStats(TypedDict): spent_txo_sum: Total amount in satoshis being spent in unconfirmed transactions tx_count: Number of unconfirmed transactions involving this address """ - funded_txo_count: int funded_txo_sum: Sats spent_txo_count: int spent_txo_sum: Sats tx_count: int - class AddressParam(TypedDict): address: Address - class AddressStats(TypedDict): """ Address information compatible with mempool.space API format @@ -86,27 +67,21 @@ class AddressStats(TypedDict): chain_stats: Statistics for confirmed transactions on the blockchain mempool_stats: Statistics for unconfirmed transactions in the mempool """ - address: Address chain_stats: AddressChainStats mempool_stats: Union[AddressMempoolStats, None] - # Transaction ID (hash) Txid = str - - class AddressTxidsParam(TypedDict): """ Attributes: after_txid: Txid to paginate from (return transactions before this one) limit: Maximum number of results to return. Defaults to 25 if not specified. """ - after_txid: Union[Txid, None] limit: int - class AddressValidation(TypedDict): """ Address validation result @@ -120,7 +95,6 @@ class AddressValidation(TypedDict): witness_program: Witness program in hex witness_version: Witness version (0 for P2WPKH/P2WSH, 1 for P2TR) """ - address: Optional[str] isscript: Optional[bool] isvalid: bool @@ -129,77 +103,57 @@ class AddressValidation(TypedDict): witness_program: Optional[str] witness_version: Optional[int] - # Unified index for any address type (loaded or empty) AnyAddressIndex = TypeIndex # Bitcoin amount as floating point (1 BTC = 100,000,000 satoshis) Bitcoin = float # Position within a .blk file, encoding file index and byte offset BlkPosition = int - - class BlockCountParam(TypedDict): """ Attributes: block_count: Number of recent blocks to include """ - block_count: int - # Block height Height = int # UNIX timestamp in seconds Timestamp = int - - class BlockFeesEntry(TypedDict): """ A single block fees data point. """ - avgFees: Sats avgHeight: Height timestamp: Timestamp - # Block hash BlockHash = str - - class BlockHashParam(TypedDict): hash: BlockHash - TxIndex = int - - class BlockHashStartIndex(TypedDict): """ Attributes: hash: Bitcoin block hash start_index: Starting transaction index within the block (0-based) """ - hash: BlockHash start_index: TxIndex - class BlockHashTxIndex(TypedDict): """ Attributes: hash: Bitcoin block hash index: Transaction index within the block (0-based) """ - hash: BlockHash index: TxIndex - # Transaction or block weight in weight units (WU) Weight = int - - class BlockInfo(TypedDict): """ Block information returned by the API @@ -213,7 +167,6 @@ class BlockInfo(TypedDict): tx_count: Number of transactions in the block weight: Block weight in weight units """ - difficulty: float height: Height id: BlockHash @@ -222,46 +175,37 @@ class BlockInfo(TypedDict): tx_count: int weight: Weight - class BlockRewardsEntry(TypedDict): """ A single block rewards data point. """ - avgHeight: int avgRewards: int timestamp: int - class BlockSizeEntry(TypedDict): """ A single block size data point. """ - avgHeight: int avgSize: int timestamp: int - class BlockWeightEntry(TypedDict): """ A single block weight data point. """ - avgHeight: int avgWeight: int timestamp: int - class BlockSizesWeights(TypedDict): """ Combined block sizes and weights response. """ - sizes: List[BlockSizeEntry] weights: List[BlockWeightEntry] - class BlockStatus(TypedDict): """ Block status indicating whether block is in the best chain @@ -271,12 +215,10 @@ class BlockStatus(TypedDict): in_best_chain: Whether this block is in the best chain next_best: Hash of the next block in the best chain (only if in best chain and not tip) """ - height: Union[Height, None] in_best_chain: bool next_best: Union[BlockHash, None] - class BlockTimestamp(TypedDict): """ Block information returned for timestamp queries @@ -286,19 +228,15 @@ class BlockTimestamp(TypedDict): height: Block height timestamp: Block timestamp in ISO 8601 format """ - hash: BlockHash height: Height timestamp: str - Cents = int # Closing price value for a time period Close = Cents # Output format for API responses Format = Literal["json", "csv"] - - class DataRangeFormat(TypedDict): """ Data range with output format for API query parameters @@ -309,19 +247,15 @@ class DataRangeFormat(TypedDict): from_: Inclusive starting index, if negative counts from end to: Exclusive ending index, if negative counts from end """ - count: Optional[int] format: Format from_: Optional[int] to: Optional[int] - # Date in YYYYMMDD format stored as u32 Date = int DateIndex = int DecadeIndex = int - - class DifficultyAdjustment(TypedDict): """ Difficulty adjustment information. @@ -338,7 +272,6 @@ class DifficultyAdjustment(TypedDict): timeAvg: Average block time in current epoch (seconds) timeOffset: Time offset from expected schedule (seconds) """ - adjustedTimeAvg: int difficultyChange: float estimatedRetargetDate: int @@ -350,19 +283,16 @@ class DifficultyAdjustment(TypedDict): timeAvg: int timeOffset: int - class DifficultyAdjustmentEntry(TypedDict): """ A single difficulty adjustment entry. Serializes as array: [timestamp, height, difficulty, change_percent] """ - change_percent: float difficulty: float height: Height timestamp: Timestamp - class DifficultyEntry(TypedDict): """ A single difficulty data point. @@ -372,17 +302,13 @@ class DifficultyEntry(TypedDict): height: Block height of the adjustment. timestamp: Unix timestamp of the difficulty adjustment. """ - difficulty: float height: Height timestamp: Timestamp - DifficultyEpoch = int # US Dollar amount as floating point Dollars = float - - class EmptyAddressData(TypedDict): """ Data of an empty address @@ -392,19 +318,15 @@ class EmptyAddressData(TypedDict): transfered: Total satoshis transferred tx_count: Total transaction count """ - funded_txo_count: int transfered: Sats tx_count: int - EmptyAddressIndex = TypeIndex EmptyOutputIndex = TypeIndex # Fee rate in sats/vB FeeRate = float HalvingEpoch = int - - class HashrateEntry(TypedDict): """ A single hashrate data point. @@ -413,11 +335,9 @@ class HashrateEntry(TypedDict): avgHashrate: Average hashrate (H/s). timestamp: Unix timestamp. """ - avgHashrate: int timestamp: Timestamp - class HashrateSummary(TypedDict): """ Summary of network hashrate and difficulty data. @@ -428,33 +348,26 @@ class HashrateSummary(TypedDict): difficulty: Historical difficulty adjustments. hashrates: Historical hashrate data points. """ - currentDifficulty: float currentHashrate: int difficulty: List[DifficultyEntry] hashrates: List[HashrateEntry] - class Health(TypedDict): """ Server health status """ - service: str status: str timestamp: str - class HeightParam(TypedDict): height: Height - # Hex-encoded string Hex = str # Highest price value for a time period High = Cents - - class IndexInfo(TypedDict): """ Information about an available index and its query aliases @@ -463,19 +376,14 @@ class IndexInfo(TypedDict): aliases: All Accepted query aliases index: The canonical index name """ - aliases: List[str] index: Index - # Maximum number of results to return. Defaults to 100 if not specified. Limit = int - - class LimitParam(TypedDict): limit: Limit - class LoadedAddressData(TypedDict): """ Data for a loaded (non-empty) address with current balance @@ -488,7 +396,6 @@ class LoadedAddressData(TypedDict): spent_txo_count: Number of transaction outputs spent by this address tx_count: Total transaction count """ - funded_txo_count: int realized_cap: Dollars received: Sats @@ -496,12 +403,9 @@ class LoadedAddressData(TypedDict): spent_txo_count: int tx_count: int - LoadedAddressIndex = TypeIndex # Lowest price value for a time period Low = Cents - - class MempoolBlock(TypedDict): """ Block info in a mempool.space like format for fee estimation. @@ -514,7 +418,6 @@ class MempoolBlock(TypedDict): nTx: Number of transactions in the projected block totalFees: Total fees in satoshis """ - blockSize: int blockVSize: float feeRange: List[FeeRate] @@ -522,11 +425,8 @@ class MempoolBlock(TypedDict): nTx: int totalFees: Sats - # Virtual size in vbytes (weight / 4, rounded up) VSize = int - - class MempoolInfo(TypedDict): """ Mempool statistics @@ -536,16 +436,12 @@ class MempoolInfo(TypedDict): total_fee: Total fees of all transactions in the mempool (satoshis) vsize: Total virtual size of all transactions in the mempool (vbytes) """ - count: int total_fee: Sats vsize: VSize - # Metric name Metric = str - - class MetricCount(TypedDict): """ Metric count statistics - distinct metrics and total metric-index combinations @@ -556,21 +452,16 @@ class MetricCount(TypedDict): stored_endpoints: Number of eager (stored on disk) metric-index combinations total_endpoints: Total number of metric-index combinations across all timeframes """ - distinct_metrics: int lazy_endpoints: int stored_endpoints: int total_endpoints: int - class MetricParam(TypedDict): metric: Metric - # Comma-separated list of metric names Metrics = str - - class MetricSelection(TypedDict): """ Selection of metrics to query @@ -583,7 +474,6 @@ class MetricSelection(TypedDict): metrics: Requested metrics to: Exclusive ending index, if negative counts from end """ - count: Optional[int] format: Format from_: Optional[int] @@ -591,7 +481,6 @@ class MetricSelection(TypedDict): metrics: Metrics to: Optional[int] - class MetricSelectionLegacy(TypedDict): """ Legacy metric selection parameters (deprecated) @@ -602,7 +491,6 @@ class MetricSelectionLegacy(TypedDict): from_: Inclusive starting index, if negative counts from end to: Exclusive ending index, if negative counts from end """ - count: Optional[int] format: Format from_: Optional[int] @@ -610,73 +498,49 @@ class MetricSelectionLegacy(TypedDict): index: Index to: Optional[int] - class MetricWithIndex(TypedDict): """ Attributes: index: Aggregation index metric: Metric name """ - index: Index metric: Metric - MonthIndex = int # Opening price value for a time period Open = Cents - - class OHLCCents(TypedDict): """ OHLC (Open, High, Low, Close) data in cents """ - close: Close high: High low: Low open: Open - class OHLCDollars(TypedDict): """ OHLC (Open, High, Low, Close) data in dollars """ - close: Close high: High low: Low open: Open - class OHLCSats(TypedDict): """ OHLC (Open, High, Low, Close) data in satoshis """ - close: Close high: High low: Low open: Open - OpReturnIndex = TypeIndex OutPoint = int # Type (P2PKH, P2WPKH, P2SH, P2TR, etc.) -OutputType = Literal[ - "p2pk65", - "p2pk33", - "p2pkh", - "p2ms", - "p2sh", - "opreturn", - "p2wpkh", - "p2wsh", - "p2tr", - "p2a", - "empty", - "unknown", -] +OutputType = Literal["p2pk65", "p2pk33", "p2pkh", "p2ms", "p2sh", "opreturn", "p2wpkh", "p2wsh", "p2tr", "p2a", "empty", "unknown"] P2AAddressIndex = TypeIndex U8x2 = List[int] P2ABytes = U8x2 @@ -699,8 +563,6 @@ P2WPKHAddressIndex = TypeIndex P2WPKHBytes = U8x20 P2WSHAddressIndex = TypeIndex P2WSHBytes = U8x32 - - class PaginatedMetrics(TypedDict): """ A paginated list of available metric names (1000 per page) @@ -710,12 +572,10 @@ class PaginatedMetrics(TypedDict): max_page: Maximum valid page index (0-indexed) metrics: List of metric names (max 1000 per page) """ - current_page: int max_page: int metrics: List[str] - class Pagination(TypedDict): """ Pagination parameters for paginated API endpoints @@ -723,10 +583,8 @@ class Pagination(TypedDict): Attributes: page: Pagination index """ - page: Optional[int] - class PoolBlockCounts(TypedDict): """ Block counts for different time periods @@ -736,12 +594,10 @@ class PoolBlockCounts(TypedDict): _24h: Blocks mined in last 24 hours all: Total blocks mined (all time) """ - _1w: int _24h: int all: int - class PoolBlockShares(TypedDict): """ Pool's share of total blocks for different time periods @@ -751,174 +607,11 @@ class PoolBlockShares(TypedDict): _24h: Share of blocks in last 24 hours all: Share of all blocks (0.0 - 1.0) """ - _1w: float _24h: float all: float - -PoolSlug = Literal[ - "unknown", - "blockfills", - "ultimuspool", - "terrapool", - "luxor", - "onethash", - "btccom", - "bitfarms", - "huobipool", - "wayicn", - "canoepool", - "btctop", - "bitcoincom", - "pool175btc", - "gbminers", - "axbt", - "asicminer", - "bitminter", - "bitcoinrussia", - "btcserv", - "simplecoinus", - "btcguild", - "eligius", - "ozcoin", - "eclipsemc", - "maxbtc", - "triplemining", - "coinlab", - "pool50btc", - "ghashio", - "stminingcorp", - "bitparking", - "mmpool", - "polmine", - "kncminer", - "bitalo", - "f2pool", - "hhtt", - "megabigpower", - "mtred", - "nmcbit", - "yourbtcnet", - "givemecoins", - "braiinspool", - "antpool", - "multicoinco", - "bcpoolio", - "cointerra", - "kanopool", - "solock", - "ckpool", - "nicehash", - "bitclub", - "bitcoinaffiliatenetwork", - "btcc", - "bwpool", - "exxbw", - "bitsolo", - "bitfury", - "twentyoneinc", - "digitalbtc", - "eightbaochi", - "mybtccoinpool", - "tbdice", - "hashpool", - "nexious", - "bravomining", - "hotpool", - "okexpool", - "bcmonster", - "onehash", - "bixin", - "tatmaspool", - "viabtc", - "connectbtc", - "batpool", - "waterhole", - "dcexploration", - "dcex", - "btpool", - "fiftyeightcoin", - "bitcoinindia", - "shawnp0wers", - "phashio", - "rigpool", - "haozhuzhu", - "sevenpool", - "miningkings", - "hashbx", - "dpool", - "rawpool", - "haominer", - "helix", - "bitcoinukraine", - "poolin", - "secretsuperstar", - "tigerpoolnet", - "sigmapoolcom", - "okpooltop", - "hummerpool", - "tangpool", - "bytepool", - "spiderpool", - "novablock", - "miningcity", - "binancepool", - "minerium", - "lubiancom", - "okkong", - "aaopool", - "emcdpool", - "foundryusa", - "sbicrypto", - "arkpool", - "purebtccom", - "marapool", - "kucoinpool", - "entrustcharitypool", - "okminer", - "titan", - "pegapool", - "btcnuggets", - "cloudhashing", - "digitalxmintsy", - "telco214", - "btcpoolparty", - "multipool", - "transactioncoinmining", - "btcdig", - "trickysbtcpool", - "btcmp", - "eobot", - "unomp", - "patels", - "gogreenlight", - "ekanembtc", - "canoe", - "tiger", - "onem1x", - "zulupool", - "secpool", - "ocean", - "whitepool", - "wk057", - "futurebitapollosolo", - "carbonnegative", - "portlandhodl", - "phoenix", - "neopool", - "maxipool", - "bitfufupool", - "luckypool", - "miningdutch", - "publicpool", - "miningsquared", - "innopolistech", - "btclab", - "parasite", -] - - +PoolSlug = Literal["unknown", "blockfills", "ultimuspool", "terrapool", "luxor", "onethash", "btccom", "bitfarms", "huobipool", "wayicn", "canoepool", "btctop", "bitcoincom", "pool175btc", "gbminers", "axbt", "asicminer", "bitminter", "bitcoinrussia", "btcserv", "simplecoinus", "btcguild", "eligius", "ozcoin", "eclipsemc", "maxbtc", "triplemining", "coinlab", "pool50btc", "ghashio", "stminingcorp", "bitparking", "mmpool", "polmine", "kncminer", "bitalo", "f2pool", "hhtt", "megabigpower", "mtred", "nmcbit", "yourbtcnet", "givemecoins", "braiinspool", "antpool", "multicoinco", "bcpoolio", "cointerra", "kanopool", "solock", "ckpool", "nicehash", "bitclub", "bitcoinaffiliatenetwork", "btcc", "bwpool", "exxbw", "bitsolo", "bitfury", "twentyoneinc", "digitalbtc", "eightbaochi", "mybtccoinpool", "tbdice", "hashpool", "nexious", "bravomining", "hotpool", "okexpool", "bcmonster", "onehash", "bixin", "tatmaspool", "viabtc", "connectbtc", "batpool", "waterhole", "dcexploration", "dcex", "btpool", "fiftyeightcoin", "bitcoinindia", "shawnp0wers", "phashio", "rigpool", "haozhuzhu", "sevenpool", "miningkings", "hashbx", "dpool", "rawpool", "haominer", "helix", "bitcoinukraine", "poolin", "secretsuperstar", "tigerpoolnet", "sigmapoolcom", "okpooltop", "hummerpool", "tangpool", "bytepool", "spiderpool", "novablock", "miningcity", "binancepool", "minerium", "lubiancom", "okkong", "aaopool", "emcdpool", "foundryusa", "sbicrypto", "arkpool", "purebtccom", "marapool", "kucoinpool", "entrustcharitypool", "okminer", "titan", "pegapool", "btcnuggets", "cloudhashing", "digitalxmintsy", "telco214", "btcpoolparty", "multipool", "transactioncoinmining", "btcdig", "trickysbtcpool", "btcmp", "eobot", "unomp", "patels", "gogreenlight", "ekanembtc", "canoe", "tiger", "onem1x", "zulupool", "secpool", "ocean", "whitepool", "wk057", "futurebitapollosolo", "carbonnegative", "portlandhodl", "phoenix", "neopool", "maxipool", "bitfufupool", "luckypool", "miningdutch", "publicpool", "miningsquared", "innopolistech", "btclab", "parasite"] class PoolDetailInfo(TypedDict): """ Pool information for detail view @@ -931,7 +624,6 @@ class PoolDetailInfo(TypedDict): regexes: Coinbase tag patterns (regexes) slug: URL-friendly pool identifier """ - addresses: List[str] id: int link: str @@ -939,7 +631,6 @@ class PoolDetailInfo(TypedDict): regexes: List[str] slug: PoolSlug - class PoolDetail(TypedDict): """ Detailed pool information with statistics across time periods @@ -951,14 +642,12 @@ class PoolDetail(TypedDict): pool: Pool information reportedHashrate: Self-reported hashrate (if available) """ - blockCount: PoolBlockCounts blockShare: PoolBlockShares estimatedHashrate: int pool: PoolDetailInfo reportedHashrate: Optional[int] - class PoolInfo(TypedDict): """ Basic pool information for listing all pools @@ -968,16 +657,13 @@ class PoolInfo(TypedDict): slug: URL-friendly pool identifier unique_id: Unique numeric pool identifier """ - name: str slug: PoolSlug unique_id: int - class PoolSlugParam(TypedDict): slug: PoolSlug - class PoolStats(TypedDict): """ Mining pool with block statistics for a time period @@ -992,7 +678,6 @@ class PoolStats(TypedDict): share: Pool's share of total blocks (0.0 - 1.0) slug: URL-friendly pool identifier """ - blockCount: int emptyBlocks: int link: str @@ -1002,7 +687,6 @@ class PoolStats(TypedDict): share: float slug: PoolSlug - class PoolsSummary(TypedDict): """ Mining pools response for a time period @@ -1012,17 +696,13 @@ class PoolsSummary(TypedDict): lastEstimatedHashrate: Estimated network hashrate (hashes per second) pools: List of pools sorted by block count descending """ - blockCount: int lastEstimatedHashrate: int pools: List[PoolStats] - QuarterIndex = int # Transaction locktime RawLockTime = int - - class RecommendedFees(TypedDict): """ Recommended fee rates in sat/vB @@ -1034,14 +714,12 @@ class RecommendedFees(TypedDict): hourFee: Fee rate for confirmation within ~1 hour (6 blocks) minimumFee: Minimum relay fee rate """ - economyFee: FeeRate fastestFee: FeeRate halfHourFee: FeeRate hourFee: FeeRate minimumFee: FeeRate - class RewardStats(TypedDict): """ Block reward statistics over a range of blocks @@ -1050,14 +728,12 @@ class RewardStats(TypedDict): endBlock: Last block in the range startBlock: First block in the range """ - endBlock: Height startBlock: Height totalFee: Sats totalReward: Sats totalTx: int - SemesterIndex = int # Fixed-size boolean value optimized for on-disk storage (stored as u16) StoredBool = int @@ -1071,8 +747,6 @@ StoredU16 = int StoredU32 = int # Fixed-size 64-bit unsigned integer optimized for on-disk storage StoredU64 = int - - class SupplyState(TypedDict): """ Current supply state tracking UTXO count and total value @@ -1081,26 +755,20 @@ class SupplyState(TypedDict): utxo_count: Number of unspent transaction outputs value: Total value in satoshis """ - utxo_count: int value: Sats - # Time period for mining statistics. # # Used to specify the lookback window for pool statistics, hashrate calculations, # and other time-based mining metrics. TimePeriod = Literal["24h", "3d", "1w", "1m", "3m", "6m", "1y", "2y", "3y"] - - class TimePeriodParam(TypedDict): time_period: TimePeriod - class TimestampParam(TypedDict): timestamp: Timestamp - class TxOut(TypedDict): """ Transaction output @@ -1109,15 +777,11 @@ class TxOut(TypedDict): scriptpubkey: Script pubkey (locking script) value: Value of the output in satoshis """ - scriptpubkey: str value: Sats - # Index of the output being spent in the previous transaction Vout = int - - class TxIn(TypedDict): """ Transaction input @@ -1131,7 +795,6 @@ class TxIn(TypedDict): sequence: Input sequence number txid: Transaction ID of the output being spent """ - inner_redeemscript_asm: Optional[str] is_coinbase: bool prevout: Union[TxOut, None] @@ -1141,7 +804,6 @@ class TxIn(TypedDict): txid: Txid vout: Vout - class TxStatus(TypedDict): """ Transaction confirmation status @@ -1152,17 +814,13 @@ class TxStatus(TypedDict): block_time: Block timestamp (only present if confirmed) confirmed: Whether the transaction is confirmed """ - block_hash: Union[BlockHash, None] block_height: Union[Height, None] block_time: Union[Timestamp, None] confirmed: bool - # Transaction version number TxVersion = int - - class Transaction(TypedDict): """ Transaction information compatible with mempool.space API format @@ -1175,7 +833,6 @@ class Transaction(TypedDict): vout: Transaction outputs weight: Transaction weight """ - fee: Sats index: Union[TxIndex, None] locktime: RawLockTime @@ -1188,13 +845,10 @@ class Transaction(TypedDict): vout: List[TxOut] weight: Weight - TxInIndex = int TxOutIndex = int # Input index in the spending transaction Vin = int - - class TxOutspend(TypedDict): """ Status of an output indicating whether it has been spent @@ -1205,17 +859,14 @@ class TxOutspend(TypedDict): txid: Transaction ID of the spending transaction (only present if spent) vin: Input index in the spending transaction (only present if spent) """ - spent: bool status: Union[TxStatus, None] txid: Union[Txid, None] vin: Union[Vin, None] - class TxidParam(TypedDict): txid: Txid - class TxidVout(TypedDict): """ Transaction output reference (txid + output index) @@ -1224,69 +875,31 @@ class TxidVout(TypedDict): txid: Transaction ID vout: Output index """ - txid: Txid vout: Vout - UnknownOutputIndex = TypeIndex - - class Utxo(TypedDict): """ Unspent transaction output """ - status: TxStatus txid: Txid value: Sats vout: Vout - class ValidateAddressParam(TypedDict): """ Attributes: address: Bitcoin address to validate (can be any string) """ - address: str - WeekIndex = int YearIndex = int # Aggregation dimension for querying metrics. Includes time-based (date, week, month, year), # block-based (height, txindex), and address/output type indexes. -Index = Literal[ - "dateindex", - "decadeindex", - "difficultyepoch", - "emptyoutputindex", - "halvingepoch", - "height", - "txinindex", - "monthindex", - "opreturnindex", - "txoutindex", - "p2aaddressindex", - "p2msoutputindex", - "p2pk33addressindex", - "p2pk65addressindex", - "p2pkhaddressindex", - "p2shaddressindex", - "p2traddressindex", - "p2wpkhaddressindex", - "p2wshaddressindex", - "quarterindex", - "semesterindex", - "txindex", - "unknownoutputindex", - "weekindex", - "yearindex", - "loadedaddressindex", - "emptyaddressindex", -] - - +Index = Literal["dateindex", "decadeindex", "difficultyepoch", "emptyoutputindex", "halvingepoch", "height", "txinindex", "monthindex", "opreturnindex", "txoutindex", "p2aaddressindex", "p2msoutputindex", "p2pk33addressindex", "p2pk65addressindex", "p2pkhaddressindex", "p2shaddressindex", "p2traddressindex", "p2wpkhaddressindex", "p2wshaddressindex", "quarterindex", "semesterindex", "txindex", "unknownoutputindex", "weekindex", "yearindex", "loadedaddressindex", "emptyaddressindex"] class MetricLeafWithSchema(TypedDict): """ MetricLeaf with JSON Schema for client generation @@ -1297,17 +910,14 @@ class MetricLeafWithSchema(TypedDict): name: The metric name/identifier type: JSON Schema type (e.g., "integer", "number", "string", "boolean", "array", "object") """ - indexes: List[Index] kind: str name: str type: str - # Hierarchical tree node for organizing metrics into categories TreeNode = Union[dict[str, "TreeNode"], MetricLeafWithSchema] - class BrkError(Exception): """Custom error class for BRK client errors.""" @@ -1327,14 +937,12 @@ class BrkClientBase: def get(self, path: str) -> Any: """Make a GET request.""" try: - base = self.base_url.rstrip("/") + base = self.base_url.rstrip('/') response = self._client.get(f"{base}{path}") response.raise_for_status() return response.json() except httpx.HTTPStatusError as e: - raise BrkError( - f"HTTP error: {e.response.status_code}", e.response.status_code - ) + raise BrkError(f"HTTP error: {e.response.status_code}", e.response.status_code) except httpx.RequestError as e: raise BrkError(str(e)) @@ -1356,7 +964,6 @@ def _m(acc: str, s: str) -> str: class MetricData(TypedDict, Generic[T]): """Metric data with range information.""" - total: int from_: int # 'from' is reserved in Python to: int @@ -1379,9 +986,7 @@ class MetricEndpoint(Generic[T]): """Fetch all data points for this metric/index.""" return self._client.get(self.path()) - def range( - self, from_val: Optional[int] = None, to_val: Optional[int] = None - ) -> MetricData[T]: + def range(self, from_val: Optional[int] = None, to_val: Optional[int] = None) -> MetricData[T]: """Fetch data points within a range.""" params = [] if from_val is not None: @@ -1420,7 +1025,6 @@ class MetricPattern(Protocol[T]): # Index accessor classes - class _MetricPattern1By(Generic[T]): """Index endpoint methods container.""" @@ -1429,32 +1033,31 @@ class _MetricPattern1By(Generic[T]): self._name = name def dateindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "dateindex") + return MetricEndpoint(self._client, self._name, 'dateindex') def decadeindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "decadeindex") + return MetricEndpoint(self._client, self._name, 'decadeindex') def difficultyepoch(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "difficultyepoch") + return MetricEndpoint(self._client, self._name, 'difficultyepoch') def height(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "height") + return MetricEndpoint(self._client, self._name, 'height') def monthindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "monthindex") + return MetricEndpoint(self._client, self._name, 'monthindex') def quarterindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "quarterindex") + return MetricEndpoint(self._client, self._name, 'quarterindex') def semesterindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "semesterindex") + return MetricEndpoint(self._client, self._name, 'semesterindex') def weekindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "weekindex") + return MetricEndpoint(self._client, self._name, 'weekindex') def yearindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "yearindex") - + return MetricEndpoint(self._client, self._name, 'yearindex') class MetricPattern1(Generic[T]): """Index accessor for metrics with 9 indexes.""" @@ -1471,41 +1074,21 @@ class MetricPattern1(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return [ - "dateindex", - "decadeindex", - "difficultyepoch", - "height", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", - ] + return ['dateindex', 'decadeindex', 'difficultyepoch', 'height', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "dateindex": - return self.by.dateindex() - elif index == "decadeindex": - return self.by.decadeindex() - elif index == "difficultyepoch": - return self.by.difficultyepoch() - elif index == "height": - return self.by.height() - elif index == "monthindex": - return self.by.monthindex() - elif index == "quarterindex": - return self.by.quarterindex() - elif index == "semesterindex": - return self.by.semesterindex() - elif index == "weekindex": - return self.by.weekindex() - elif index == "yearindex": - return self.by.yearindex() + if index == 'dateindex': return self.by.dateindex() + elif index == 'decadeindex': return self.by.decadeindex() + elif index == 'difficultyepoch': return self.by.difficultyepoch() + elif index == 'height': return self.by.height() + elif index == 'monthindex': return self.by.monthindex() + elif index == 'quarterindex': return self.by.quarterindex() + elif index == 'semesterindex': return self.by.semesterindex() + elif index == 'weekindex': return self.by.weekindex() + elif index == 'yearindex': return self.by.yearindex() return None - class _MetricPattern2By(Generic[T]): """Index endpoint methods container.""" @@ -1514,29 +1097,28 @@ class _MetricPattern2By(Generic[T]): self._name = name def dateindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "dateindex") + return MetricEndpoint(self._client, self._name, 'dateindex') def decadeindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "decadeindex") + return MetricEndpoint(self._client, self._name, 'decadeindex') def difficultyepoch(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "difficultyepoch") + return MetricEndpoint(self._client, self._name, 'difficultyepoch') def monthindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "monthindex") + return MetricEndpoint(self._client, self._name, 'monthindex') def quarterindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "quarterindex") + return MetricEndpoint(self._client, self._name, 'quarterindex') def semesterindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "semesterindex") + return MetricEndpoint(self._client, self._name, 'semesterindex') def weekindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "weekindex") + return MetricEndpoint(self._client, self._name, 'weekindex') def yearindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "yearindex") - + return MetricEndpoint(self._client, self._name, 'yearindex') class MetricPattern2(Generic[T]): """Index accessor for metrics with 8 indexes.""" @@ -1553,38 +1135,20 @@ class MetricPattern2(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return [ - "dateindex", - "decadeindex", - "difficultyepoch", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", - ] + return ['dateindex', 'decadeindex', 'difficultyepoch', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "dateindex": - return self.by.dateindex() - elif index == "decadeindex": - return self.by.decadeindex() - elif index == "difficultyepoch": - return self.by.difficultyepoch() - elif index == "monthindex": - return self.by.monthindex() - elif index == "quarterindex": - return self.by.quarterindex() - elif index == "semesterindex": - return self.by.semesterindex() - elif index == "weekindex": - return self.by.weekindex() - elif index == "yearindex": - return self.by.yearindex() + if index == 'dateindex': return self.by.dateindex() + elif index == 'decadeindex': return self.by.decadeindex() + elif index == 'difficultyepoch': return self.by.difficultyepoch() + elif index == 'monthindex': return self.by.monthindex() + elif index == 'quarterindex': return self.by.quarterindex() + elif index == 'semesterindex': return self.by.semesterindex() + elif index == 'weekindex': return self.by.weekindex() + elif index == 'yearindex': return self.by.yearindex() return None - class _MetricPattern3By(Generic[T]): """Index endpoint methods container.""" @@ -1593,29 +1157,28 @@ class _MetricPattern3By(Generic[T]): self._name = name def dateindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "dateindex") + return MetricEndpoint(self._client, self._name, 'dateindex') def decadeindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "decadeindex") + return MetricEndpoint(self._client, self._name, 'decadeindex') def height(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "height") + return MetricEndpoint(self._client, self._name, 'height') def monthindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "monthindex") + return MetricEndpoint(self._client, self._name, 'monthindex') def quarterindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "quarterindex") + return MetricEndpoint(self._client, self._name, 'quarterindex') def semesterindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "semesterindex") + return MetricEndpoint(self._client, self._name, 'semesterindex') def weekindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "weekindex") + return MetricEndpoint(self._client, self._name, 'weekindex') def yearindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "yearindex") - + return MetricEndpoint(self._client, self._name, 'yearindex') class MetricPattern3(Generic[T]): """Index accessor for metrics with 8 indexes.""" @@ -1632,38 +1195,20 @@ class MetricPattern3(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return [ - "dateindex", - "decadeindex", - "height", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", - ] + return ['dateindex', 'decadeindex', 'height', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "dateindex": - return self.by.dateindex() - elif index == "decadeindex": - return self.by.decadeindex() - elif index == "height": - return self.by.height() - elif index == "monthindex": - return self.by.monthindex() - elif index == "quarterindex": - return self.by.quarterindex() - elif index == "semesterindex": - return self.by.semesterindex() - elif index == "weekindex": - return self.by.weekindex() - elif index == "yearindex": - return self.by.yearindex() + if index == 'dateindex': return self.by.dateindex() + elif index == 'decadeindex': return self.by.decadeindex() + elif index == 'height': return self.by.height() + elif index == 'monthindex': return self.by.monthindex() + elif index == 'quarterindex': return self.by.quarterindex() + elif index == 'semesterindex': return self.by.semesterindex() + elif index == 'weekindex': return self.by.weekindex() + elif index == 'yearindex': return self.by.yearindex() return None - class _MetricPattern4By(Generic[T]): """Index endpoint methods container.""" @@ -1672,26 +1217,25 @@ class _MetricPattern4By(Generic[T]): self._name = name def dateindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "dateindex") + return MetricEndpoint(self._client, self._name, 'dateindex') def decadeindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "decadeindex") + return MetricEndpoint(self._client, self._name, 'decadeindex') def monthindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "monthindex") + return MetricEndpoint(self._client, self._name, 'monthindex') def quarterindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "quarterindex") + return MetricEndpoint(self._client, self._name, 'quarterindex') def semesterindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "semesterindex") + return MetricEndpoint(self._client, self._name, 'semesterindex') def weekindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "weekindex") + return MetricEndpoint(self._client, self._name, 'weekindex') def yearindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "yearindex") - + return MetricEndpoint(self._client, self._name, 'yearindex') class MetricPattern4(Generic[T]): """Index accessor for metrics with 7 indexes.""" @@ -1708,35 +1252,19 @@ class MetricPattern4(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return [ - "dateindex", - "decadeindex", - "monthindex", - "quarterindex", - "semesterindex", - "weekindex", - "yearindex", - ] + return ['dateindex', 'decadeindex', 'monthindex', 'quarterindex', 'semesterindex', 'weekindex', 'yearindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "dateindex": - return self.by.dateindex() - elif index == "decadeindex": - return self.by.decadeindex() - elif index == "monthindex": - return self.by.monthindex() - elif index == "quarterindex": - return self.by.quarterindex() - elif index == "semesterindex": - return self.by.semesterindex() - elif index == "weekindex": - return self.by.weekindex() - elif index == "yearindex": - return self.by.yearindex() + if index == 'dateindex': return self.by.dateindex() + elif index == 'decadeindex': return self.by.decadeindex() + elif index == 'monthindex': return self.by.monthindex() + elif index == 'quarterindex': return self.by.quarterindex() + elif index == 'semesterindex': return self.by.semesterindex() + elif index == 'weekindex': return self.by.weekindex() + elif index == 'yearindex': return self.by.yearindex() return None - class _MetricPattern5By(Generic[T]): """Index endpoint methods container.""" @@ -1745,11 +1273,10 @@ class _MetricPattern5By(Generic[T]): self._name = name def dateindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "dateindex") + return MetricEndpoint(self._client, self._name, 'dateindex') def height(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "height") - + return MetricEndpoint(self._client, self._name, 'height') class MetricPattern5(Generic[T]): """Index accessor for metrics with 2 indexes.""" @@ -1766,17 +1293,14 @@ class MetricPattern5(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["dateindex", "height"] + return ['dateindex', 'height'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "dateindex": - return self.by.dateindex() - elif index == "height": - return self.by.height() + if index == 'dateindex': return self.by.dateindex() + elif index == 'height': return self.by.height() return None - class _MetricPattern6By(Generic[T]): """Index endpoint methods container.""" @@ -1785,8 +1309,7 @@ class _MetricPattern6By(Generic[T]): self._name = name def dateindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "dateindex") - + return MetricEndpoint(self._client, self._name, 'dateindex') class MetricPattern6(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -1803,15 +1326,13 @@ class MetricPattern6(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["dateindex"] + return ['dateindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "dateindex": - return self.by.dateindex() + if index == 'dateindex': return self.by.dateindex() return None - class _MetricPattern7By(Generic[T]): """Index endpoint methods container.""" @@ -1820,8 +1341,7 @@ class _MetricPattern7By(Generic[T]): self._name = name def decadeindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "decadeindex") - + return MetricEndpoint(self._client, self._name, 'decadeindex') class MetricPattern7(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -1838,15 +1358,13 @@ class MetricPattern7(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["decadeindex"] + return ['decadeindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "decadeindex": - return self.by.decadeindex() + if index == 'decadeindex': return self.by.decadeindex() return None - class _MetricPattern8By(Generic[T]): """Index endpoint methods container.""" @@ -1855,8 +1373,7 @@ class _MetricPattern8By(Generic[T]): self._name = name def difficultyepoch(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "difficultyepoch") - + return MetricEndpoint(self._client, self._name, 'difficultyepoch') class MetricPattern8(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -1873,15 +1390,13 @@ class MetricPattern8(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["difficultyepoch"] + return ['difficultyepoch'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "difficultyepoch": - return self.by.difficultyepoch() + if index == 'difficultyepoch': return self.by.difficultyepoch() return None - class _MetricPattern9By(Generic[T]): """Index endpoint methods container.""" @@ -1890,8 +1405,7 @@ class _MetricPattern9By(Generic[T]): self._name = name def emptyoutputindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "emptyoutputindex") - + return MetricEndpoint(self._client, self._name, 'emptyoutputindex') class MetricPattern9(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -1908,15 +1422,13 @@ class MetricPattern9(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["emptyoutputindex"] + return ['emptyoutputindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "emptyoutputindex": - return self.by.emptyoutputindex() + if index == 'emptyoutputindex': return self.by.emptyoutputindex() return None - class _MetricPattern10By(Generic[T]): """Index endpoint methods container.""" @@ -1925,8 +1437,7 @@ class _MetricPattern10By(Generic[T]): self._name = name def halvingepoch(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "halvingepoch") - + return MetricEndpoint(self._client, self._name, 'halvingepoch') class MetricPattern10(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -1943,15 +1454,13 @@ class MetricPattern10(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["halvingepoch"] + return ['halvingepoch'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "halvingepoch": - return self.by.halvingepoch() + if index == 'halvingepoch': return self.by.halvingepoch() return None - class _MetricPattern11By(Generic[T]): """Index endpoint methods container.""" @@ -1960,8 +1469,7 @@ class _MetricPattern11By(Generic[T]): self._name = name def height(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "height") - + return MetricEndpoint(self._client, self._name, 'height') class MetricPattern11(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -1978,15 +1486,13 @@ class MetricPattern11(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["height"] + return ['height'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "height": - return self.by.height() + if index == 'height': return self.by.height() return None - class _MetricPattern12By(Generic[T]): """Index endpoint methods container.""" @@ -1995,8 +1501,7 @@ class _MetricPattern12By(Generic[T]): self._name = name def txinindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "txinindex") - + return MetricEndpoint(self._client, self._name, 'txinindex') class MetricPattern12(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2013,15 +1518,13 @@ class MetricPattern12(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["txinindex"] + return ['txinindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "txinindex": - return self.by.txinindex() + if index == 'txinindex': return self.by.txinindex() return None - class _MetricPattern13By(Generic[T]): """Index endpoint methods container.""" @@ -2030,8 +1533,7 @@ class _MetricPattern13By(Generic[T]): self._name = name def monthindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "monthindex") - + return MetricEndpoint(self._client, self._name, 'monthindex') class MetricPattern13(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2048,15 +1550,13 @@ class MetricPattern13(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["monthindex"] + return ['monthindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "monthindex": - return self.by.monthindex() + if index == 'monthindex': return self.by.monthindex() return None - class _MetricPattern14By(Generic[T]): """Index endpoint methods container.""" @@ -2065,8 +1565,7 @@ class _MetricPattern14By(Generic[T]): self._name = name def opreturnindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "opreturnindex") - + return MetricEndpoint(self._client, self._name, 'opreturnindex') class MetricPattern14(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2083,15 +1582,13 @@ class MetricPattern14(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["opreturnindex"] + return ['opreturnindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "opreturnindex": - return self.by.opreturnindex() + if index == 'opreturnindex': return self.by.opreturnindex() return None - class _MetricPattern15By(Generic[T]): """Index endpoint methods container.""" @@ -2100,8 +1597,7 @@ class _MetricPattern15By(Generic[T]): self._name = name def txoutindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "txoutindex") - + return MetricEndpoint(self._client, self._name, 'txoutindex') class MetricPattern15(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2118,15 +1614,13 @@ class MetricPattern15(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["txoutindex"] + return ['txoutindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "txoutindex": - return self.by.txoutindex() + if index == 'txoutindex': return self.by.txoutindex() return None - class _MetricPattern16By(Generic[T]): """Index endpoint methods container.""" @@ -2135,8 +1629,7 @@ class _MetricPattern16By(Generic[T]): self._name = name def p2aaddressindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "p2aaddressindex") - + return MetricEndpoint(self._client, self._name, 'p2aaddressindex') class MetricPattern16(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2153,15 +1646,13 @@ class MetricPattern16(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["p2aaddressindex"] + return ['p2aaddressindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "p2aaddressindex": - return self.by.p2aaddressindex() + if index == 'p2aaddressindex': return self.by.p2aaddressindex() return None - class _MetricPattern17By(Generic[T]): """Index endpoint methods container.""" @@ -2170,8 +1661,7 @@ class _MetricPattern17By(Generic[T]): self._name = name def p2msoutputindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "p2msoutputindex") - + return MetricEndpoint(self._client, self._name, 'p2msoutputindex') class MetricPattern17(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2188,15 +1678,13 @@ class MetricPattern17(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["p2msoutputindex"] + return ['p2msoutputindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "p2msoutputindex": - return self.by.p2msoutputindex() + if index == 'p2msoutputindex': return self.by.p2msoutputindex() return None - class _MetricPattern18By(Generic[T]): """Index endpoint methods container.""" @@ -2205,8 +1693,7 @@ class _MetricPattern18By(Generic[T]): self._name = name def p2pk33addressindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "p2pk33addressindex") - + return MetricEndpoint(self._client, self._name, 'p2pk33addressindex') class MetricPattern18(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2223,15 +1710,13 @@ class MetricPattern18(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["p2pk33addressindex"] + return ['p2pk33addressindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "p2pk33addressindex": - return self.by.p2pk33addressindex() + if index == 'p2pk33addressindex': return self.by.p2pk33addressindex() return None - class _MetricPattern19By(Generic[T]): """Index endpoint methods container.""" @@ -2240,8 +1725,7 @@ class _MetricPattern19By(Generic[T]): self._name = name def p2pk65addressindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "p2pk65addressindex") - + return MetricEndpoint(self._client, self._name, 'p2pk65addressindex') class MetricPattern19(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2258,15 +1742,13 @@ class MetricPattern19(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["p2pk65addressindex"] + return ['p2pk65addressindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "p2pk65addressindex": - return self.by.p2pk65addressindex() + if index == 'p2pk65addressindex': return self.by.p2pk65addressindex() return None - class _MetricPattern20By(Generic[T]): """Index endpoint methods container.""" @@ -2275,8 +1757,7 @@ class _MetricPattern20By(Generic[T]): self._name = name def p2pkhaddressindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "p2pkhaddressindex") - + return MetricEndpoint(self._client, self._name, 'p2pkhaddressindex') class MetricPattern20(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2293,15 +1774,13 @@ class MetricPattern20(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["p2pkhaddressindex"] + return ['p2pkhaddressindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "p2pkhaddressindex": - return self.by.p2pkhaddressindex() + if index == 'p2pkhaddressindex': return self.by.p2pkhaddressindex() return None - class _MetricPattern21By(Generic[T]): """Index endpoint methods container.""" @@ -2310,8 +1789,7 @@ class _MetricPattern21By(Generic[T]): self._name = name def p2shaddressindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "p2shaddressindex") - + return MetricEndpoint(self._client, self._name, 'p2shaddressindex') class MetricPattern21(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2328,15 +1806,13 @@ class MetricPattern21(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["p2shaddressindex"] + return ['p2shaddressindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "p2shaddressindex": - return self.by.p2shaddressindex() + if index == 'p2shaddressindex': return self.by.p2shaddressindex() return None - class _MetricPattern22By(Generic[T]): """Index endpoint methods container.""" @@ -2345,8 +1821,7 @@ class _MetricPattern22By(Generic[T]): self._name = name def p2traddressindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "p2traddressindex") - + return MetricEndpoint(self._client, self._name, 'p2traddressindex') class MetricPattern22(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2363,15 +1838,13 @@ class MetricPattern22(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["p2traddressindex"] + return ['p2traddressindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "p2traddressindex": - return self.by.p2traddressindex() + if index == 'p2traddressindex': return self.by.p2traddressindex() return None - class _MetricPattern23By(Generic[T]): """Index endpoint methods container.""" @@ -2380,8 +1853,7 @@ class _MetricPattern23By(Generic[T]): self._name = name def p2wpkhaddressindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "p2wpkhaddressindex") - + return MetricEndpoint(self._client, self._name, 'p2wpkhaddressindex') class MetricPattern23(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2398,15 +1870,13 @@ class MetricPattern23(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["p2wpkhaddressindex"] + return ['p2wpkhaddressindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "p2wpkhaddressindex": - return self.by.p2wpkhaddressindex() + if index == 'p2wpkhaddressindex': return self.by.p2wpkhaddressindex() return None - class _MetricPattern24By(Generic[T]): """Index endpoint methods container.""" @@ -2415,8 +1885,7 @@ class _MetricPattern24By(Generic[T]): self._name = name def p2wshaddressindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "p2wshaddressindex") - + return MetricEndpoint(self._client, self._name, 'p2wshaddressindex') class MetricPattern24(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2433,15 +1902,13 @@ class MetricPattern24(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["p2wshaddressindex"] + return ['p2wshaddressindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "p2wshaddressindex": - return self.by.p2wshaddressindex() + if index == 'p2wshaddressindex': return self.by.p2wshaddressindex() return None - class _MetricPattern25By(Generic[T]): """Index endpoint methods container.""" @@ -2450,8 +1917,7 @@ class _MetricPattern25By(Generic[T]): self._name = name def quarterindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "quarterindex") - + return MetricEndpoint(self._client, self._name, 'quarterindex') class MetricPattern25(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2468,15 +1934,13 @@ class MetricPattern25(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["quarterindex"] + return ['quarterindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "quarterindex": - return self.by.quarterindex() + if index == 'quarterindex': return self.by.quarterindex() return None - class _MetricPattern26By(Generic[T]): """Index endpoint methods container.""" @@ -2485,8 +1949,7 @@ class _MetricPattern26By(Generic[T]): self._name = name def semesterindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "semesterindex") - + return MetricEndpoint(self._client, self._name, 'semesterindex') class MetricPattern26(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2503,15 +1966,13 @@ class MetricPattern26(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["semesterindex"] + return ['semesterindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "semesterindex": - return self.by.semesterindex() + if index == 'semesterindex': return self.by.semesterindex() return None - class _MetricPattern27By(Generic[T]): """Index endpoint methods container.""" @@ -2520,8 +1981,7 @@ class _MetricPattern27By(Generic[T]): self._name = name def txindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "txindex") - + return MetricEndpoint(self._client, self._name, 'txindex') class MetricPattern27(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2538,15 +1998,13 @@ class MetricPattern27(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["txindex"] + return ['txindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "txindex": - return self.by.txindex() + if index == 'txindex': return self.by.txindex() return None - class _MetricPattern28By(Generic[T]): """Index endpoint methods container.""" @@ -2555,8 +2013,7 @@ class _MetricPattern28By(Generic[T]): self._name = name def unknownoutputindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "unknownoutputindex") - + return MetricEndpoint(self._client, self._name, 'unknownoutputindex') class MetricPattern28(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2573,15 +2030,13 @@ class MetricPattern28(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["unknownoutputindex"] + return ['unknownoutputindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "unknownoutputindex": - return self.by.unknownoutputindex() + if index == 'unknownoutputindex': return self.by.unknownoutputindex() return None - class _MetricPattern29By(Generic[T]): """Index endpoint methods container.""" @@ -2590,8 +2045,7 @@ class _MetricPattern29By(Generic[T]): self._name = name def weekindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "weekindex") - + return MetricEndpoint(self._client, self._name, 'weekindex') class MetricPattern29(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2608,15 +2062,13 @@ class MetricPattern29(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["weekindex"] + return ['weekindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "weekindex": - return self.by.weekindex() + if index == 'weekindex': return self.by.weekindex() return None - class _MetricPattern30By(Generic[T]): """Index endpoint methods container.""" @@ -2625,8 +2077,7 @@ class _MetricPattern30By(Generic[T]): self._name = name def yearindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "yearindex") - + return MetricEndpoint(self._client, self._name, 'yearindex') class MetricPattern30(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2643,15 +2094,13 @@ class MetricPattern30(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["yearindex"] + return ['yearindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "yearindex": - return self.by.yearindex() + if index == 'yearindex': return self.by.yearindex() return None - class _MetricPattern31By(Generic[T]): """Index endpoint methods container.""" @@ -2660,8 +2109,7 @@ class _MetricPattern31By(Generic[T]): self._name = name def loadedaddressindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "loadedaddressindex") - + return MetricEndpoint(self._client, self._name, 'loadedaddressindex') class MetricPattern31(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2678,15 +2126,13 @@ class MetricPattern31(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["loadedaddressindex"] + return ['loadedaddressindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "loadedaddressindex": - return self.by.loadedaddressindex() + if index == 'loadedaddressindex': return self.by.loadedaddressindex() return None - class _MetricPattern32By(Generic[T]): """Index endpoint methods container.""" @@ -2695,8 +2141,7 @@ class _MetricPattern32By(Generic[T]): self._name = name def emptyaddressindex(self) -> MetricEndpoint[T]: - return MetricEndpoint(self._client, self._name, "emptyaddressindex") - + return MetricEndpoint(self._client, self._name, 'emptyaddressindex') class MetricPattern32(Generic[T]): """Index accessor for metrics with 1 indexes.""" @@ -2713,462 +2158,186 @@ class MetricPattern32(Generic[T]): def indexes(self) -> List[str]: """Get the list of available indexes.""" - return ["emptyaddressindex"] + return ['emptyaddressindex'] def get(self, index: str) -> Optional[MetricEndpoint[T]]: """Get an endpoint for a specific index, if supported.""" - if index == "emptyaddressindex": - return self.by.emptyaddressindex() + if index == 'emptyaddressindex': return self.by.emptyaddressindex() return None - # Reusable structural pattern classes - class RealizedPattern3: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.adjusted_sopr: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr") - ) - self.adjusted_sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr_30d_ema") - ) - self.adjusted_sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr_7d_ema") - ) - self.adjusted_value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "adjusted_value_created") - ) - self.adjusted_value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "adjusted_value_destroyed") - ) - self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "mvrv")) - self.neg_realized_loss: BitcoinPattern[Dollars] = BitcoinPattern( - client, _m(acc, "neg_realized_loss") - ) - self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "net_realized_pnl") - ) - self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = ( - MetricPattern4(client, _m(acc, "net_realized_pnl_cumulative_30d_delta")) - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap") - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap") - ) - self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "net_realized_pnl_rel_to_realized_cap")) - ) - self.realized_cap: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_cap") - ) - self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "realized_cap_30d_delta") - ) - self.realized_cap_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "realized_cap_rel_to_own_market_cap")) - ) - self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_loss") - ) - self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_loss_rel_to_realized_cap")) - ) - self.realized_price: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_price") - ) - self.realized_price_extra: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, _m(acc, "realized_price_ratio") - ) - self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_profit") - ) - self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_profit_rel_to_realized_cap")) - ) - self.realized_profit_to_loss_ratio: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "realized_profit_to_loss_ratio") - ) - self.realized_value: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_value") - ) - self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio") - ) - self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_30d_ema") - ) - self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_7d_ema") - ) - self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, "sopr")) - self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_30d_ema") - ) - self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_7d_ema") - ) - self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "total_realized_pnl") - ) - self.value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_created") - ) - self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_destroyed") - ) - + self.adjusted_sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr')) + self.adjusted_sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr_30d_ema')) + self.adjusted_sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr_7d_ema')) + self.adjusted_value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'adjusted_value_created')) + self.adjusted_value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'adjusted_value_destroyed')) + self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'mvrv')) + self.neg_realized_loss: BitcoinPattern[Dollars] = BitcoinPattern(client, _m(acc, 'neg_realized_loss')) + self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')) + self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')) + self.realized_cap: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_cap')) + self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'realized_cap_30d_delta')) + self.realized_cap_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'realized_cap_rel_to_own_market_cap')) + self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_loss')) + self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')) + self.realized_price: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_price')) + self.realized_price_extra: ActivePriceRatioPattern = ActivePriceRatioPattern(client, _m(acc, 'realized_price_ratio')) + self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_profit')) + self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')) + self.realized_profit_to_loss_ratio: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'realized_profit_to_loss_ratio')) + self.realized_value: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_value')) + self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio')) + self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')) + self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')) + self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr')) + self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_30d_ema')) + self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_7d_ema')) + self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'total_realized_pnl')) + self.value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_created')) + self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_destroyed')) class RealizedPattern4: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.adjusted_sopr: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr") - ) - self.adjusted_sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr_30d_ema") - ) - self.adjusted_sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "adjusted_sopr_7d_ema") - ) - self.adjusted_value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "adjusted_value_created") - ) - self.adjusted_value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "adjusted_value_destroyed") - ) - self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "mvrv")) - self.neg_realized_loss: BitcoinPattern[Dollars] = BitcoinPattern( - client, _m(acc, "neg_realized_loss") - ) - self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "net_realized_pnl") - ) - self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = ( - MetricPattern4(client, _m(acc, "net_realized_pnl_cumulative_30d_delta")) - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap") - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap") - ) - self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "net_realized_pnl_rel_to_realized_cap")) - ) - self.realized_cap: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_cap") - ) - self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "realized_cap_30d_delta") - ) - self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_loss") - ) - self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_loss_rel_to_realized_cap")) - ) - self.realized_price: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_price") - ) - self.realized_price_extra: RealizedPriceExtraPattern = ( - RealizedPriceExtraPattern(client, _m(acc, "realized_price")) - ) - self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_profit") - ) - self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_profit_rel_to_realized_cap")) - ) - self.realized_value: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_value") - ) - self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio") - ) - self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_30d_ema") - ) - self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_7d_ema") - ) - self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, "sopr")) - self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_30d_ema") - ) - self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_7d_ema") - ) - self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "total_realized_pnl") - ) - self.value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_created") - ) - self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_destroyed") - ) - + self.adjusted_sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr')) + self.adjusted_sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr_30d_ema')) + self.adjusted_sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'adjusted_sopr_7d_ema')) + self.adjusted_value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'adjusted_value_created')) + self.adjusted_value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'adjusted_value_destroyed')) + self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'mvrv')) + self.neg_realized_loss: BitcoinPattern[Dollars] = BitcoinPattern(client, _m(acc, 'neg_realized_loss')) + self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')) + self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')) + self.realized_cap: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_cap')) + self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'realized_cap_30d_delta')) + self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_loss')) + self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')) + self.realized_price: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_price')) + self.realized_price_extra: RealizedPriceExtraPattern = RealizedPriceExtraPattern(client, _m(acc, 'realized_price')) + self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_profit')) + self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')) + self.realized_value: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_value')) + self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio')) + self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')) + self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')) + self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr')) + self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_30d_ema')) + self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_7d_ema')) + self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'total_realized_pnl')) + self.value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_created')) + self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_destroyed')) class Ratio1ySdPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._0sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "0sd_usd") - ) - self.m0_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "m0_5sd") - ) - self.m0_5sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "m0_5sd_usd") - ) - self.m1_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "m1_5sd") - ) - self.m1_5sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "m1_5sd_usd") - ) - self.m1sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "m1sd")) - self.m1sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "m1sd_usd") - ) - self.m2_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "m2_5sd") - ) - self.m2_5sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "m2_5sd_usd") - ) - self.m2sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "m2sd")) - self.m2sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "m2sd_usd") - ) - self.m3sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "m3sd")) - self.m3sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "m3sd_usd") - ) - self.p0_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "p0_5sd") - ) - self.p0_5sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "p0_5sd_usd") - ) - self.p1_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "p1_5sd") - ) - self.p1_5sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "p1_5sd_usd") - ) - self.p1sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "p1sd")) - self.p1sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "p1sd_usd") - ) - self.p2_5sd: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "p2_5sd") - ) - self.p2_5sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "p2_5sd_usd") - ) - self.p2sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "p2sd")) - self.p2sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "p2sd_usd") - ) - self.p3sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "p3sd")) - self.p3sd_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "p3sd_usd") - ) - self.sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "sd")) - self.sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "sma")) - self.zscore: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "zscore") - ) - + self._0sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, '0sd_usd')) + self.m0_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm0_5sd')) + self.m0_5sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'm0_5sd_usd')) + self.m1_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm1_5sd')) + self.m1_5sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'm1_5sd_usd')) + self.m1sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm1sd')) + self.m1sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'm1sd_usd')) + self.m2_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm2_5sd')) + self.m2_5sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'm2_5sd_usd')) + self.m2sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm2sd')) + self.m2sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'm2sd_usd')) + self.m3sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'm3sd')) + self.m3sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'm3sd_usd')) + self.p0_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p0_5sd')) + self.p0_5sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'p0_5sd_usd')) + self.p1_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p1_5sd')) + self.p1_5sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'p1_5sd_usd')) + self.p1sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p1sd')) + self.p1sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'p1sd_usd')) + self.p2_5sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p2_5sd')) + self.p2_5sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'p2_5sd_usd')) + self.p2sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p2sd')) + self.p2sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'p2sd_usd')) + self.p3sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'p3sd')) + self.p3sd_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'p3sd_usd')) + self.sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sd')) + self.sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sma')) + self.zscore: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'zscore')) class RealizedPattern2: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "mvrv")) - self.neg_realized_loss: BitcoinPattern[Dollars] = BitcoinPattern( - client, _m(acc, "neg_realized_loss") - ) - self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "net_realized_pnl") - ) - self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = ( - MetricPattern4(client, _m(acc, "net_realized_pnl_cumulative_30d_delta")) - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap") - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap") - ) - self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "net_realized_pnl_rel_to_realized_cap")) - ) - self.realized_cap: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_cap") - ) - self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "realized_cap_30d_delta") - ) - self.realized_cap_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "realized_cap_rel_to_own_market_cap")) - ) - self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_loss") - ) - self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_loss_rel_to_realized_cap")) - ) - self.realized_price: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_price") - ) - self.realized_price_extra: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, _m(acc, "realized_price_ratio") - ) - self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_profit") - ) - self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_profit_rel_to_realized_cap")) - ) - self.realized_profit_to_loss_ratio: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "realized_profit_to_loss_ratio") - ) - self.realized_value: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_value") - ) - self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio") - ) - self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_30d_ema") - ) - self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_7d_ema") - ) - self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, "sopr")) - self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_30d_ema") - ) - self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_7d_ema") - ) - self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "total_realized_pnl") - ) - self.value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_created") - ) - self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_destroyed") - ) - + self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'mvrv')) + self.neg_realized_loss: BitcoinPattern[Dollars] = BitcoinPattern(client, _m(acc, 'neg_realized_loss')) + self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')) + self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')) + self.realized_cap: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_cap')) + self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'realized_cap_30d_delta')) + self.realized_cap_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'realized_cap_rel_to_own_market_cap')) + self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_loss')) + self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')) + self.realized_price: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_price')) + self.realized_price_extra: ActivePriceRatioPattern = ActivePriceRatioPattern(client, _m(acc, 'realized_price_ratio')) + self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_profit')) + self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')) + self.realized_profit_to_loss_ratio: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'realized_profit_to_loss_ratio')) + self.realized_value: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_value')) + self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio')) + self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')) + self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')) + self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr')) + self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_30d_ema')) + self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_7d_ema')) + self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'total_realized_pnl')) + self.value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_created')) + self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_destroyed')) class RealizedPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "mvrv")) - self.neg_realized_loss: BitcoinPattern[Dollars] = BitcoinPattern( - client, _m(acc, "neg_realized_loss") - ) - self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "net_realized_pnl") - ) - self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = ( - MetricPattern4(client, _m(acc, "net_realized_pnl_cumulative_30d_delta")) - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap") - ) - self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[ - StoredF32 - ] = MetricPattern4( - client, _m(acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap") - ) - self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "net_realized_pnl_rel_to_realized_cap")) - ) - self.realized_cap: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_cap") - ) - self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "realized_cap_30d_delta") - ) - self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_loss") - ) - self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_loss_rel_to_realized_cap")) - ) - self.realized_price: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_price") - ) - self.realized_price_extra: RealizedPriceExtraPattern = ( - RealizedPriceExtraPattern(client, _m(acc, "realized_price")) - ) - self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "realized_profit") - ) - self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = ( - BlockCountPattern(client, _m(acc, "realized_profit_rel_to_realized_cap")) - ) - self.realized_value: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "realized_value") - ) - self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio") - ) - self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_30d_ema") - ) - self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6( - client, _m(acc, "sell_side_risk_ratio_7d_ema") - ) - self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, "sopr")) - self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_30d_ema") - ) - self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6( - client, _m(acc, "sopr_7d_ema") - ) - self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "total_realized_pnl") - ) - self.value_created: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_created") - ) - self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "value_destroyed") - ) - + self.mvrv: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'mvrv')) + self.neg_realized_loss: BitcoinPattern[Dollars] = BitcoinPattern(client, _m(acc, 'neg_realized_loss')) + self.net_realized_pnl: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl_cumulative_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_market_cap')) + self.net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap')) + self.net_realized_pnl_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')) + self.realized_cap: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_cap')) + self.realized_cap_30d_delta: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'realized_cap_30d_delta')) + self.realized_loss: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_loss')) + self.realized_loss_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')) + self.realized_price: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_price')) + self.realized_price_extra: RealizedPriceExtraPattern = RealizedPriceExtraPattern(client, _m(acc, 'realized_price')) + self.realized_profit: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'realized_profit')) + self.realized_profit_rel_to_realized_cap: BlockCountPattern[StoredF32] = BlockCountPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')) + self.realized_value: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_value')) + self.sell_side_risk_ratio: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio')) + self.sell_side_risk_ratio_30d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_30d_ema')) + self.sell_side_risk_ratio_7d_ema: MetricPattern6[StoredF32] = MetricPattern6(client, _m(acc, 'sell_side_risk_ratio_7d_ema')) + self.sopr: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr')) + self.sopr_30d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_30d_ema')) + self.sopr_7d_ema: MetricPattern6[StoredF64] = MetricPattern6(client, _m(acc, 'sopr_7d_ema')) + self.total_realized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'total_realized_pnl')) + self.value_created: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_created')) + self.value_destroyed: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'value_destroyed')) class Price111dSmaPattern: """Pattern struct for repeated tree structure.""" @@ -3176,124 +2345,25 @@ class Price111dSmaPattern: def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.price: MetricPattern4[Dollars] = MetricPattern4(client, acc) - self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "ratio")) - self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_1m_sma") - ) - self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_1w_sma") - ) - self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern( - client, _m(acc, "ratio_1y") - ) - self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern( - client, _m(acc, "ratio_2y") - ) - self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern( - client, _m(acc, "ratio_4y") - ) - self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct1") - ) - self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "ratio_pct1_usd") - ) - self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct2") - ) - self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "ratio_pct2_usd") - ) - self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct5") - ) - self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "ratio_pct5_usd") - ) - self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct95") - ) - self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "ratio_pct95_usd") - ) - self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct98") - ) - self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "ratio_pct98_usd") - ) - self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "ratio_pct99") - ) - 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.cost_basis_pct05: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct05") - ) - self.cost_basis_pct10: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct10") - ) - self.cost_basis_pct15: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct15") - ) - self.cost_basis_pct20: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct20") - ) - self.cost_basis_pct25: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct25") - ) - self.cost_basis_pct30: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct30") - ) - self.cost_basis_pct35: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct35") - ) - self.cost_basis_pct40: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct40") - ) - self.cost_basis_pct45: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct45") - ) - self.cost_basis_pct50: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct50") - ) - self.cost_basis_pct55: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct55") - ) - self.cost_basis_pct60: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct60") - ) - self.cost_basis_pct65: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct65") - ) - self.cost_basis_pct70: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct70") - ) - self.cost_basis_pct75: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct75") - ) - self.cost_basis_pct80: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct80") - ) - self.cost_basis_pct85: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct85") - ) - self.cost_basis_pct90: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct90") - ) - self.cost_basis_pct95: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct95") - ) - + self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio')) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_1m_sma')) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_1w_sma')) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, 'ratio_1y')) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, 'ratio_2y')) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, 'ratio_4y')) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct1')) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'ratio_pct1_usd')) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct2')) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'ratio_pct2_usd')) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct5')) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'ratio_pct5_usd')) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct95')) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'ratio_pct95_usd')) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct98')) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'ratio_pct98_usd')) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio_pct99')) + self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'ratio_pct99_usd')) + self.ratio_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, 'ratio')) class ActivePriceRatioPattern: """Pattern struct for repeated tree structure.""" @@ -3301,499 +2371,289 @@ class ActivePriceRatioPattern: def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, acc) - self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "1m_sma") - ) - self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "1w_sma") - ) - self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, "1y")) - self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, "2y")) - self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, "4y")) - self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct1") - ) - self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct1_usd") - ) - self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct2") - ) - self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct2_usd") - ) - self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct5") - ) - self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct5_usd") - ) - self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct95") - ) - self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct95_usd") - ) - self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct98") - ) - self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct98_usd") - ) - self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4( - client, _m(acc, "pct99") - ) - self.ratio_pct99_usd: MetricPattern4[Dollars] = MetricPattern4( - client, _m(acc, "pct99_usd") - ) + self.ratio_1m_sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, '1m_sma')) + self.ratio_1w_sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, '1w_sma')) + self.ratio_1y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, '1y')) + self.ratio_2y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, '2y')) + self.ratio_4y_sd: Ratio1ySdPattern = Ratio1ySdPattern(client, _m(acc, '4y')) + self.ratio_pct1: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct1')) + self.ratio_pct1_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct1_usd')) + self.ratio_pct2: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct2')) + self.ratio_pct2_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct2_usd')) + self.ratio_pct5: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct5')) + self.ratio_pct5_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct5_usd')) + self.ratio_pct95: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct95')) + self.ratio_pct95_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct95_usd')) + self.ratio_pct98: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct98')) + self.ratio_pct98_usd: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct98_usd')) + self.ratio_pct99: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'pct99')) + 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.cost_basis_pct05: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct05')) + self.cost_basis_pct10: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct10')) + self.cost_basis_pct15: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct15')) + self.cost_basis_pct20: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct20')) + self.cost_basis_pct25: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct25')) + self.cost_basis_pct30: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct30')) + self.cost_basis_pct35: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct35')) + self.cost_basis_pct40: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct40')) + self.cost_basis_pct45: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct45')) + self.cost_basis_pct50: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct50')) + self.cost_basis_pct55: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct55')) + self.cost_basis_pct60: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct60')) + self.cost_basis_pct65: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct65')) + self.cost_basis_pct70: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct70')) + self.cost_basis_pct75: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct75')) + self.cost_basis_pct80: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct80')) + self.cost_basis_pct85: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct85')) + self.cost_basis_pct90: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct90')) + self.cost_basis_pct95: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'pct95')) class RelativePattern5: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.neg_unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "neg_unrealized_loss_rel_to_market_cap")) - ) - self.neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "neg_unrealized_loss_rel_to_own_market_cap")) - ) - self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl") - ) - self.net_unrealized_pnl_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "net_unrealized_pnl_rel_to_market_cap")) - ) - self.net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "net_unrealized_pnl_rel_to_own_market_cap")) - ) - self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl") - ) - self.nupl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, "nupl")) - self.supply_in_loss_rel_to_circulating_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_loss_rel_to_circulating_supply")) - ) - self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_loss_rel_to_own_supply")) - ) - self.supply_in_profit_rel_to_circulating_supply: MetricPattern1[StoredF64] = ( - MetricPattern1( - client, _m(acc, "supply_in_profit_rel_to_circulating_supply") - ) - ) - self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_profit_rel_to_own_supply")) - ) - self.supply_rel_to_circulating_supply: MetricPattern4[StoredF64] = ( - MetricPattern4(client, _m(acc, "supply_rel_to_circulating_supply")) - ) - self.unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_loss_rel_to_market_cap")) - ) - self.unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_loss_rel_to_own_market_cap")) - ) - self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "unrealized_loss_rel_to_own_total_unrealized_pnl") - ) - self.unrealized_profit_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_profit_rel_to_market_cap")) - ) - self.unrealized_profit_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_profit_rel_to_own_market_cap")) - ) - self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "unrealized_profit_rel_to_own_total_unrealized_pnl") - ) - + self.neg_unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_market_cap')) + self.neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_market_cap')) + self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_total_unrealized_pnl')) + self.net_unrealized_pnl_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap')) + self.net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_market_cap')) + self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_total_unrealized_pnl')) + self.nupl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'nupl')) + self.supply_in_loss_rel_to_circulating_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_circulating_supply')) + self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_own_supply')) + self.supply_in_profit_rel_to_circulating_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_circulating_supply')) + self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_own_supply')) + self.supply_rel_to_circulating_supply: MetricPattern4[StoredF64] = MetricPattern4(client, _m(acc, 'supply_rel_to_circulating_supply')) + self.unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_market_cap')) + self.unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_market_cap')) + self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_total_unrealized_pnl')) + self.unrealized_profit_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_market_cap')) + self.unrealized_profit_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_market_cap')) + self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_total_unrealized_pnl')) class AaopoolPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._1m_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1( - client, _m(acc, "1m_blocks_mined") - ) - self._1m_dominance: MetricPattern1[StoredF32] = MetricPattern1( - client, _m(acc, "1m_dominance") - ) - self._1w_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1( - client, _m(acc, "1w_blocks_mined") - ) - self._1w_dominance: MetricPattern1[StoredF32] = MetricPattern1( - client, _m(acc, "1w_dominance") - ) - self._1y_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1( - client, _m(acc, "1y_blocks_mined") - ) - self._1y_dominance: MetricPattern1[StoredF32] = MetricPattern1( - client, _m(acc, "1y_dominance") - ) - self._24h_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1( - client, _m(acc, "24h_blocks_mined") - ) - self._24h_dominance: MetricPattern1[StoredF32] = MetricPattern1( - client, _m(acc, "24h_dominance") - ) - self.blocks_mined: BlockCountPattern[StoredU32] = BlockCountPattern( - client, _m(acc, "blocks_mined") - ) - self.coinbase: CoinbasePattern2 = CoinbasePattern2(client, _m(acc, "coinbase")) - self.days_since_block: MetricPattern4[StoredU16] = MetricPattern4( - client, _m(acc, "days_since_block") - ) - self.dominance: MetricPattern1[StoredF32] = MetricPattern1( - client, _m(acc, "dominance") - ) - self.fee: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, _m(acc, "fee") - ) - self.subsidy: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, _m(acc, "subsidy") - ) - + self._1m_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1(client, _m(acc, '1m_blocks_mined')) + self._1m_dominance: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, '1m_dominance')) + self._1w_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1(client, _m(acc, '1w_blocks_mined')) + self._1w_dominance: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, '1w_dominance')) + self._1y_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1(client, _m(acc, '1y_blocks_mined')) + self._1y_dominance: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, '1y_dominance')) + self._24h_blocks_mined: MetricPattern1[StoredU32] = MetricPattern1(client, _m(acc, '24h_blocks_mined')) + self._24h_dominance: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, '24h_dominance')) + self.blocks_mined: BlockCountPattern[StoredU32] = BlockCountPattern(client, _m(acc, 'blocks_mined')) + self.coinbase: CoinbasePattern2 = CoinbasePattern2(client, _m(acc, 'coinbase')) + self.days_since_block: MetricPattern4[StoredU16] = MetricPattern4(client, _m(acc, 'days_since_block')) + self.dominance: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'dominance')) + self.fee: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, _m(acc, 'fee')) + self.subsidy: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, _m(acc, 'subsidy')) class PriceAgoPattern(Generic[T]): """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, base_path: str): - self._10y: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_10y") - self._1d: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_1d") - self._1m: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_1m") - self._1w: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_1w") - self._1y: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_1y") - self._2y: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2y") - self._3m: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_3m") - self._3y: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_3y") - self._4y: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_4y") - self._5y: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_5y") - self._6m: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_6m") - self._6y: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_6y") - self._8y: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_8y") - + self._10y: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_10y') + self._1d: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_1d') + self._1m: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_1m') + self._1w: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_1w') + self._1y: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_1y') + self._2y: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2y') + self._3m: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_3m') + self._3y: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_3y') + self._4y: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_4y') + self._5y: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_5y') + self._6m: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_6m') + self._6y: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_6y') + self._8y: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_8y') class PeriodLumpSumStackPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._10y: _2015Pattern = _2015Pattern(client, (f"10y_{acc}" if acc else "10y")) - self._1m: _2015Pattern = _2015Pattern(client, (f"1m_{acc}" if acc else "1m")) - self._1w: _2015Pattern = _2015Pattern(client, (f"1w_{acc}" if acc else "1w")) - self._1y: _2015Pattern = _2015Pattern(client, (f"1y_{acc}" if acc else "1y")) - self._2y: _2015Pattern = _2015Pattern(client, (f"2y_{acc}" if acc else "2y")) - self._3m: _2015Pattern = _2015Pattern(client, (f"3m_{acc}" if acc else "3m")) - self._3y: _2015Pattern = _2015Pattern(client, (f"3y_{acc}" if acc else "3y")) - self._4y: _2015Pattern = _2015Pattern(client, (f"4y_{acc}" if acc else "4y")) - self._5y: _2015Pattern = _2015Pattern(client, (f"5y_{acc}" if acc else "5y")) - self._6m: _2015Pattern = _2015Pattern(client, (f"6m_{acc}" if acc else "6m")) - self._6y: _2015Pattern = _2015Pattern(client, (f"6y_{acc}" if acc else "6y")) - self._8y: _2015Pattern = _2015Pattern(client, (f"8y_{acc}" if acc else "8y")) - + self._10y: _2015Pattern = _2015Pattern(client, (f'10y_{acc}' if acc else '10y')) + self._1m: _2015Pattern = _2015Pattern(client, (f'1m_{acc}' if acc else '1m')) + self._1w: _2015Pattern = _2015Pattern(client, (f'1w_{acc}' if acc else '1w')) + self._1y: _2015Pattern = _2015Pattern(client, (f'1y_{acc}' if acc else '1y')) + self._2y: _2015Pattern = _2015Pattern(client, (f'2y_{acc}' if acc else '2y')) + self._3m: _2015Pattern = _2015Pattern(client, (f'3m_{acc}' if acc else '3m')) + self._3y: _2015Pattern = _2015Pattern(client, (f'3y_{acc}' if acc else '3y')) + self._4y: _2015Pattern = _2015Pattern(client, (f'4y_{acc}' if acc else '4y')) + self._5y: _2015Pattern = _2015Pattern(client, (f'5y_{acc}' if acc else '5y')) + self._6m: _2015Pattern = _2015Pattern(client, (f'6m_{acc}' if acc else '6m')) + self._6y: _2015Pattern = _2015Pattern(client, (f'6y_{acc}' if acc else '6y')) + self._8y: _2015Pattern = _2015Pattern(client, (f'8y_{acc}' if acc else '8y')) class PeriodAveragePricePattern(Generic[T]): """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._10y: MetricPattern4[T] = MetricPattern4( - client, (f"10y_{acc}" if acc else "10y") - ) - self._1m: MetricPattern4[T] = MetricPattern4( - client, (f"1m_{acc}" if acc else "1m") - ) - self._1w: MetricPattern4[T] = MetricPattern4( - client, (f"1w_{acc}" if acc else "1w") - ) - self._1y: MetricPattern4[T] = MetricPattern4( - client, (f"1y_{acc}" if acc else "1y") - ) - self._2y: MetricPattern4[T] = MetricPattern4( - client, (f"2y_{acc}" if acc else "2y") - ) - self._3m: MetricPattern4[T] = MetricPattern4( - client, (f"3m_{acc}" if acc else "3m") - ) - self._3y: MetricPattern4[T] = MetricPattern4( - client, (f"3y_{acc}" if acc else "3y") - ) - self._4y: MetricPattern4[T] = MetricPattern4( - client, (f"4y_{acc}" if acc else "4y") - ) - self._5y: MetricPattern4[T] = MetricPattern4( - client, (f"5y_{acc}" if acc else "5y") - ) - self._6m: MetricPattern4[T] = MetricPattern4( - client, (f"6m_{acc}" if acc else "6m") - ) - self._6y: MetricPattern4[T] = MetricPattern4( - client, (f"6y_{acc}" if acc else "6y") - ) - self._8y: MetricPattern4[T] = MetricPattern4( - client, (f"8y_{acc}" if acc else "8y") - ) - + self._10y: MetricPattern4[T] = MetricPattern4(client, (f'10y_{acc}' if acc else '10y')) + self._1m: MetricPattern4[T] = MetricPattern4(client, (f'1m_{acc}' if acc else '1m')) + self._1w: MetricPattern4[T] = MetricPattern4(client, (f'1w_{acc}' if acc else '1w')) + self._1y: MetricPattern4[T] = MetricPattern4(client, (f'1y_{acc}' if acc else '1y')) + self._2y: MetricPattern4[T] = MetricPattern4(client, (f'2y_{acc}' if acc else '2y')) + self._3m: MetricPattern4[T] = MetricPattern4(client, (f'3m_{acc}' if acc else '3m')) + self._3y: MetricPattern4[T] = MetricPattern4(client, (f'3y_{acc}' if acc else '3y')) + self._4y: MetricPattern4[T] = MetricPattern4(client, (f'4y_{acc}' if acc else '4y')) + self._5y: MetricPattern4[T] = MetricPattern4(client, (f'5y_{acc}' if acc else '5y')) + self._6m: MetricPattern4[T] = MetricPattern4(client, (f'6m_{acc}' if acc else '6m')) + self._6y: MetricPattern4[T] = MetricPattern4(client, (f'6y_{acc}' if acc else '6y')) + self._8y: MetricPattern4[T] = MetricPattern4(client, (f'8y_{acc}' if acc else '8y')) class DollarsPattern(Generic[T]): """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.average: MetricPattern2[T] = MetricPattern2(client, _m(acc, "average")) + self.average: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'average')) self.base: MetricPattern11[T] = MetricPattern11(client, acc) - self.cumulative: MetricPattern1[T] = MetricPattern1( - client, _m(acc, "cumulative") - ) - self.max: MetricPattern2[T] = MetricPattern2(client, _m(acc, "max")) - self.median: MetricPattern6[T] = MetricPattern6(client, _m(acc, "median")) - self.min: MetricPattern2[T] = MetricPattern2(client, _m(acc, "min")) - self.pct10: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct10")) - self.pct25: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct25")) - self.pct75: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct75")) - self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct90")) - self.sum: MetricPattern2[T] = MetricPattern2(client, _m(acc, "sum")) - + self.cumulative: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'cumulative')) + self.max: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'max')) + self.median: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'median')) + self.min: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'min')) + self.pct10: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct10')) + self.pct25: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct25')) + self.pct75: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct75')) + self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct90')) + self.sum: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'sum')) class ClassAveragePricePattern(Generic[T]): """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, base_path: str): - self._2015: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2015") - self._2016: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2016") - self._2017: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2017") - self._2018: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2018") - self._2019: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2019") - self._2020: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2020") - self._2021: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2021") - self._2022: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2022") - self._2023: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2023") - self._2024: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2024") - self._2025: MetricPattern4[T] = MetricPattern4(client, f"{base_path}_2025") - + self._2015: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2015') + self._2016: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2016') + self._2017: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2017') + self._2018: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2018') + self._2019: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2019') + self._2020: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2020') + self._2021: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2021') + self._2022: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2022') + self._2023: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2023') + self._2024: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2024') + self._2025: MetricPattern4[T] = MetricPattern4(client, f'{base_path}_2025') class FullnessPattern(Generic[T]): """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.average: MetricPattern2[T] = MetricPattern2(client, _m(acc, "average")) + self.average: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'average')) self.base: MetricPattern11[T] = MetricPattern11(client, acc) - self.cumulative: MetricPattern2[T] = MetricPattern2( - client, _m(acc, "cumulative") - ) - self.max: MetricPattern2[T] = MetricPattern2(client, _m(acc, "max")) - self.median: MetricPattern6[T] = MetricPattern6(client, _m(acc, "median")) - self.min: MetricPattern2[T] = MetricPattern2(client, _m(acc, "min")) - self.pct10: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct10")) - self.pct25: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct25")) - self.pct75: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct75")) - self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, "pct90")) - self.sum: MetricPattern2[T] = MetricPattern2(client, _m(acc, "sum")) - + self.cumulative: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'cumulative')) + self.max: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'max')) + self.median: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'median')) + self.min: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'min')) + self.pct10: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct10')) + self.pct25: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct25')) + self.pct75: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct75')) + self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct90')) + self.sum: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'sum')) class RelativePattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.neg_unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "neg_unrealized_loss_rel_to_market_cap")) - ) - self.net_unrealized_pnl_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "net_unrealized_pnl_rel_to_market_cap")) - ) - self.nupl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, "nupl")) - self.supply_in_loss_rel_to_circulating_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_loss_rel_to_circulating_supply")) - ) - self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_loss_rel_to_own_supply")) - ) - self.supply_in_profit_rel_to_circulating_supply: MetricPattern1[StoredF64] = ( - MetricPattern1( - client, _m(acc, "supply_in_profit_rel_to_circulating_supply") - ) - ) - self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_profit_rel_to_own_supply")) - ) - self.supply_rel_to_circulating_supply: MetricPattern4[StoredF64] = ( - MetricPattern4(client, _m(acc, "supply_rel_to_circulating_supply")) - ) - self.unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_loss_rel_to_market_cap")) - ) - self.unrealized_profit_rel_to_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_profit_rel_to_market_cap")) - ) - + self.neg_unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_market_cap')) + self.net_unrealized_pnl_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap')) + self.nupl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'nupl')) + self.supply_in_loss_rel_to_circulating_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_circulating_supply')) + self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_own_supply')) + self.supply_in_profit_rel_to_circulating_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_circulating_supply')) + self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_own_supply')) + self.supply_rel_to_circulating_supply: MetricPattern4[StoredF64] = MetricPattern4(client, _m(acc, 'supply_rel_to_circulating_supply')) + self.unrealized_loss_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_market_cap')) + self.unrealized_profit_rel_to_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_market_cap')) class RelativePattern2: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "neg_unrealized_loss_rel_to_own_market_cap")) - ) - self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl") - ) - self.net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "net_unrealized_pnl_rel_to_own_market_cap")) - ) - self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl") - ) - self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_loss_rel_to_own_supply")) - ) - self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "supply_in_profit_rel_to_own_supply")) - ) - self.unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_loss_rel_to_own_market_cap")) - ) - self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "unrealized_loss_rel_to_own_total_unrealized_pnl") - ) - self.unrealized_profit_rel_to_own_market_cap: MetricPattern1[StoredF32] = ( - MetricPattern1(client, _m(acc, "unrealized_profit_rel_to_own_market_cap")) - ) - self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, _m(acc, "unrealized_profit_rel_to_own_total_unrealized_pnl") - ) - + self.neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_market_cap')) + self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss_rel_to_own_total_unrealized_pnl')) + self.net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_market_cap')) + self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl_rel_to_own_total_unrealized_pnl')) + self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_loss_rel_to_own_supply')) + self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'supply_in_profit_rel_to_own_supply')) + self.unrealized_loss_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_market_cap')) + self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_loss_rel_to_own_total_unrealized_pnl')) + self.unrealized_profit_rel_to_own_market_cap: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_market_cap')) + self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'unrealized_profit_rel_to_own_total_unrealized_pnl')) class CountPattern2(Generic[T]): """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.average: MetricPattern1[T] = MetricPattern1(client, _m(acc, "average")) - self.cumulative: MetricPattern1[T] = MetricPattern1( - client, _m(acc, "cumulative") - ) - self.max: MetricPattern1[T] = MetricPattern1(client, _m(acc, "max")) - self.median: MetricPattern11[T] = MetricPattern11(client, _m(acc, "median")) - self.min: MetricPattern1[T] = MetricPattern1(client, _m(acc, "min")) - self.pct10: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct10")) - self.pct25: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct25")) - self.pct75: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct75")) - self.pct90: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct90")) - self.sum: MetricPattern1[T] = MetricPattern1(client, _m(acc, "sum")) - + self.average: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'average')) + self.cumulative: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'cumulative')) + self.max: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'max')) + self.median: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'median')) + self.min: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'min')) + self.pct10: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct10')) + self.pct25: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct25')) + self.pct75: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct75')) + self.pct90: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct90')) + self.sum: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'sum')) class AddrCountPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, base_path: str): - self.all: MetricPattern1[StoredU64] = MetricPattern1(client, f"{base_path}_all") - self.p2a: MetricPattern1[StoredU64] = MetricPattern1(client, f"{base_path}_p2a") - self.p2pk33: MetricPattern1[StoredU64] = MetricPattern1( - client, f"{base_path}_p2pk33" - ) - self.p2pk65: MetricPattern1[StoredU64] = MetricPattern1( - client, f"{base_path}_p2pk65" - ) - self.p2pkh: MetricPattern1[StoredU64] = MetricPattern1( - client, f"{base_path}_p2pkh" - ) - self.p2sh: MetricPattern1[StoredU64] = MetricPattern1( - client, f"{base_path}_p2sh" - ) - self.p2tr: MetricPattern1[StoredU64] = MetricPattern1( - client, f"{base_path}_p2tr" - ) - self.p2wpkh: MetricPattern1[StoredU64] = MetricPattern1( - client, f"{base_path}_p2wpkh" - ) - self.p2wsh: MetricPattern1[StoredU64] = MetricPattern1( - client, f"{base_path}_p2wsh" - ) - + self.all: MetricPattern1[StoredU64] = MetricPattern1(client, f'{base_path}_all') + self.p2a: MetricPattern1[StoredU64] = MetricPattern1(client, f'{base_path}_p2a') + self.p2pk33: MetricPattern1[StoredU64] = MetricPattern1(client, f'{base_path}_p2pk33') + self.p2pk65: MetricPattern1[StoredU64] = MetricPattern1(client, f'{base_path}_p2pk65') + self.p2pkh: MetricPattern1[StoredU64] = MetricPattern1(client, f'{base_path}_p2pkh') + self.p2sh: MetricPattern1[StoredU64] = MetricPattern1(client, f'{base_path}_p2sh') + self.p2tr: MetricPattern1[StoredU64] = MetricPattern1(client, f'{base_path}_p2tr') + self.p2wpkh: MetricPattern1[StoredU64] = MetricPattern1(client, f'{base_path}_p2wpkh') + self.p2wsh: MetricPattern1[StoredU64] = MetricPattern1(client, f'{base_path}_p2wsh') class FeeRatePattern(Generic[T]): """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.average: MetricPattern1[T] = MetricPattern1(client, _m(acc, "average")) - self.max: MetricPattern1[T] = MetricPattern1(client, _m(acc, "max")) - self.median: MetricPattern11[T] = MetricPattern11(client, _m(acc, "median")) - self.min: MetricPattern1[T] = MetricPattern1(client, _m(acc, "min")) - self.pct10: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct10")) - self.pct25: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct25")) - self.pct75: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct75")) - self.pct90: MetricPattern11[T] = MetricPattern11(client, _m(acc, "pct90")) + self.average: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'average')) + self.max: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'max')) + self.median: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'median')) + self.min: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'min')) + self.pct10: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct10')) + self.pct25: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct25')) + self.pct75: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct75')) + self.pct90: MetricPattern11[T] = MetricPattern11(client, _m(acc, 'pct90')) self.txindex: MetricPattern27[T] = MetricPattern27(client, acc) - class _0satsPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.activity: ActivityPattern2 = ActivityPattern2(client, acc) - self.addr_count: MetricPattern1[StoredU64] = MetricPattern1( - client, _m(acc, "addr_count") - ) + self.addr_count: MetricPattern1[StoredU64] = MetricPattern1(client, _m(acc, 'addr_count')) self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) self.outputs: OutputsPattern = OutputsPattern(client, acc) self.realized: RealizedPattern = RealizedPattern(client, acc) self.relative: RelativePattern = RelativePattern(client, acc) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) + self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) - -class _100btcPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.activity: ActivityPattern2 = ActivityPattern2(client, acc) - self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) - self.outputs: OutputsPattern = OutputsPattern(client, acc) - self.realized: RealizedPattern = RealizedPattern(client, acc) - self.relative: RelativePattern = RelativePattern(client, acc) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) - - -class _0satsPattern2: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.activity: ActivityPattern2 = ActivityPattern2(client, acc) - self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) - self.outputs: OutputsPattern = OutputsPattern(client, acc) - self.realized: RealizedPattern = RealizedPattern(client, acc) - self.relative: RelativePattern4 = RelativePattern4(client, _m(acc, "supply_in")) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) - - class _10yTo12yPattern: """Pattern struct for repeated tree structure.""" @@ -3804,65 +2664,60 @@ class _10yTo12yPattern: self.outputs: OutputsPattern = OutputsPattern(client, acc) self.realized: RealizedPattern2 = RealizedPattern2(client, acc) self.relative: RelativePattern2 = RelativePattern2(client, acc) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) + self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) - -class UnrealizedPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.neg_unrealized_loss: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "neg_unrealized_loss") - ) - self.net_unrealized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "net_unrealized_pnl") - ) - self.supply_in_loss: ActiveSupplyPattern = ActiveSupplyPattern( - client, _m(acc, "supply_in_loss") - ) - self.supply_in_profit: ActiveSupplyPattern = ActiveSupplyPattern( - client, _m(acc, "supply_in_profit") - ) - self.total_unrealized_pnl: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "total_unrealized_pnl") - ) - self.unrealized_loss: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "unrealized_loss") - ) - self.unrealized_profit: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "unrealized_profit") - ) - - class PeriodCagrPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self._10y: MetricPattern4[StoredF32] = MetricPattern4( - client, (f"10y_{acc}" if acc else "10y") - ) - self._2y: MetricPattern4[StoredF32] = MetricPattern4( - client, (f"2y_{acc}" if acc else "2y") - ) - self._3y: MetricPattern4[StoredF32] = MetricPattern4( - client, (f"3y_{acc}" if acc else "3y") - ) - self._4y: MetricPattern4[StoredF32] = MetricPattern4( - client, (f"4y_{acc}" if acc else "4y") - ) - self._5y: MetricPattern4[StoredF32] = MetricPattern4( - client, (f"5y_{acc}" if acc else "5y") - ) - self._6y: MetricPattern4[StoredF32] = MetricPattern4( - client, (f"6y_{acc}" if acc else "6y") - ) - self._8y: MetricPattern4[StoredF32] = MetricPattern4( - client, (f"8y_{acc}" if acc else "8y") - ) + self._10y: MetricPattern4[StoredF32] = MetricPattern4(client, (f'10y_{acc}' if acc else '10y')) + self._2y: MetricPattern4[StoredF32] = MetricPattern4(client, (f'2y_{acc}' if acc else '2y')) + self._3y: MetricPattern4[StoredF32] = MetricPattern4(client, (f'3y_{acc}' if acc else '3y')) + self._4y: MetricPattern4[StoredF32] = MetricPattern4(client, (f'4y_{acc}' if acc else '4y')) + self._5y: MetricPattern4[StoredF32] = MetricPattern4(client, (f'5y_{acc}' if acc else '5y')) + self._6y: MetricPattern4[StoredF32] = MetricPattern4(client, (f'6y_{acc}' if acc else '6y')) + self._8y: MetricPattern4[StoredF32] = MetricPattern4(client, (f'8y_{acc}' if acc else '8y')) +class _0satsPattern2: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.activity: ActivityPattern2 = ActivityPattern2(client, acc) + self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc) + self.outputs: OutputsPattern = OutputsPattern(client, acc) + self.realized: RealizedPattern = RealizedPattern(client, acc) + self.relative: RelativePattern4 = RelativePattern4(client, _m(acc, 'supply_in')) + self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) + +class UnrealizedPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.neg_unrealized_loss: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss')) + self.net_unrealized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'net_unrealized_pnl')) + self.supply_in_loss: ActiveSupplyPattern = ActiveSupplyPattern(client, _m(acc, 'supply_in_loss')) + self.supply_in_profit: ActiveSupplyPattern = ActiveSupplyPattern(client, _m(acc, 'supply_in_profit')) + self.total_unrealized_pnl: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'total_unrealized_pnl')) + self.unrealized_loss: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'unrealized_loss')) + self.unrealized_profit: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'unrealized_profit')) + +class _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, acc) + 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.""" @@ -3874,221 +2729,167 @@ class _10yPattern: self.outputs: OutputsPattern = OutputsPattern(client, acc) self.realized: RealizedPattern4 = RealizedPattern4(client, acc) self.relative: RelativePattern = RelativePattern(client, acc) - self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, "supply")) + self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply')) self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc) - class ActivityPattern2: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.coinblocks_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern( - client, _m(acc, "coinblocks_destroyed") - ) - self.coindays_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern( - client, _m(acc, "coindays_destroyed") - ) - self.satblocks_destroyed: MetricPattern11[Sats] = MetricPattern11( - client, _m(acc, "satblocks_destroyed") - ) - self.satdays_destroyed: MetricPattern11[Sats] = MetricPattern11( - client, _m(acc, "satdays_destroyed") - ) - self.sent: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, _m(acc, "sent") - ) - + self.coinblocks_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern(client, _m(acc, 'coinblocks_destroyed')) + self.coindays_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern(client, _m(acc, 'coindays_destroyed')) + self.satblocks_destroyed: MetricPattern11[Sats] = MetricPattern11(client, _m(acc, 'satblocks_destroyed')) + self.satdays_destroyed: MetricPattern11[Sats] = MetricPattern11(client, _m(acc, 'satdays_destroyed')) + self.sent: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, _m(acc, 'sent')) class SplitPattern2(Generic[T]): """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.close: MetricPattern1[T] = MetricPattern1(client, _m(acc, "close")) - self.high: MetricPattern1[T] = MetricPattern1(client, _m(acc, "high")) - self.low: MetricPattern1[T] = MetricPattern1(client, _m(acc, "low")) - self.open: MetricPattern1[T] = MetricPattern1(client, _m(acc, "open")) - + self.close: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'close')) + self.high: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'high')) + self.low: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'low')) + self.open: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'open')) class CoinbasePattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.bitcoin: FullnessPattern[Bitcoin] = FullnessPattern(client, _m(acc, "btc")) - self.dollars: DollarsPattern[Dollars] = DollarsPattern(client, _m(acc, "usd")) + self.bitcoin: FullnessPattern[Bitcoin] = FullnessPattern(client, _m(acc, 'btc')) + self.dollars: DollarsPattern[Dollars] = DollarsPattern(client, _m(acc, 'usd')) self.sats: DollarsPattern[Sats] = DollarsPattern(client, acc) - -class CoinbasePattern2: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.bitcoin: BlockCountPattern[Bitcoin] = BlockCountPattern( - client, _m(acc, "btc") - ) - self.dollars: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "usd") - ) - self.sats: BlockCountPattern[Sats] = BlockCountPattern(client, acc) - - class ActiveSupplyPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.bitcoin: MetricPattern1[Bitcoin] = MetricPattern1(client, _m(acc, "btc")) - self.dollars: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, "usd")) + self.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: BitcoinPattern[Bitcoin] = BitcoinPattern(client, _m(acc, "btc")) - self.dollars: BlockCountPattern[Dollars] = BlockCountPattern( - client, _m(acc, "usd") - ) + self.bitcoin: BitcoinPattern[Bitcoin] = BitcoinPattern(client, _m(acc, 'btc')) + self.dollars: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'usd')) self.sats: BlockCountPattern[Sats] = BlockCountPattern(client, acc) - -class _2015Pattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.bitcoin: MetricPattern4[Bitcoin] = MetricPattern4(client, _m(acc, "btc")) - self.dollars: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, "usd")) - self.sats: MetricPattern4[Sats] = MetricPattern4(client, acc) - - -class CostBasisPattern2: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, base_path: str): - self.max: MetricPattern1[Dollars] = MetricPattern1(client, f"{base_path}_max") - self.min: MetricPattern1[Dollars] = MetricPattern1(client, f"{base_path}_min") - self.percentiles: PercentilesPattern = PercentilesPattern( - client, f"{base_path}_percentiles" - ) - - class SegwitAdoptionPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" self.base: MetricPattern11[StoredF32] = MetricPattern11(client, acc) - self.cumulative: MetricPattern2[StoredF32] = MetricPattern2( - client, _m(acc, "cumulative") - ) - self.sum: MetricPattern2[StoredF32] = MetricPattern2(client, _m(acc, "sum")) + self.cumulative: MetricPattern2[StoredF32] = MetricPattern2(client, _m(acc, 'cumulative')) + self.sum: MetricPattern2[StoredF32] = MetricPattern2(client, _m(acc, 'sum')) +class CostBasisPattern2: + """Pattern struct for repeated tree structure.""" -class RelativePattern4: + def __init__(self, client: BrkClientBase, base_path: str): + self.max: MetricPattern1[Dollars] = MetricPattern1(client, f'{base_path}_max') + self.min: MetricPattern1[Dollars] = MetricPattern1(client, f'{base_path}_min') + self.percentiles: PercentilesPattern = PercentilesPattern(client, f'{base_path}_percentiles') + +class CoinbasePattern2: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "loss_rel_to_own_supply")) - ) - self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, _m(acc, "profit_rel_to_own_supply")) - ) + self.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.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.bitcoin: MetricPattern4[Bitcoin] = MetricPattern4(client, _m(acc, 'btc')) + self.dollars: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'usd')) + self.sats: MetricPattern4[Sats] = MetricPattern4(client, acc) class SupplyPattern2: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.halved: ActiveSupplyPattern = ActiveSupplyPattern(client, _m(acc, "half")) + self.halved: ActiveSupplyPattern = ActiveSupplyPattern(client, _m(acc, 'half')) self.total: ActiveSupplyPattern = ActiveSupplyPattern(client, acc) - -class CostBasisPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.max: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "max_cost_basis") - ) - self.min: MetricPattern1[Dollars] = MetricPattern1( - client, _m(acc, "min_cost_basis") - ) - - class _1dReturns1mSdPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "sd")) - self.sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "sma")) + self.sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sd')) + self.sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sma')) - -class BlockCountPattern(Generic[T]): +class CostBasisPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.cumulative: MetricPattern1[T] = MetricPattern1( - client, _m(acc, "cumulative") - ) - self.sum: MetricPattern1[T] = MetricPattern1(client, acc) + self.max: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'max_cost_basis')) + self.min: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'min_cost_basis')) +class RelativePattern4: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'loss_rel_to_own_supply')) + self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'profit_rel_to_own_supply')) class BitcoinPattern(Generic[T]): """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.cumulative: MetricPattern2[T] = MetricPattern2( - client, _m(acc, "cumulative") - ) + self.cumulative: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'cumulative')) self.sum: MetricPattern1[T] = MetricPattern1(client, acc) - class SatsPattern(Generic[T]): """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, base_path: str): - self.ohlc: MetricPattern1[T] = MetricPattern1(client, f"{base_path}_ohlc") - self.split: SplitPattern2[Any] = SplitPattern2(client, f"{base_path}_split") + self.ohlc: MetricPattern1[T] = MetricPattern1(client, f'{base_path}_ohlc') + self.split: SplitPattern2[Any] = SplitPattern2(client, f'{base_path}_split') +class BlockCountPattern(Generic[T]): + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.cumulative: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'cumulative')) + self.sum: MetricPattern1[T] = MetricPattern1(client, acc) class RealizedPriceExtraPattern: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated metric name.""" - self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, "ratio")) - + self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'ratio')) 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, _m(acc, "utxo_count") - ) - + self.utxo_count: MetricPattern1[StoredU64] = MetricPattern1(client, _m(acc, 'utxo_count')) # Catalog tree classes - class CatalogTree: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): + def __init__(self, client: BrkClientBase, base_path: str = ''): self.addresses: CatalogTree_Addresses = CatalogTree_Addresses(client) self.blocks: CatalogTree_Blocks = CatalogTree_Blocks(client) self.cointime: CatalogTree_Cointime = CatalogTree_Cointime(client) @@ -4105,2561 +2906,1513 @@ class CatalogTree: self.supply: CatalogTree_Supply = CatalogTree_Supply(client) self.transactions: CatalogTree_Transactions = CatalogTree_Transactions(client) - class CatalogTree_Addresses: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.first_p2aaddressindex: MetricPattern11[P2AAddressIndex] = MetricPattern11( - client, "first_p2aaddressindex" - ) - self.first_p2pk33addressindex: MetricPattern11[P2PK33AddressIndex] = ( - MetricPattern11(client, "first_p2pk33addressindex") - ) - self.first_p2pk65addressindex: MetricPattern11[P2PK65AddressIndex] = ( - MetricPattern11(client, "first_p2pk65addressindex") - ) - self.first_p2pkhaddressindex: MetricPattern11[P2PKHAddressIndex] = ( - MetricPattern11(client, "first_p2pkhaddressindex") - ) - self.first_p2shaddressindex: MetricPattern11[P2SHAddressIndex] = ( - MetricPattern11(client, "first_p2shaddressindex") - ) - self.first_p2traddressindex: MetricPattern11[P2TRAddressIndex] = ( - MetricPattern11(client, "first_p2traddressindex") - ) - self.first_p2wpkhaddressindex: MetricPattern11[P2WPKHAddressIndex] = ( - MetricPattern11(client, "first_p2wpkhaddressindex") - ) - self.first_p2wshaddressindex: MetricPattern11[P2WSHAddressIndex] = ( - MetricPattern11(client, "first_p2wshaddressindex") - ) - self.p2abytes: MetricPattern16[P2ABytes] = MetricPattern16(client, "p2abytes") - self.p2pk33bytes: MetricPattern18[P2PK33Bytes] = MetricPattern18( - client, "p2pk33bytes" - ) - self.p2pk65bytes: MetricPattern19[P2PK65Bytes] = MetricPattern19( - client, "p2pk65bytes" - ) - self.p2pkhbytes: MetricPattern20[P2PKHBytes] = MetricPattern20( - client, "p2pkhbytes" - ) - self.p2shbytes: MetricPattern21[P2SHBytes] = MetricPattern21( - client, "p2shbytes" - ) - self.p2trbytes: MetricPattern22[P2TRBytes] = MetricPattern22( - client, "p2trbytes" - ) - self.p2wpkhbytes: MetricPattern23[P2WPKHBytes] = MetricPattern23( - client, "p2wpkhbytes" - ) - self.p2wshbytes: MetricPattern24[P2WSHBytes] = MetricPattern24( - client, "p2wshbytes" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.first_p2aaddressindex: MetricPattern11[P2AAddressIndex] = MetricPattern11(client, 'first_p2aaddressindex') + self.first_p2pk33addressindex: MetricPattern11[P2PK33AddressIndex] = MetricPattern11(client, 'first_p2pk33addressindex') + self.first_p2pk65addressindex: MetricPattern11[P2PK65AddressIndex] = MetricPattern11(client, 'first_p2pk65addressindex') + self.first_p2pkhaddressindex: MetricPattern11[P2PKHAddressIndex] = MetricPattern11(client, 'first_p2pkhaddressindex') + self.first_p2shaddressindex: MetricPattern11[P2SHAddressIndex] = MetricPattern11(client, 'first_p2shaddressindex') + self.first_p2traddressindex: MetricPattern11[P2TRAddressIndex] = MetricPattern11(client, 'first_p2traddressindex') + self.first_p2wpkhaddressindex: MetricPattern11[P2WPKHAddressIndex] = MetricPattern11(client, 'first_p2wpkhaddressindex') + self.first_p2wshaddressindex: MetricPattern11[P2WSHAddressIndex] = MetricPattern11(client, 'first_p2wshaddressindex') + self.p2abytes: MetricPattern16[P2ABytes] = MetricPattern16(client, 'p2abytes') + self.p2pk33bytes: MetricPattern18[P2PK33Bytes] = MetricPattern18(client, 'p2pk33bytes') + self.p2pk65bytes: MetricPattern19[P2PK65Bytes] = MetricPattern19(client, 'p2pk65bytes') + self.p2pkhbytes: MetricPattern20[P2PKHBytes] = MetricPattern20(client, 'p2pkhbytes') + self.p2shbytes: MetricPattern21[P2SHBytes] = MetricPattern21(client, 'p2shbytes') + self.p2trbytes: MetricPattern22[P2TRBytes] = MetricPattern22(client, 'p2trbytes') + self.p2wpkhbytes: MetricPattern23[P2WPKHBytes] = MetricPattern23(client, 'p2wpkhbytes') + self.p2wshbytes: MetricPattern24[P2WSHBytes] = MetricPattern24(client, 'p2wshbytes') class CatalogTree_Blocks: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.blockhash: MetricPattern11[BlockHash] = MetricPattern11( - client, "blockhash" - ) + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.blockhash: MetricPattern11[BlockHash] = MetricPattern11(client, 'blockhash') self.count: CatalogTree_Blocks_Count = CatalogTree_Blocks_Count(client) - self.difficulty: CatalogTree_Blocks_Difficulty = CatalogTree_Blocks_Difficulty( - client - ) - self.fullness: FullnessPattern[StoredF32] = FullnessPattern( - client, "block_fullness" - ) + self.difficulty: CatalogTree_Blocks_Difficulty = CatalogTree_Blocks_Difficulty(client) + self.fullness: FullnessPattern[StoredF32] = FullnessPattern(client, 'block_fullness') self.halving: CatalogTree_Blocks_Halving = CatalogTree_Blocks_Halving(client) self.interval: CatalogTree_Blocks_Interval = CatalogTree_Blocks_Interval(client) self.mining: CatalogTree_Blocks_Mining = CatalogTree_Blocks_Mining(client) self.rewards: CatalogTree_Blocks_Rewards = CatalogTree_Blocks_Rewards(client) self.size: CatalogTree_Blocks_Size = CatalogTree_Blocks_Size(client) self.time: CatalogTree_Blocks_Time = CatalogTree_Blocks_Time(client) - self.total_size: MetricPattern11[StoredU64] = MetricPattern11( - client, "total_size" - ) - self.vbytes: DollarsPattern[StoredU64] = DollarsPattern(client, "block_vbytes") - self.weight: DollarsPattern[Weight] = DollarsPattern(client, "") - + self.total_size: MetricPattern11[StoredU64] = MetricPattern11(client, 'total_size') + self.vbytes: DollarsPattern[StoredU64] = DollarsPattern(client, 'block_vbytes') + self.weight: DollarsPattern[Weight] = DollarsPattern(client, 'block_weight_average') class CatalogTree_Blocks_Count: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._1m_block_count: MetricPattern1[StoredU32] = MetricPattern1( - client, "1m_block_count" - ) - self._1m_start: MetricPattern11[Height] = MetricPattern11(client, "1m_start") - self._1w_block_count: MetricPattern1[StoredU32] = MetricPattern1( - client, "1w_block_count" - ) - self._1w_start: MetricPattern11[Height] = MetricPattern11(client, "1w_start") - self._1y_block_count: MetricPattern1[StoredU32] = MetricPattern1( - client, "1y_block_count" - ) - self._1y_start: MetricPattern11[Height] = MetricPattern11(client, "1y_start") - self._24h_block_count: MetricPattern1[StoredU32] = MetricPattern1( - client, "24h_block_count" - ) - self._24h_start: MetricPattern11[Height] = MetricPattern11(client, "24h_start") - self.block_count: BlockCountPattern[StoredU32] = BlockCountPattern( - client, "block_count" - ) - self.block_count_target: MetricPattern4[StoredU64] = MetricPattern4( - client, "block_count_target" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._1m_block_count: MetricPattern1[StoredU32] = MetricPattern1(client, '1m_block_count') + self._1m_start: MetricPattern11[Height] = MetricPattern11(client, '1m_start') + self._1w_block_count: MetricPattern1[StoredU32] = MetricPattern1(client, '1w_block_count') + self._1w_start: MetricPattern11[Height] = MetricPattern11(client, '1w_start') + self._1y_block_count: MetricPattern1[StoredU32] = MetricPattern1(client, '1y_block_count') + self._1y_start: MetricPattern11[Height] = MetricPattern11(client, '1y_start') + self._24h_block_count: MetricPattern1[StoredU32] = MetricPattern1(client, '24h_block_count') + self._24h_start: MetricPattern11[Height] = MetricPattern11(client, '24h_start') + self.block_count: BlockCountPattern[StoredU32] = BlockCountPattern(client, 'block_count') + self.block_count_target: MetricPattern4[StoredU64] = MetricPattern4(client, 'block_count_target') class CatalogTree_Blocks_Difficulty: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.adjustment: MetricPattern1[StoredF32] = MetricPattern1( - client, "difficulty_adjustment" - ) - self.as_hash: MetricPattern1[StoredF32] = MetricPattern1( - client, "difficulty_as_hash" - ) - self.blocks_before_next_adjustment: MetricPattern1[StoredU32] = MetricPattern1( - client, "blocks_before_next_difficulty_adjustment" - ) - self.days_before_next_adjustment: MetricPattern1[StoredF32] = MetricPattern1( - client, "days_before_next_difficulty_adjustment" - ) - self.epoch: MetricPattern4[DifficultyEpoch] = MetricPattern4( - client, "difficultyepoch" - ) - self.raw: MetricPattern1[StoredF64] = MetricPattern1(client, "difficulty") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.adjustment: MetricPattern1[StoredF32] = MetricPattern1(client, 'difficulty_adjustment') + self.as_hash: MetricPattern1[StoredF32] = MetricPattern1(client, 'difficulty_as_hash') + self.blocks_before_next_adjustment: MetricPattern1[StoredU32] = MetricPattern1(client, 'blocks_before_next_difficulty_adjustment') + self.days_before_next_adjustment: MetricPattern1[StoredF32] = MetricPattern1(client, 'days_before_next_difficulty_adjustment') + self.epoch: MetricPattern4[DifficultyEpoch] = MetricPattern4(client, 'difficultyepoch') + self.raw: MetricPattern1[StoredF64] = MetricPattern1(client, 'difficulty') class CatalogTree_Blocks_Halving: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.blocks_before_next_halving: MetricPattern1[StoredU32] = MetricPattern1( - client, "blocks_before_next_halving" - ) - self.days_before_next_halving: MetricPattern1[StoredF32] = MetricPattern1( - client, "days_before_next_halving" - ) - self.epoch: MetricPattern4[HalvingEpoch] = MetricPattern4( - client, "halvingepoch" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.blocks_before_next_halving: MetricPattern1[StoredU32] = MetricPattern1(client, 'blocks_before_next_halving') + self.days_before_next_halving: MetricPattern1[StoredF32] = MetricPattern1(client, 'days_before_next_halving') + self.epoch: MetricPattern4[HalvingEpoch] = MetricPattern4(client, 'halvingepoch') class CatalogTree_Blocks_Interval: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.average: MetricPattern2[Timestamp] = MetricPattern2( - client, "block_interval_average" - ) - self.base: MetricPattern11[Timestamp] = MetricPattern11( - client, "block_interval" - ) - self.max: MetricPattern2[Timestamp] = MetricPattern2( - client, "block_interval_max" - ) - self.median: MetricPattern6[Timestamp] = MetricPattern6( - client, "block_interval_median" - ) - self.min: MetricPattern2[Timestamp] = MetricPattern2( - client, "block_interval_min" - ) - self.pct10: MetricPattern6[Timestamp] = MetricPattern6( - client, "block_interval_pct10" - ) - self.pct25: MetricPattern6[Timestamp] = MetricPattern6( - client, "block_interval_pct25" - ) - self.pct75: MetricPattern6[Timestamp] = MetricPattern6( - client, "block_interval_pct75" - ) - self.pct90: MetricPattern6[Timestamp] = MetricPattern6( - client, "block_interval_pct90" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.average: MetricPattern2[Timestamp] = MetricPattern2(client, 'block_interval_average') + self.base: MetricPattern11[Timestamp] = MetricPattern11(client, 'block_interval') + self.max: MetricPattern2[Timestamp] = MetricPattern2(client, 'block_interval_max') + self.median: MetricPattern6[Timestamp] = MetricPattern6(client, 'block_interval_median') + self.min: MetricPattern2[Timestamp] = MetricPattern2(client, 'block_interval_min') + self.pct10: MetricPattern6[Timestamp] = MetricPattern6(client, 'block_interval_pct10') + self.pct25: MetricPattern6[Timestamp] = MetricPattern6(client, 'block_interval_pct25') + self.pct75: MetricPattern6[Timestamp] = MetricPattern6(client, 'block_interval_pct75') + self.pct90: MetricPattern6[Timestamp] = MetricPattern6(client, 'block_interval_pct90') class CatalogTree_Blocks_Mining: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.hash_price_phs: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_price_phs" - ) - self.hash_price_phs_min: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_price_phs_min" - ) - self.hash_price_rebound: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_price_rebound" - ) - self.hash_price_ths: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_price_ths" - ) - self.hash_price_ths_min: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_price_ths_min" - ) - self.hash_rate: MetricPattern1[StoredF64] = MetricPattern1(client, "hash_rate") - self.hash_rate_1m_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, "hash_rate_1m_sma" - ) - self.hash_rate_1w_sma: MetricPattern4[StoredF64] = MetricPattern4( - client, "hash_rate_1w_sma" - ) - self.hash_rate_1y_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, "hash_rate_1y_sma" - ) - self.hash_rate_2m_sma: MetricPattern4[StoredF32] = MetricPattern4( - client, "hash_rate_2m_sma" - ) - self.hash_value_phs: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_value_phs" - ) - self.hash_value_phs_min: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_value_phs_min" - ) - self.hash_value_rebound: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_value_rebound" - ) - self.hash_value_ths: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_value_ths" - ) - self.hash_value_ths_min: MetricPattern1[StoredF32] = MetricPattern1( - client, "hash_value_ths_min" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.hash_price_phs: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_price_phs') + self.hash_price_phs_min: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_price_phs_min') + self.hash_price_rebound: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_price_rebound') + self.hash_price_ths: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_price_ths') + self.hash_price_ths_min: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_price_ths_min') + self.hash_rate: MetricPattern1[StoredF64] = MetricPattern1(client, 'hash_rate') + self.hash_rate_1m_sma: MetricPattern4[StoredF32] = MetricPattern4(client, 'hash_rate_1m_sma') + self.hash_rate_1w_sma: MetricPattern4[StoredF64] = MetricPattern4(client, 'hash_rate_1w_sma') + self.hash_rate_1y_sma: MetricPattern4[StoredF32] = MetricPattern4(client, 'hash_rate_1y_sma') + self.hash_rate_2m_sma: MetricPattern4[StoredF32] = MetricPattern4(client, 'hash_rate_2m_sma') + self.hash_value_phs: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_value_phs') + self.hash_value_phs_min: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_value_phs_min') + self.hash_value_rebound: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_value_rebound') + self.hash_value_ths: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_value_ths') + self.hash_value_ths_min: MetricPattern1[StoredF32] = MetricPattern1(client, 'hash_value_ths_min') class CatalogTree_Blocks_Rewards: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._24h_coinbase_sum: CatalogTree_Blocks_Rewards_24hCoinbaseSum = ( - CatalogTree_Blocks_Rewards_24hCoinbaseSum(client) - ) - self.coinbase: CoinbasePattern = CoinbasePattern(client, "coinbase") - self.fee_dominance: MetricPattern6[StoredF32] = MetricPattern6( - client, "fee_dominance" - ) - self.subsidy: CoinbasePattern = CoinbasePattern(client, "subsidy") - self.subsidy_dominance: MetricPattern6[StoredF32] = MetricPattern6( - client, "subsidy_dominance" - ) - self.subsidy_usd_1y_sma: MetricPattern4[Dollars] = MetricPattern4( - client, "subsidy_usd_1y_sma" - ) - self.unclaimed_rewards: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, "unclaimed_rewards" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._24h_coinbase_sum: CatalogTree_Blocks_Rewards_24hCoinbaseSum = CatalogTree_Blocks_Rewards_24hCoinbaseSum(client) + self.coinbase: CoinbasePattern = CoinbasePattern(client, 'coinbase') + self.fee_dominance: MetricPattern6[StoredF32] = MetricPattern6(client, 'fee_dominance') + self.subsidy: CoinbasePattern = CoinbasePattern(client, 'subsidy') + self.subsidy_dominance: MetricPattern6[StoredF32] = MetricPattern6(client, 'subsidy_dominance') + self.subsidy_usd_1y_sma: MetricPattern4[Dollars] = MetricPattern4(client, 'subsidy_usd_1y_sma') + self.unclaimed_rewards: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, 'unclaimed_rewards') class CatalogTree_Blocks_Rewards_24hCoinbaseSum: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.bitcoin: MetricPattern11[Bitcoin] = MetricPattern11( - client, "24h_coinbase_sum_btc" - ) - self.dollars: MetricPattern11[Dollars] = MetricPattern11( - client, "24h_coinbase_sum_usd" - ) - self.sats: MetricPattern11[Sats] = MetricPattern11(client, "24h_coinbase_sum") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.bitcoin: MetricPattern11[Bitcoin] = MetricPattern11(client, '24h_coinbase_sum_btc') + self.dollars: MetricPattern11[Dollars] = MetricPattern11(client, '24h_coinbase_sum_usd') + self.sats: MetricPattern11[Sats] = MetricPattern11(client, '24h_coinbase_sum') class CatalogTree_Blocks_Size: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.average: MetricPattern2[StoredU64] = MetricPattern2( - client, "block_size_average" - ) - self.cumulative: MetricPattern1[StoredU64] = MetricPattern1( - client, "block_size_cumulative" - ) - self.max: MetricPattern2[StoredU64] = MetricPattern2(client, "block_size_max") - self.median: MetricPattern6[StoredU64] = MetricPattern6( - client, "block_size_median" - ) - self.min: MetricPattern2[StoredU64] = MetricPattern2(client, "block_size_min") - self.pct10: MetricPattern6[StoredU64] = MetricPattern6( - client, "block_size_pct10" - ) - self.pct25: MetricPattern6[StoredU64] = MetricPattern6( - client, "block_size_pct25" - ) - self.pct75: MetricPattern6[StoredU64] = MetricPattern6( - client, "block_size_pct75" - ) - self.pct90: MetricPattern6[StoredU64] = MetricPattern6( - client, "block_size_pct90" - ) - self.sum: MetricPattern2[StoredU64] = MetricPattern2(client, "block_size_sum") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.average: MetricPattern2[StoredU64] = MetricPattern2(client, 'block_size_average') + self.cumulative: MetricPattern1[StoredU64] = MetricPattern1(client, 'block_size_cumulative') + self.max: MetricPattern2[StoredU64] = MetricPattern2(client, 'block_size_max') + self.median: MetricPattern6[StoredU64] = MetricPattern6(client, 'block_size_median') + self.min: MetricPattern2[StoredU64] = MetricPattern2(client, 'block_size_min') + self.pct10: MetricPattern6[StoredU64] = MetricPattern6(client, 'block_size_pct10') + self.pct25: MetricPattern6[StoredU64] = MetricPattern6(client, 'block_size_pct25') + self.pct75: MetricPattern6[StoredU64] = MetricPattern6(client, 'block_size_pct75') + self.pct90: MetricPattern6[StoredU64] = MetricPattern6(client, 'block_size_pct90') + self.sum: MetricPattern2[StoredU64] = MetricPattern2(client, 'block_size_sum') class CatalogTree_Blocks_Time: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.date: MetricPattern11[Date] = MetricPattern11(client, "date") - self.date_fixed: MetricPattern11[Date] = MetricPattern11(client, "date_fixed") - self.timestamp: MetricPattern1[Timestamp] = MetricPattern1(client, "timestamp") - self.timestamp_fixed: MetricPattern11[Timestamp] = MetricPattern11( - client, "timestamp_fixed" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.date: MetricPattern11[Date] = MetricPattern11(client, 'date') + self.date_fixed: MetricPattern11[Date] = MetricPattern11(client, 'date_fixed') + self.timestamp: MetricPattern1[Timestamp] = MetricPattern1(client, 'timestamp') + self.timestamp_fixed: MetricPattern11[Timestamp] = MetricPattern11(client, 'timestamp_fixed') class CatalogTree_Cointime: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.activity: CatalogTree_Cointime_Activity = CatalogTree_Cointime_Activity( - client - ) - self.adjusted: CatalogTree_Cointime_Adjusted = CatalogTree_Cointime_Adjusted( - client - ) + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.activity: CatalogTree_Cointime_Activity = CatalogTree_Cointime_Activity(client) + self.adjusted: CatalogTree_Cointime_Adjusted = CatalogTree_Cointime_Adjusted(client) self.cap: CatalogTree_Cointime_Cap = CatalogTree_Cointime_Cap(client) - self.pricing: CatalogTree_Cointime_Pricing = CatalogTree_Cointime_Pricing( - client - ) + self.pricing: CatalogTree_Cointime_Pricing = CatalogTree_Cointime_Pricing(client) self.supply: CatalogTree_Cointime_Supply = CatalogTree_Cointime_Supply(client) self.value: CatalogTree_Cointime_Value = CatalogTree_Cointime_Value(client) - class CatalogTree_Cointime_Activity: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.activity_to_vaultedness_ratio: MetricPattern1[StoredF64] = MetricPattern1( - client, "activity_to_vaultedness_ratio" - ) - self.coinblocks_created: BlockCountPattern[StoredF64] = BlockCountPattern( - client, "coinblocks_created" - ) - self.coinblocks_stored: BlockCountPattern[StoredF64] = BlockCountPattern( - client, "coinblocks_stored" - ) - self.liveliness: MetricPattern1[StoredF64] = MetricPattern1( - client, "liveliness" - ) - self.vaultedness: MetricPattern1[StoredF64] = MetricPattern1( - client, "vaultedness" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.activity_to_vaultedness_ratio: MetricPattern1[StoredF64] = MetricPattern1(client, 'activity_to_vaultedness_ratio') + self.coinblocks_created: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'coinblocks_created') + self.coinblocks_stored: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'coinblocks_stored') + self.liveliness: MetricPattern1[StoredF64] = MetricPattern1(client, 'liveliness') + self.vaultedness: MetricPattern1[StoredF64] = MetricPattern1(client, 'vaultedness') class CatalogTree_Cointime_Adjusted: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.cointime_adj_inflation_rate: MetricPattern4[StoredF32] = MetricPattern4( - client, "cointime_adj_inflation_rate" - ) - self.cointime_adj_tx_btc_velocity: MetricPattern4[StoredF64] = MetricPattern4( - client, "cointime_adj_tx_btc_velocity" - ) - self.cointime_adj_tx_usd_velocity: MetricPattern4[StoredF64] = MetricPattern4( - client, "cointime_adj_tx_usd_velocity" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.cointime_adj_inflation_rate: MetricPattern4[StoredF32] = MetricPattern4(client, 'cointime_adj_inflation_rate') + self.cointime_adj_tx_btc_velocity: MetricPattern4[StoredF64] = MetricPattern4(client, 'cointime_adj_tx_btc_velocity') + self.cointime_adj_tx_usd_velocity: MetricPattern4[StoredF64] = MetricPattern4(client, 'cointime_adj_tx_usd_velocity') class CatalogTree_Cointime_Cap: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.active_cap: MetricPattern1[Dollars] = MetricPattern1(client, "active_cap") - self.cointime_cap: MetricPattern1[Dollars] = MetricPattern1( - client, "cointime_cap" - ) - self.investor_cap: MetricPattern1[Dollars] = MetricPattern1( - client, "investor_cap" - ) - self.thermo_cap: MetricPattern1[Dollars] = MetricPattern1(client, "thermo_cap") - self.vaulted_cap: MetricPattern1[Dollars] = MetricPattern1( - client, "vaulted_cap" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.active_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'active_cap') + self.cointime_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'cointime_cap') + self.investor_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'investor_cap') + self.thermo_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'thermo_cap') + self.vaulted_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'vaulted_cap') class CatalogTree_Cointime_Pricing: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.active_price: MetricPattern1[Dollars] = MetricPattern1( - client, "active_price" - ) - self.active_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, "active_price_ratio" - ) - self.cointime_price: MetricPattern1[Dollars] = MetricPattern1( - client, "cointime_price" - ) - 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: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, "true_market_mean_ratio" - ) - self.vaulted_price: MetricPattern1[Dollars] = MetricPattern1( - client, "vaulted_price" - ) - self.vaulted_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern( - client, "vaulted_price_ratio" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.active_price: MetricPattern1[Dollars] = MetricPattern1(client, 'active_price') + self.active_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern(client, 'active_price_ratio') + self.cointime_price: MetricPattern1[Dollars] = MetricPattern1(client, 'cointime_price') + 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: ActivePriceRatioPattern = ActivePriceRatioPattern(client, 'true_market_mean_ratio') + self.vaulted_price: MetricPattern1[Dollars] = MetricPattern1(client, 'vaulted_price') + self.vaulted_price_ratio: ActivePriceRatioPattern = ActivePriceRatioPattern(client, 'vaulted_price_ratio') class CatalogTree_Cointime_Supply: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.active_supply: ActiveSupplyPattern = ActiveSupplyPattern( - client, "active_supply" - ) - self.vaulted_supply: ActiveSupplyPattern = ActiveSupplyPattern( - client, "vaulted_supply" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.active_supply: ActiveSupplyPattern = ActiveSupplyPattern(client, 'active_supply') + self.vaulted_supply: ActiveSupplyPattern = ActiveSupplyPattern(client, 'vaulted_supply') class CatalogTree_Cointime_Value: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.cointime_value_created: BlockCountPattern[StoredF64] = BlockCountPattern( - client, "cointime_value_created" - ) - self.cointime_value_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern( - client, "cointime_value_destroyed" - ) - self.cointime_value_stored: BlockCountPattern[StoredF64] = BlockCountPattern( - client, "cointime_value_stored" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.cointime_value_created: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'cointime_value_created') + self.cointime_value_destroyed: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'cointime_value_destroyed') + self.cointime_value_stored: BlockCountPattern[StoredF64] = BlockCountPattern(client, 'cointime_value_stored') class CatalogTree_Constants: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.constant_0: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_0" - ) - self.constant_1: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_1" - ) - self.constant_100: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_100" - ) - self.constant_2: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_2" - ) - self.constant_20: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_20" - ) - self.constant_3: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_3" - ) - self.constant_30: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_30" - ) - self.constant_38_2: MetricPattern1[StoredF32] = MetricPattern1( - client, "constant_38_2" - ) - self.constant_4: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_4" - ) - self.constant_50: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_50" - ) - self.constant_600: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_600" - ) - self.constant_61_8: MetricPattern1[StoredF32] = MetricPattern1( - client, "constant_61_8" - ) - self.constant_70: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_70" - ) - self.constant_80: MetricPattern1[StoredU16] = MetricPattern1( - client, "constant_80" - ) - self.constant_minus_1: MetricPattern1[StoredI16] = MetricPattern1( - client, "constant_minus_1" - ) - self.constant_minus_2: MetricPattern1[StoredI16] = MetricPattern1( - client, "constant_minus_2" - ) - self.constant_minus_3: MetricPattern1[StoredI16] = MetricPattern1( - client, "constant_minus_3" - ) - self.constant_minus_4: MetricPattern1[StoredI16] = MetricPattern1( - client, "constant_minus_4" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.constant_0: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_0') + self.constant_1: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_1') + self.constant_100: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_100') + self.constant_2: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_2') + self.constant_20: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_20') + self.constant_3: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_3') + self.constant_30: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_30') + self.constant_38_2: MetricPattern1[StoredF32] = MetricPattern1(client, 'constant_38_2') + self.constant_4: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_4') + self.constant_50: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_50') + self.constant_600: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_600') + self.constant_61_8: MetricPattern1[StoredF32] = MetricPattern1(client, 'constant_61_8') + self.constant_70: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_70') + self.constant_80: MetricPattern1[StoredU16] = MetricPattern1(client, 'constant_80') + self.constant_minus_1: MetricPattern1[StoredI16] = MetricPattern1(client, 'constant_minus_1') + self.constant_minus_2: MetricPattern1[StoredI16] = MetricPattern1(client, 'constant_minus_2') + self.constant_minus_3: MetricPattern1[StoredI16] = MetricPattern1(client, 'constant_minus_3') + self.constant_minus_4: MetricPattern1[StoredI16] = MetricPattern1(client, 'constant_minus_4') class CatalogTree_Distribution: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.addr_count: CatalogTree_Distribution_AddrCount = ( - CatalogTree_Distribution_AddrCount(client) - ) - self.address_cohorts: CatalogTree_Distribution_AddressCohorts = ( - CatalogTree_Distribution_AddressCohorts(client) - ) - self.addresses_data: CatalogTree_Distribution_AddressesData = ( - CatalogTree_Distribution_AddressesData(client) - ) - self.any_address_indexes: CatalogTree_Distribution_AnyAddressIndexes = ( - CatalogTree_Distribution_AnyAddressIndexes(client) - ) - self.chain_state: MetricPattern11[SupplyState] = MetricPattern11( - client, "chain" - ) - self.empty_addr_count: CatalogTree_Distribution_EmptyAddrCount = ( - CatalogTree_Distribution_EmptyAddrCount(client) - ) - self.emptyaddressindex: MetricPattern32[EmptyAddressIndex] = MetricPattern32( - client, "emptyaddressindex" - ) - self.loadedaddressindex: MetricPattern31[LoadedAddressIndex] = MetricPattern31( - client, "loadedaddressindex" - ) - self.utxo_cohorts: CatalogTree_Distribution_UtxoCohorts = ( - CatalogTree_Distribution_UtxoCohorts(client) - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.addr_count: CatalogTree_Distribution_AddrCount = CatalogTree_Distribution_AddrCount(client) + self.address_cohorts: CatalogTree_Distribution_AddressCohorts = CatalogTree_Distribution_AddressCohorts(client) + self.addresses_data: CatalogTree_Distribution_AddressesData = CatalogTree_Distribution_AddressesData(client) + self.any_address_indexes: CatalogTree_Distribution_AnyAddressIndexes = CatalogTree_Distribution_AnyAddressIndexes(client) + self.chain_state: MetricPattern11[SupplyState] = MetricPattern11(client, 'chain') + self.empty_addr_count: CatalogTree_Distribution_EmptyAddrCount = CatalogTree_Distribution_EmptyAddrCount(client) + self.emptyaddressindex: MetricPattern32[EmptyAddressIndex] = MetricPattern32(client, 'emptyaddressindex') + self.loadedaddressindex: MetricPattern31[LoadedAddressIndex] = MetricPattern31(client, 'loadedaddressindex') + self.utxo_cohorts: CatalogTree_Distribution_UtxoCohorts = CatalogTree_Distribution_UtxoCohorts(client) class CatalogTree_Distribution_AddrCount: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.all: MetricPattern1[StoredU64] = MetricPattern1(client, "addr_count") - self.p2a: MetricPattern1[StoredU64] = MetricPattern1(client, "p2a_addr_count") - self.p2pk33: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2pk33_addr_count" - ) - self.p2pk65: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2pk65_addr_count" - ) - self.p2pkh: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2pkh_addr_count" - ) - self.p2sh: MetricPattern1[StoredU64] = MetricPattern1(client, "p2sh_addr_count") - self.p2tr: MetricPattern1[StoredU64] = MetricPattern1(client, "p2tr_addr_count") - self.p2wpkh: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2wpkh_addr_count" - ) - self.p2wsh: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2wsh_addr_count" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.all: MetricPattern1[StoredU64] = MetricPattern1(client, 'addr_count') + self.p2a: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2a_addr_count') + self.p2pk33: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2pk33_addr_count') + self.p2pk65: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2pk65_addr_count') + self.p2pkh: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2pkh_addr_count') + self.p2sh: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2sh_addr_count') + self.p2tr: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2tr_addr_count') + self.p2wpkh: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2wpkh_addr_count') + self.p2wsh: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2wsh_addr_count') class CatalogTree_Distribution_AddressCohorts: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.amount_range: CatalogTree_Distribution_AddressCohorts_AmountRange = ( - CatalogTree_Distribution_AddressCohorts_AmountRange(client) - ) - self.ge_amount: CatalogTree_Distribution_AddressCohorts_GeAmount = ( - CatalogTree_Distribution_AddressCohorts_GeAmount(client) - ) - self.lt_amount: CatalogTree_Distribution_AddressCohorts_LtAmount = ( - CatalogTree_Distribution_AddressCohorts_LtAmount(client) - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.amount_range: CatalogTree_Distribution_AddressCohorts_AmountRange = CatalogTree_Distribution_AddressCohorts_AmountRange(client) + self.ge_amount: CatalogTree_Distribution_AddressCohorts_GeAmount = CatalogTree_Distribution_AddressCohorts_GeAmount(client) + self.lt_amount: CatalogTree_Distribution_AddressCohorts_LtAmount = CatalogTree_Distribution_AddressCohorts_LtAmount(client) class CatalogTree_Distribution_AddressCohorts_AmountRange: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._0sats: _0satsPattern = _0satsPattern(client, "addrs_with_0sats") - self._100btc_to_1k_btc: _0satsPattern = _0satsPattern( - client, "addrs_above_100btc_under_1k_btc" - ) - self._100k_btc_or_more: _0satsPattern = _0satsPattern( - client, "addrs_above_100k_btc" - ) - self._100k_sats_to_1m_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_100k_sats_under_1m_sats" - ) - self._100sats_to_1k_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_100sats_under_1k_sats" - ) - self._10btc_to_100btc: _0satsPattern = _0satsPattern( - client, "addrs_above_10btc_under_100btc" - ) - self._10k_btc_to_100k_btc: _0satsPattern = _0satsPattern( - client, "addrs_above_10k_btc_under_100k_btc" - ) - self._10k_sats_to_100k_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_10k_sats_under_100k_sats" - ) - self._10m_sats_to_1btc: _0satsPattern = _0satsPattern( - client, "addrs_above_10m_sats_under_1btc" - ) - self._10sats_to_100sats: _0satsPattern = _0satsPattern( - client, "addrs_above_10sats_under_100sats" - ) - self._1btc_to_10btc: _0satsPattern = _0satsPattern( - client, "addrs_above_1btc_under_10btc" - ) - self._1k_btc_to_10k_btc: _0satsPattern = _0satsPattern( - client, "addrs_above_1k_btc_under_10k_btc" - ) - self._1k_sats_to_10k_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_1k_sats_under_10k_sats" - ) - self._1m_sats_to_10m_sats: _0satsPattern = _0satsPattern( - client, "addrs_above_1m_sats_under_10m_sats" - ) - self._1sat_to_10sats: _0satsPattern = _0satsPattern( - client, "addrs_above_1sat_under_10sats" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._0sats: _0satsPattern = _0satsPattern(client, 'addrs_with_0sats') + self._100btc_to_1k_btc: _0satsPattern = _0satsPattern(client, 'addrs_above_100btc_under_1k_btc') + self._100k_btc_or_more: _0satsPattern = _0satsPattern(client, 'addrs_above_100k_btc') + self._100k_sats_to_1m_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_100k_sats_under_1m_sats') + self._100sats_to_1k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_100sats_under_1k_sats') + self._10btc_to_100btc: _0satsPattern = _0satsPattern(client, 'addrs_above_10btc_under_100btc') + self._10k_btc_to_100k_btc: _0satsPattern = _0satsPattern(client, 'addrs_above_10k_btc_under_100k_btc') + self._10k_sats_to_100k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_10k_sats_under_100k_sats') + self._10m_sats_to_1btc: _0satsPattern = _0satsPattern(client, 'addrs_above_10m_sats_under_1btc') + self._10sats_to_100sats: _0satsPattern = _0satsPattern(client, 'addrs_above_10sats_under_100sats') + self._1btc_to_10btc: _0satsPattern = _0satsPattern(client, 'addrs_above_1btc_under_10btc') + self._1k_btc_to_10k_btc: _0satsPattern = _0satsPattern(client, 'addrs_above_1k_btc_under_10k_btc') + self._1k_sats_to_10k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_1k_sats_under_10k_sats') + self._1m_sats_to_10m_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_1m_sats_under_10m_sats') + self._1sat_to_10sats: _0satsPattern = _0satsPattern(client, 'addrs_above_1sat_under_10sats') class CatalogTree_Distribution_AddressCohorts_GeAmount: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._100btc: _0satsPattern = _0satsPattern(client, "addrs_above_100btc") - self._100k_sats: _0satsPattern = _0satsPattern(client, "addrs_above_100k_sats") - self._100sats: _0satsPattern = _0satsPattern(client, "addrs_above_100sats") - self._10btc: _0satsPattern = _0satsPattern(client, "addrs_above_10btc") - self._10k_btc: _0satsPattern = _0satsPattern(client, "addrs_above_10k_btc") - self._10k_sats: _0satsPattern = _0satsPattern(client, "addrs_above_10k_sats") - self._10m_sats: _0satsPattern = _0satsPattern(client, "addrs_above_10m_sats") - self._10sats: _0satsPattern = _0satsPattern(client, "addrs_above_10sats") - self._1btc: _0satsPattern = _0satsPattern(client, "addrs_above_1btc") - self._1k_btc: _0satsPattern = _0satsPattern(client, "addrs_above_1k_btc") - self._1k_sats: _0satsPattern = _0satsPattern(client, "addrs_above_1k_sats") - self._1m_sats: _0satsPattern = _0satsPattern(client, "addrs_above_1m_sats") - self._1sat: _0satsPattern = _0satsPattern(client, "addrs_above_1sat") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._100btc: _0satsPattern = _0satsPattern(client, 'addrs_above_100btc') + self._100k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_100k_sats') + self._100sats: _0satsPattern = _0satsPattern(client, 'addrs_above_100sats') + self._10btc: _0satsPattern = _0satsPattern(client, 'addrs_above_10btc') + self._10k_btc: _0satsPattern = _0satsPattern(client, 'addrs_above_10k_btc') + self._10k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_10k_sats') + self._10m_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_10m_sats') + self._10sats: _0satsPattern = _0satsPattern(client, 'addrs_above_10sats') + self._1btc: _0satsPattern = _0satsPattern(client, 'addrs_above_1btc') + self._1k_btc: _0satsPattern = _0satsPattern(client, 'addrs_above_1k_btc') + self._1k_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_1k_sats') + self._1m_sats: _0satsPattern = _0satsPattern(client, 'addrs_above_1m_sats') + self._1sat: _0satsPattern = _0satsPattern(client, 'addrs_above_1sat') class CatalogTree_Distribution_AddressCohorts_LtAmount: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._100btc: _0satsPattern = _0satsPattern(client, "addrs_under_100btc") - self._100k_btc: _0satsPattern = _0satsPattern(client, "addrs_under_100k_btc") - self._100k_sats: _0satsPattern = _0satsPattern(client, "addrs_under_100k_sats") - self._100sats: _0satsPattern = _0satsPattern(client, "addrs_under_100sats") - self._10btc: _0satsPattern = _0satsPattern(client, "addrs_under_10btc") - self._10k_btc: _0satsPattern = _0satsPattern(client, "addrs_under_10k_btc") - self._10k_sats: _0satsPattern = _0satsPattern(client, "addrs_under_10k_sats") - self._10m_sats: _0satsPattern = _0satsPattern(client, "addrs_under_10m_sats") - self._10sats: _0satsPattern = _0satsPattern(client, "addrs_under_10sats") - self._1btc: _0satsPattern = _0satsPattern(client, "addrs_under_1btc") - self._1k_btc: _0satsPattern = _0satsPattern(client, "addrs_under_1k_btc") - self._1k_sats: _0satsPattern = _0satsPattern(client, "addrs_under_1k_sats") - self._1m_sats: _0satsPattern = _0satsPattern(client, "addrs_under_1m_sats") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._100btc: _0satsPattern = _0satsPattern(client, 'addrs_under_100btc') + self._100k_btc: _0satsPattern = _0satsPattern(client, 'addrs_under_100k_btc') + self._100k_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_100k_sats') + self._100sats: _0satsPattern = _0satsPattern(client, 'addrs_under_100sats') + self._10btc: _0satsPattern = _0satsPattern(client, 'addrs_under_10btc') + self._10k_btc: _0satsPattern = _0satsPattern(client, 'addrs_under_10k_btc') + self._10k_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_10k_sats') + self._10m_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_10m_sats') + self._10sats: _0satsPattern = _0satsPattern(client, 'addrs_under_10sats') + self._1btc: _0satsPattern = _0satsPattern(client, 'addrs_under_1btc') + self._1k_btc: _0satsPattern = _0satsPattern(client, 'addrs_under_1k_btc') + self._1k_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_1k_sats') + self._1m_sats: _0satsPattern = _0satsPattern(client, 'addrs_under_1m_sats') class CatalogTree_Distribution_AddressesData: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.empty: MetricPattern32[EmptyAddressData] = MetricPattern32( - client, "emptyaddressdata" - ) - self.loaded: MetricPattern31[LoadedAddressData] = MetricPattern31( - client, "loadedaddressdata" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.empty: MetricPattern32[EmptyAddressData] = MetricPattern32(client, 'emptyaddressdata') + self.loaded: MetricPattern31[LoadedAddressData] = MetricPattern31(client, 'loadedaddressdata') class CatalogTree_Distribution_AnyAddressIndexes: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.p2a: MetricPattern16[AnyAddressIndex] = MetricPattern16( - client, "anyaddressindex" - ) - self.p2pk33: MetricPattern18[AnyAddressIndex] = MetricPattern18( - client, "anyaddressindex" - ) - self.p2pk65: MetricPattern19[AnyAddressIndex] = MetricPattern19( - client, "anyaddressindex" - ) - self.p2pkh: MetricPattern20[AnyAddressIndex] = MetricPattern20( - client, "anyaddressindex" - ) - self.p2sh: MetricPattern21[AnyAddressIndex] = MetricPattern21( - client, "anyaddressindex" - ) - self.p2tr: MetricPattern22[AnyAddressIndex] = MetricPattern22( - client, "anyaddressindex" - ) - self.p2wpkh: MetricPattern23[AnyAddressIndex] = MetricPattern23( - client, "anyaddressindex" - ) - self.p2wsh: MetricPattern24[AnyAddressIndex] = MetricPattern24( - client, "anyaddressindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.p2a: MetricPattern16[AnyAddressIndex] = MetricPattern16(client, 'anyaddressindex') + self.p2pk33: MetricPattern18[AnyAddressIndex] = MetricPattern18(client, 'anyaddressindex') + self.p2pk65: MetricPattern19[AnyAddressIndex] = MetricPattern19(client, 'anyaddressindex') + self.p2pkh: MetricPattern20[AnyAddressIndex] = MetricPattern20(client, 'anyaddressindex') + self.p2sh: MetricPattern21[AnyAddressIndex] = MetricPattern21(client, 'anyaddressindex') + self.p2tr: MetricPattern22[AnyAddressIndex] = MetricPattern22(client, 'anyaddressindex') + self.p2wpkh: MetricPattern23[AnyAddressIndex] = MetricPattern23(client, 'anyaddressindex') + self.p2wsh: MetricPattern24[AnyAddressIndex] = MetricPattern24(client, 'anyaddressindex') class CatalogTree_Distribution_EmptyAddrCount: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.all: MetricPattern1[StoredU64] = MetricPattern1(client, "empty_addr_count") - self.p2a: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2a_empty_addr_count" - ) - self.p2pk33: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2pk33_empty_addr_count" - ) - self.p2pk65: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2pk65_empty_addr_count" - ) - self.p2pkh: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2pkh_empty_addr_count" - ) - self.p2sh: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2sh_empty_addr_count" - ) - self.p2tr: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2tr_empty_addr_count" - ) - self.p2wpkh: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2wpkh_empty_addr_count" - ) - self.p2wsh: MetricPattern1[StoredU64] = MetricPattern1( - client, "p2wsh_empty_addr_count" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.all: MetricPattern1[StoredU64] = MetricPattern1(client, 'empty_addr_count') + self.p2a: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2a_empty_addr_count') + self.p2pk33: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2pk33_empty_addr_count') + self.p2pk65: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2pk65_empty_addr_count') + self.p2pkh: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2pkh_empty_addr_count') + self.p2sh: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2sh_empty_addr_count') + self.p2tr: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2tr_empty_addr_count') + self.p2wpkh: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2wpkh_empty_addr_count') + self.p2wsh: MetricPattern1[StoredU64] = MetricPattern1(client, 'p2wsh_empty_addr_count') class CatalogTree_Distribution_UtxoCohorts: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.age_range: CatalogTree_Distribution_UtxoCohorts_AgeRange = ( - CatalogTree_Distribution_UtxoCohorts_AgeRange(client) - ) - self.all: CatalogTree_Distribution_UtxoCohorts_All = ( - CatalogTree_Distribution_UtxoCohorts_All(client) - ) - self.amount_range: CatalogTree_Distribution_UtxoCohorts_AmountRange = ( - CatalogTree_Distribution_UtxoCohorts_AmountRange(client) - ) - self.epoch: CatalogTree_Distribution_UtxoCohorts_Epoch = ( - CatalogTree_Distribution_UtxoCohorts_Epoch(client) - ) - self.ge_amount: CatalogTree_Distribution_UtxoCohorts_GeAmount = ( - CatalogTree_Distribution_UtxoCohorts_GeAmount(client) - ) - self.lt_amount: CatalogTree_Distribution_UtxoCohorts_LtAmount = ( - CatalogTree_Distribution_UtxoCohorts_LtAmount(client) - ) - self.max_age: CatalogTree_Distribution_UtxoCohorts_MaxAge = ( - CatalogTree_Distribution_UtxoCohorts_MaxAge(client) - ) - self.min_age: CatalogTree_Distribution_UtxoCohorts_MinAge = ( - CatalogTree_Distribution_UtxoCohorts_MinAge(client) - ) - self.term: CatalogTree_Distribution_UtxoCohorts_Term = ( - CatalogTree_Distribution_UtxoCohorts_Term(client) - ) - self.type_: CatalogTree_Distribution_UtxoCohorts_Type = ( - CatalogTree_Distribution_UtxoCohorts_Type(client) - ) - self.year: CatalogTree_Distribution_UtxoCohorts_Year = ( - CatalogTree_Distribution_UtxoCohorts_Year(client) - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.age_range: CatalogTree_Distribution_UtxoCohorts_AgeRange = CatalogTree_Distribution_UtxoCohorts_AgeRange(client) + self.all: CatalogTree_Distribution_UtxoCohorts_All = CatalogTree_Distribution_UtxoCohorts_All(client) + self.amount_range: CatalogTree_Distribution_UtxoCohorts_AmountRange = CatalogTree_Distribution_UtxoCohorts_AmountRange(client) + self.epoch: CatalogTree_Distribution_UtxoCohorts_Epoch = CatalogTree_Distribution_UtxoCohorts_Epoch(client) + self.ge_amount: CatalogTree_Distribution_UtxoCohorts_GeAmount = CatalogTree_Distribution_UtxoCohorts_GeAmount(client) + self.lt_amount: CatalogTree_Distribution_UtxoCohorts_LtAmount = CatalogTree_Distribution_UtxoCohorts_LtAmount(client) + self.max_age: CatalogTree_Distribution_UtxoCohorts_MaxAge = CatalogTree_Distribution_UtxoCohorts_MaxAge(client) + self.min_age: CatalogTree_Distribution_UtxoCohorts_MinAge = CatalogTree_Distribution_UtxoCohorts_MinAge(client) + self.term: CatalogTree_Distribution_UtxoCohorts_Term = CatalogTree_Distribution_UtxoCohorts_Term(client) + self.type_: CatalogTree_Distribution_UtxoCohorts_Type = CatalogTree_Distribution_UtxoCohorts_Type(client) + self.year: CatalogTree_Distribution_UtxoCohorts_Year = CatalogTree_Distribution_UtxoCohorts_Year(client) class CatalogTree_Distribution_UtxoCohorts_AgeRange: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y_to_12y: _10yTo12yPattern = _10yTo12yPattern( - client, "utxos_at_least_10y_up_to_12y_old" - ) - self._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") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + 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 CatalogTree_Distribution_UtxoCohorts_All: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.activity: ActivityPattern2 = ActivityPattern2(client, "") - self.cost_basis: CatalogTree_Distribution_UtxoCohorts_All_CostBasis = ( - CatalogTree_Distribution_UtxoCohorts_All_CostBasis(client) - ) - self.outputs: OutputsPattern = OutputsPattern(client, "utxo_count") - self.realized: RealizedPattern3 = RealizedPattern3(client, "") - self.relative: CatalogTree_Distribution_UtxoCohorts_All_Relative = ( - CatalogTree_Distribution_UtxoCohorts_All_Relative(client) - ) - self.supply: SupplyPattern2 = SupplyPattern2(client, "supply") - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.activity: ActivityPattern2 = ActivityPattern2(client, 'coinblocks_destroyed_cumulative') + self.cost_basis: CatalogTree_Distribution_UtxoCohorts_All_CostBasis = CatalogTree_Distribution_UtxoCohorts_All_CostBasis(client) + self.outputs: OutputsPattern = OutputsPattern(client, 'utxo_count') + self.realized: RealizedPattern3 = RealizedPattern3(client, 'adjusted_sopr') + self.relative: CatalogTree_Distribution_UtxoCohorts_All_Relative = CatalogTree_Distribution_UtxoCohorts_All_Relative(client) + self.supply: SupplyPattern2 = SupplyPattern2(client, 'supply') + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, 'neg_unrealized_loss') class CatalogTree_Distribution_UtxoCohorts_All_CostBasis: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.max: MetricPattern1[Dollars] = MetricPattern1(client, "max_cost_basis") - self.min: MetricPattern1[Dollars] = MetricPattern1(client, "min_cost_basis") - self.percentiles: PercentilesPattern = PercentilesPattern(client, "cost_basis") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.max: MetricPattern1[Dollars] = MetricPattern1(client, 'max_cost_basis') + self.min: MetricPattern1[Dollars] = MetricPattern1(client, 'min_cost_basis') + self.percentiles: PercentilesPattern = PercentilesPattern(client, 'cost_basis') class CatalogTree_Distribution_UtxoCohorts_All_Relative: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1( - client, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl" - ) - self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1(client, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl") - self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, "supply_in_loss_rel_to_own_supply") - ) - self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = ( - MetricPattern1(client, "supply_in_profit_rel_to_own_supply") - ) - self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1(client, "unrealized_loss_rel_to_own_total_unrealized_pnl") - self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[ - StoredF32 - ] = MetricPattern1(client, "unrealized_profit_rel_to_own_total_unrealized_pnl") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, 'neg_unrealized_loss_rel_to_own_total_unrealized_pnl') + self.net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, 'net_unrealized_pnl_rel_to_own_total_unrealized_pnl') + self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, 'supply_in_loss_rel_to_own_supply') + self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, 'supply_in_profit_rel_to_own_supply') + self.unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, 'unrealized_loss_rel_to_own_total_unrealized_pnl') + self.unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1[StoredF32] = MetricPattern1(client, 'unrealized_profit_rel_to_own_total_unrealized_pnl') class CatalogTree_Distribution_UtxoCohorts_AmountRange: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._0sats: _0satsPattern2 = _0satsPattern2(client, "utxos_with_0sats") - self._100btc_to_1k_btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_100btc_under_1k_btc" - ) - self._100k_btc_or_more: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_100k_btc" - ) - self._100k_sats_to_1m_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_100k_sats_under_1m_sats" - ) - self._100sats_to_1k_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_100sats_under_1k_sats" - ) - self._10btc_to_100btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10btc_under_100btc" - ) - self._10k_btc_to_100k_btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10k_btc_under_100k_btc" - ) - self._10k_sats_to_100k_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10k_sats_under_100k_sats" - ) - self._10m_sats_to_1btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10m_sats_under_1btc" - ) - self._10sats_to_100sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_10sats_under_100sats" - ) - self._1btc_to_10btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1btc_under_10btc" - ) - self._1k_btc_to_10k_btc: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1k_btc_under_10k_btc" - ) - self._1k_sats_to_10k_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1k_sats_under_10k_sats" - ) - self._1m_sats_to_10m_sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1m_sats_under_10m_sats" - ) - self._1sat_to_10sats: _0satsPattern2 = _0satsPattern2( - client, "utxos_above_1sat_under_10sats" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._0sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_with_0sats') + self._100btc_to_1k_btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100btc_under_1k_btc') + self._100k_btc_or_more: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100k_btc') + self._100k_sats_to_1m_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100k_sats_under_1m_sats') + self._100sats_to_1k_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_100sats_under_1k_sats') + self._10btc_to_100btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10btc_under_100btc') + self._10k_btc_to_100k_btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10k_btc_under_100k_btc') + self._10k_sats_to_100k_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10k_sats_under_100k_sats') + self._10m_sats_to_1btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10m_sats_under_1btc') + self._10sats_to_100sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_10sats_under_100sats') + self._1btc_to_10btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1btc_under_10btc') + self._1k_btc_to_10k_btc: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1k_btc_under_10k_btc') + self._1k_sats_to_10k_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1k_sats_under_10k_sats') + self._1m_sats_to_10m_sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1m_sats_under_10m_sats') + self._1sat_to_10sats: _0satsPattern2 = _0satsPattern2(client, 'utxos_above_1sat_under_10sats') class CatalogTree_Distribution_UtxoCohorts_Epoch: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._0: _0satsPattern2 = _0satsPattern2(client, "epoch_0") - self._1: _0satsPattern2 = _0satsPattern2(client, "epoch_1") - self._2: _0satsPattern2 = _0satsPattern2(client, "epoch_2") - self._3: _0satsPattern2 = _0satsPattern2(client, "epoch_3") - self._4: _0satsPattern2 = _0satsPattern2(client, "epoch_4") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._0: _0satsPattern2 = _0satsPattern2(client, 'epoch_0') + self._1: _0satsPattern2 = _0satsPattern2(client, 'epoch_1') + self._2: _0satsPattern2 = _0satsPattern2(client, 'epoch_2') + self._3: _0satsPattern2 = _0satsPattern2(client, 'epoch_3') + self._4: _0satsPattern2 = _0satsPattern2(client, 'epoch_4') class CatalogTree_Distribution_UtxoCohorts_GeAmount: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._100btc: _100btcPattern = _100btcPattern(client, "utxos_above_100btc") - self._100k_sats: _100btcPattern = _100btcPattern( - client, "utxos_above_100k_sats" - ) - self._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") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._100btc: _100btcPattern = _100btcPattern(client, 'utxos_above_100btc') + self._100k_sats: _100btcPattern = _100btcPattern(client, 'utxos_above_100k_sats') + self._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 CatalogTree_Distribution_UtxoCohorts_LtAmount: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._100btc: _100btcPattern = _100btcPattern(client, "utxos_under_100btc") - self._100k_btc: _100btcPattern = _100btcPattern(client, "utxos_under_100k_btc") - self._100k_sats: _100btcPattern = _100btcPattern( - client, "utxos_under_100k_sats" - ) - self._100sats: _100btcPattern = _100btcPattern(client, "utxos_under_100sats") - self._10btc: _100btcPattern = _100btcPattern(client, "utxos_under_10btc") - self._10k_btc: _100btcPattern = _100btcPattern(client, "utxos_under_10k_btc") - self._10k_sats: _100btcPattern = _100btcPattern(client, "utxos_under_10k_sats") - self._10m_sats: _100btcPattern = _100btcPattern(client, "utxos_under_10m_sats") - self._10sats: _100btcPattern = _100btcPattern(client, "utxos_under_10sats") - self._1btc: _100btcPattern = _100btcPattern(client, "utxos_under_1btc") - self._1k_btc: _100btcPattern = _100btcPattern(client, "utxos_under_1k_btc") - self._1k_sats: _100btcPattern = _100btcPattern(client, "utxos_under_1k_sats") - self._1m_sats: _100btcPattern = _100btcPattern(client, "utxos_under_1m_sats") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._100btc: _100btcPattern = _100btcPattern(client, 'utxos_under_100btc') + self._100k_btc: _100btcPattern = _100btcPattern(client, 'utxos_under_100k_btc') + self._100k_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_100k_sats') + self._100sats: _100btcPattern = _100btcPattern(client, 'utxos_under_100sats') + self._10btc: _100btcPattern = _100btcPattern(client, 'utxos_under_10btc') + self._10k_btc: _100btcPattern = _100btcPattern(client, 'utxos_under_10k_btc') + self._10k_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_10k_sats') + self._10m_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_10m_sats') + self._10sats: _100btcPattern = _100btcPattern(client, 'utxos_under_10sats') + self._1btc: _100btcPattern = _100btcPattern(client, 'utxos_under_1btc') + self._1k_btc: _100btcPattern = _100btcPattern(client, 'utxos_under_1k_btc') + self._1k_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_1k_sats') + self._1m_sats: _100btcPattern = _100btcPattern(client, 'utxos_under_1m_sats') class CatalogTree_Distribution_UtxoCohorts_MaxAge: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y: _10yPattern = _10yPattern(client, "utxos_up_to_10y_old") - self._12y: _10yPattern = _10yPattern(client, "utxos_up_to_12y_old") - self._15y: _10yPattern = _10yPattern(client, "utxos_up_to_15y_old") - self._1m: _10yPattern = _10yPattern(client, "utxos_up_to_1m_old") - self._1w: _10yPattern = _10yPattern(client, "utxos_up_to_1w_old") - self._1y: _10yPattern = _10yPattern(client, "utxos_up_to_1y_old") - self._2m: _10yPattern = _10yPattern(client, "utxos_up_to_2m_old") - self._2y: _10yPattern = _10yPattern(client, "utxos_up_to_2y_old") - self._3m: _10yPattern = _10yPattern(client, "utxos_up_to_3m_old") - self._3y: _10yPattern = _10yPattern(client, "utxos_up_to_3y_old") - self._4m: _10yPattern = _10yPattern(client, "utxos_up_to_4m_old") - self._4y: _10yPattern = _10yPattern(client, "utxos_up_to_4y_old") - self._5m: _10yPattern = _10yPattern(client, "utxos_up_to_5m_old") - self._5y: _10yPattern = _10yPattern(client, "utxos_up_to_5y_old") - self._6m: _10yPattern = _10yPattern(client, "utxos_up_to_6m_old") - self._6y: _10yPattern = _10yPattern(client, "utxos_up_to_6y_old") - self._7y: _10yPattern = _10yPattern(client, "utxos_up_to_7y_old") - self._8y: _10yPattern = _10yPattern(client, "utxos_up_to_8y_old") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._10y: _10yPattern = _10yPattern(client, 'utxos_up_to_10y_old') + self._12y: _10yPattern = _10yPattern(client, 'utxos_up_to_12y_old') + self._15y: _10yPattern = _10yPattern(client, 'utxos_up_to_15y_old') + self._1m: _10yPattern = _10yPattern(client, 'utxos_up_to_1m_old') + self._1w: _10yPattern = _10yPattern(client, 'utxos_up_to_1w_old') + self._1y: _10yPattern = _10yPattern(client, 'utxos_up_to_1y_old') + self._2m: _10yPattern = _10yPattern(client, 'utxos_up_to_2m_old') + self._2y: _10yPattern = _10yPattern(client, 'utxos_up_to_2y_old') + self._3m: _10yPattern = _10yPattern(client, 'utxos_up_to_3m_old') + self._3y: _10yPattern = _10yPattern(client, 'utxos_up_to_3y_old') + self._4m: _10yPattern = _10yPattern(client, 'utxos_up_to_4m_old') + self._4y: _10yPattern = _10yPattern(client, 'utxos_up_to_4y_old') + self._5m: _10yPattern = _10yPattern(client, 'utxos_up_to_5m_old') + self._5y: _10yPattern = _10yPattern(client, 'utxos_up_to_5y_old') + self._6m: _10yPattern = _10yPattern(client, 'utxos_up_to_6m_old') + self._6y: _10yPattern = _10yPattern(client, 'utxos_up_to_6y_old') + self._7y: _10yPattern = _10yPattern(client, 'utxos_up_to_7y_old') + self._8y: _10yPattern = _10yPattern(client, 'utxos_up_to_8y_old') class CatalogTree_Distribution_UtxoCohorts_MinAge: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y: _100btcPattern = _100btcPattern(client, "utxos_at_least_10y_old") - self._12y: _100btcPattern = _100btcPattern(client, "utxos_at_least_12y_old") - self._1d: _100btcPattern = _100btcPattern(client, "utxos_at_least_1d_old") - self._1m: _100btcPattern = _100btcPattern(client, "utxos_at_least_1m_old") - self._1w: _100btcPattern = _100btcPattern(client, "utxos_at_least_1w_old") - self._1y: _100btcPattern = _100btcPattern(client, "utxos_at_least_1y_old") - self._2m: _100btcPattern = _100btcPattern(client, "utxos_at_least_2m_old") - self._2y: _100btcPattern = _100btcPattern(client, "utxos_at_least_2y_old") - self._3m: _100btcPattern = _100btcPattern(client, "utxos_at_least_3m_old") - self._3y: _100btcPattern = _100btcPattern(client, "utxos_at_least_3y_old") - self._4m: _100btcPattern = _100btcPattern(client, "utxos_at_least_4m_old") - self._4y: _100btcPattern = _100btcPattern(client, "utxos_at_least_4y_old") - self._5m: _100btcPattern = _100btcPattern(client, "utxos_at_least_5m_old") - self._5y: _100btcPattern = _100btcPattern(client, "utxos_at_least_5y_old") - self._6m: _100btcPattern = _100btcPattern(client, "utxos_at_least_6m_old") - self._6y: _100btcPattern = _100btcPattern(client, "utxos_at_least_6y_old") - self._7y: _100btcPattern = _100btcPattern(client, "utxos_at_least_7y_old") - self._8y: _100btcPattern = _100btcPattern(client, "utxos_at_least_8y_old") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._10y: _100btcPattern = _100btcPattern(client, 'utxos_at_least_10y_old') + self._12y: _100btcPattern = _100btcPattern(client, 'utxos_at_least_12y_old') + self._1d: _100btcPattern = _100btcPattern(client, 'utxos_at_least_1d_old') + self._1m: _100btcPattern = _100btcPattern(client, 'utxos_at_least_1m_old') + self._1w: _100btcPattern = _100btcPattern(client, 'utxos_at_least_1w_old') + self._1y: _100btcPattern = _100btcPattern(client, 'utxos_at_least_1y_old') + self._2m: _100btcPattern = _100btcPattern(client, 'utxos_at_least_2m_old') + self._2y: _100btcPattern = _100btcPattern(client, 'utxos_at_least_2y_old') + self._3m: _100btcPattern = _100btcPattern(client, 'utxos_at_least_3m_old') + self._3y: _100btcPattern = _100btcPattern(client, 'utxos_at_least_3y_old') + self._4m: _100btcPattern = _100btcPattern(client, 'utxos_at_least_4m_old') + self._4y: _100btcPattern = _100btcPattern(client, 'utxos_at_least_4y_old') + self._5m: _100btcPattern = _100btcPattern(client, 'utxos_at_least_5m_old') + self._5y: _100btcPattern = _100btcPattern(client, 'utxos_at_least_5y_old') + self._6m: _100btcPattern = _100btcPattern(client, 'utxos_at_least_6m_old') + self._6y: _100btcPattern = _100btcPattern(client, 'utxos_at_least_6y_old') + self._7y: _100btcPattern = _100btcPattern(client, 'utxos_at_least_7y_old') + self._8y: _100btcPattern = _100btcPattern(client, 'utxos_at_least_8y_old') class CatalogTree_Distribution_UtxoCohorts_Term: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.long: CatalogTree_Distribution_UtxoCohorts_Term_Long = ( - CatalogTree_Distribution_UtxoCohorts_Term_Long(client) - ) - self.short: CatalogTree_Distribution_UtxoCohorts_Term_Short = ( - CatalogTree_Distribution_UtxoCohorts_Term_Short(client) - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.long: CatalogTree_Distribution_UtxoCohorts_Term_Long = CatalogTree_Distribution_UtxoCohorts_Term_Long(client) + self.short: CatalogTree_Distribution_UtxoCohorts_Term_Short = CatalogTree_Distribution_UtxoCohorts_Term_Short(client) class CatalogTree_Distribution_UtxoCohorts_Term_Long: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.activity: ActivityPattern2 = ActivityPattern2(client, "lth") - self.cost_basis: CatalogTree_Distribution_UtxoCohorts_Term_Long_CostBasis = ( - CatalogTree_Distribution_UtxoCohorts_Term_Long_CostBasis(client) - ) - self.outputs: OutputsPattern = OutputsPattern(client, "lth_utxo_count") - self.realized: RealizedPattern2 = RealizedPattern2(client, "lth") - self.relative: RelativePattern5 = RelativePattern5(client, "lth") - self.supply: SupplyPattern2 = SupplyPattern2(client, "lth_supply") - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "lth") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.activity: ActivityPattern2 = ActivityPattern2(client, 'lth') + self.cost_basis: CatalogTree_Distribution_UtxoCohorts_Term_Long_CostBasis = CatalogTree_Distribution_UtxoCohorts_Term_Long_CostBasis(client) + self.outputs: OutputsPattern = OutputsPattern(client, 'lth') + 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 CatalogTree_Distribution_UtxoCohorts_Term_Long_CostBasis: """Catalog 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" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.max: MetricPattern1[Dollars] = MetricPattern1(client, 'lth_max_cost_basis') + self.min: MetricPattern1[Dollars] = MetricPattern1(client, 'lth_min_cost_basis') + self.percentiles: PercentilesPattern = PercentilesPattern(client, 'lth_cost_basis') class CatalogTree_Distribution_UtxoCohorts_Term_Short: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.activity: ActivityPattern2 = ActivityPattern2(client, "sth") - self.cost_basis: CatalogTree_Distribution_UtxoCohorts_Term_Short_CostBasis = ( - CatalogTree_Distribution_UtxoCohorts_Term_Short_CostBasis(client) - ) - self.outputs: OutputsPattern = OutputsPattern(client, "sth_utxo_count") - self.realized: RealizedPattern3 = RealizedPattern3(client, "sth") - self.relative: RelativePattern5 = RelativePattern5(client, "sth") - self.supply: SupplyPattern2 = SupplyPattern2(client, "sth_supply") - self.unrealized: UnrealizedPattern = UnrealizedPattern(client, "sth") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.activity: ActivityPattern2 = ActivityPattern2(client, 'sth') + self.cost_basis: CatalogTree_Distribution_UtxoCohorts_Term_Short_CostBasis = CatalogTree_Distribution_UtxoCohorts_Term_Short_CostBasis(client) + self.outputs: OutputsPattern = OutputsPattern(client, 'sth') + self.realized: RealizedPattern3 = RealizedPattern3(client, 'sth') + self.relative: RelativePattern5 = RelativePattern5(client, 'sth') + self.supply: SupplyPattern2 = SupplyPattern2(client, 'sth_supply') + self.unrealized: UnrealizedPattern = UnrealizedPattern(client, 'sth') class CatalogTree_Distribution_UtxoCohorts_Term_Short_CostBasis: """Catalog 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" - ) - + 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 CatalogTree_Distribution_UtxoCohorts_Type: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.empty: _0satsPattern2 = _0satsPattern2(client, "empty_outputs") - self.p2a: _0satsPattern2 = _0satsPattern2(client, "p2a") - self.p2ms: _0satsPattern2 = _0satsPattern2(client, "p2ms") - self.p2pk33: _0satsPattern2 = _0satsPattern2(client, "p2pk33") - self.p2pk65: _0satsPattern2 = _0satsPattern2(client, "p2pk65") - self.p2pkh: _0satsPattern2 = _0satsPattern2(client, "p2pkh") - self.p2sh: _0satsPattern2 = _0satsPattern2(client, "p2sh") - self.p2tr: _0satsPattern2 = _0satsPattern2(client, "p2tr") - self.p2wpkh: _0satsPattern2 = _0satsPattern2(client, "p2wpkh") - self.p2wsh: _0satsPattern2 = _0satsPattern2(client, "p2wsh") - self.unknown: _0satsPattern2 = _0satsPattern2(client, "unknown_outputs") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.empty: _0satsPattern2 = _0satsPattern2(client, 'empty_outputs') + self.p2a: _0satsPattern2 = _0satsPattern2(client, 'p2a') + self.p2ms: _0satsPattern2 = _0satsPattern2(client, 'p2ms') + self.p2pk33: _0satsPattern2 = _0satsPattern2(client, 'p2pk33') + self.p2pk65: _0satsPattern2 = _0satsPattern2(client, 'p2pk65') + self.p2pkh: _0satsPattern2 = _0satsPattern2(client, 'p2pkh') + self.p2sh: _0satsPattern2 = _0satsPattern2(client, 'p2sh') + self.p2tr: _0satsPattern2 = _0satsPattern2(client, 'p2tr') + self.p2wpkh: _0satsPattern2 = _0satsPattern2(client, 'p2wpkh') + self.p2wsh: _0satsPattern2 = _0satsPattern2(client, 'p2wsh') + self.unknown: _0satsPattern2 = _0satsPattern2(client, 'unknown_outputs') class CatalogTree_Distribution_UtxoCohorts_Year: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._2009: _0satsPattern2 = _0satsPattern2(client, "year_2009") - self._2010: _0satsPattern2 = _0satsPattern2(client, "year_2010") - self._2011: _0satsPattern2 = _0satsPattern2(client, "year_2011") - self._2012: _0satsPattern2 = _0satsPattern2(client, "year_2012") - self._2013: _0satsPattern2 = _0satsPattern2(client, "year_2013") - self._2014: _0satsPattern2 = _0satsPattern2(client, "year_2014") - self._2015: _0satsPattern2 = _0satsPattern2(client, "year_2015") - self._2016: _0satsPattern2 = _0satsPattern2(client, "year_2016") - self._2017: _0satsPattern2 = _0satsPattern2(client, "year_2017") - self._2018: _0satsPattern2 = _0satsPattern2(client, "year_2018") - self._2019: _0satsPattern2 = _0satsPattern2(client, "year_2019") - self._2020: _0satsPattern2 = _0satsPattern2(client, "year_2020") - self._2021: _0satsPattern2 = _0satsPattern2(client, "year_2021") - self._2022: _0satsPattern2 = _0satsPattern2(client, "year_2022") - self._2023: _0satsPattern2 = _0satsPattern2(client, "year_2023") - self._2024: _0satsPattern2 = _0satsPattern2(client, "year_2024") - self._2025: _0satsPattern2 = _0satsPattern2(client, "year_2025") - self._2026: _0satsPattern2 = _0satsPattern2(client, "year_2026") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._2009: _0satsPattern2 = _0satsPattern2(client, 'year_2009') + self._2010: _0satsPattern2 = _0satsPattern2(client, 'year_2010') + self._2011: _0satsPattern2 = _0satsPattern2(client, 'year_2011') + self._2012: _0satsPattern2 = _0satsPattern2(client, 'year_2012') + self._2013: _0satsPattern2 = _0satsPattern2(client, 'year_2013') + self._2014: _0satsPattern2 = _0satsPattern2(client, 'year_2014') + self._2015: _0satsPattern2 = _0satsPattern2(client, 'year_2015') + self._2016: _0satsPattern2 = _0satsPattern2(client, 'year_2016') + self._2017: _0satsPattern2 = _0satsPattern2(client, 'year_2017') + self._2018: _0satsPattern2 = _0satsPattern2(client, 'year_2018') + self._2019: _0satsPattern2 = _0satsPattern2(client, 'year_2019') + self._2020: _0satsPattern2 = _0satsPattern2(client, 'year_2020') + self._2021: _0satsPattern2 = _0satsPattern2(client, 'year_2021') + self._2022: _0satsPattern2 = _0satsPattern2(client, 'year_2022') + self._2023: _0satsPattern2 = _0satsPattern2(client, 'year_2023') + self._2024: _0satsPattern2 = _0satsPattern2(client, 'year_2024') + self._2025: _0satsPattern2 = _0satsPattern2(client, 'year_2025') + self._2026: _0satsPattern2 = _0satsPattern2(client, 'year_2026') class CatalogTree_Indexes: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): + def __init__(self, client: BrkClientBase, base_path: str = ''): self.address: CatalogTree_Indexes_Address = CatalogTree_Indexes_Address(client) - self.dateindex: CatalogTree_Indexes_Dateindex = CatalogTree_Indexes_Dateindex( - client - ) - self.decadeindex: CatalogTree_Indexes_Decadeindex = ( - CatalogTree_Indexes_Decadeindex(client) - ) - self.difficultyepoch: CatalogTree_Indexes_Difficultyepoch = ( - CatalogTree_Indexes_Difficultyepoch(client) - ) - self.halvingepoch: CatalogTree_Indexes_Halvingepoch = ( - CatalogTree_Indexes_Halvingepoch(client) - ) + self.dateindex: CatalogTree_Indexes_Dateindex = CatalogTree_Indexes_Dateindex(client) + self.decadeindex: CatalogTree_Indexes_Decadeindex = CatalogTree_Indexes_Decadeindex(client) + self.difficultyepoch: CatalogTree_Indexes_Difficultyepoch = CatalogTree_Indexes_Difficultyepoch(client) + self.halvingepoch: CatalogTree_Indexes_Halvingepoch = CatalogTree_Indexes_Halvingepoch(client) self.height: CatalogTree_Indexes_Height = CatalogTree_Indexes_Height(client) - self.monthindex: CatalogTree_Indexes_Monthindex = ( - CatalogTree_Indexes_Monthindex(client) - ) - self.quarterindex: CatalogTree_Indexes_Quarterindex = ( - CatalogTree_Indexes_Quarterindex(client) - ) - self.semesterindex: CatalogTree_Indexes_Semesterindex = ( - CatalogTree_Indexes_Semesterindex(client) - ) + self.monthindex: CatalogTree_Indexes_Monthindex = CatalogTree_Indexes_Monthindex(client) + self.quarterindex: CatalogTree_Indexes_Quarterindex = CatalogTree_Indexes_Quarterindex(client) + self.semesterindex: CatalogTree_Indexes_Semesterindex = CatalogTree_Indexes_Semesterindex(client) self.txindex: CatalogTree_Indexes_Txindex = CatalogTree_Indexes_Txindex(client) - self.txinindex: CatalogTree_Indexes_Txinindex = CatalogTree_Indexes_Txinindex( - client - ) - self.txoutindex: CatalogTree_Indexes_Txoutindex = ( - CatalogTree_Indexes_Txoutindex(client) - ) - self.weekindex: CatalogTree_Indexes_Weekindex = CatalogTree_Indexes_Weekindex( - client - ) - self.yearindex: CatalogTree_Indexes_Yearindex = CatalogTree_Indexes_Yearindex( - client - ) - + self.txinindex: CatalogTree_Indexes_Txinindex = CatalogTree_Indexes_Txinindex(client) + self.txoutindex: CatalogTree_Indexes_Txoutindex = CatalogTree_Indexes_Txoutindex(client) + self.weekindex: CatalogTree_Indexes_Weekindex = CatalogTree_Indexes_Weekindex(client) + self.yearindex: CatalogTree_Indexes_Yearindex = CatalogTree_Indexes_Yearindex(client) class CatalogTree_Indexes_Address: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.empty: CatalogTree_Indexes_Address_Empty = ( - CatalogTree_Indexes_Address_Empty(client) - ) - self.opreturn: CatalogTree_Indexes_Address_Opreturn = ( - CatalogTree_Indexes_Address_Opreturn(client) - ) - self.p2a: CatalogTree_Indexes_Address_P2a = CatalogTree_Indexes_Address_P2a( - client - ) - self.p2ms: CatalogTree_Indexes_Address_P2ms = CatalogTree_Indexes_Address_P2ms( - client - ) - self.p2pk33: CatalogTree_Indexes_Address_P2pk33 = ( - CatalogTree_Indexes_Address_P2pk33(client) - ) - self.p2pk65: CatalogTree_Indexes_Address_P2pk65 = ( - CatalogTree_Indexes_Address_P2pk65(client) - ) - self.p2pkh: CatalogTree_Indexes_Address_P2pkh = ( - CatalogTree_Indexes_Address_P2pkh(client) - ) - self.p2sh: CatalogTree_Indexes_Address_P2sh = CatalogTree_Indexes_Address_P2sh( - client - ) - self.p2tr: CatalogTree_Indexes_Address_P2tr = CatalogTree_Indexes_Address_P2tr( - client - ) - self.p2wpkh: CatalogTree_Indexes_Address_P2wpkh = ( - CatalogTree_Indexes_Address_P2wpkh(client) - ) - self.p2wsh: CatalogTree_Indexes_Address_P2wsh = ( - CatalogTree_Indexes_Address_P2wsh(client) - ) - self.unknown: CatalogTree_Indexes_Address_Unknown = ( - CatalogTree_Indexes_Address_Unknown(client) - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.empty: CatalogTree_Indexes_Address_Empty = CatalogTree_Indexes_Address_Empty(client) + self.opreturn: CatalogTree_Indexes_Address_Opreturn = CatalogTree_Indexes_Address_Opreturn(client) + self.p2a: CatalogTree_Indexes_Address_P2a = CatalogTree_Indexes_Address_P2a(client) + self.p2ms: CatalogTree_Indexes_Address_P2ms = CatalogTree_Indexes_Address_P2ms(client) + self.p2pk33: CatalogTree_Indexes_Address_P2pk33 = CatalogTree_Indexes_Address_P2pk33(client) + self.p2pk65: CatalogTree_Indexes_Address_P2pk65 = CatalogTree_Indexes_Address_P2pk65(client) + self.p2pkh: CatalogTree_Indexes_Address_P2pkh = CatalogTree_Indexes_Address_P2pkh(client) + self.p2sh: CatalogTree_Indexes_Address_P2sh = CatalogTree_Indexes_Address_P2sh(client) + self.p2tr: CatalogTree_Indexes_Address_P2tr = CatalogTree_Indexes_Address_P2tr(client) + self.p2wpkh: CatalogTree_Indexes_Address_P2wpkh = CatalogTree_Indexes_Address_P2wpkh(client) + self.p2wsh: CatalogTree_Indexes_Address_P2wsh = CatalogTree_Indexes_Address_P2wsh(client) + self.unknown: CatalogTree_Indexes_Address_Unknown = CatalogTree_Indexes_Address_Unknown(client) class CatalogTree_Indexes_Address_Empty: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern9[EmptyOutputIndex] = MetricPattern9( - client, "emptyoutputindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern9[EmptyOutputIndex] = MetricPattern9(client, 'emptyoutputindex') class CatalogTree_Indexes_Address_Opreturn: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern14[OpReturnIndex] = MetricPattern14( - client, "opreturnindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern14[OpReturnIndex] = MetricPattern14(client, 'opreturnindex') class CatalogTree_Indexes_Address_P2a: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern16[P2AAddressIndex] = MetricPattern16( - client, "p2aaddressindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern16[P2AAddressIndex] = MetricPattern16(client, 'p2aaddressindex') class CatalogTree_Indexes_Address_P2ms: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern17[P2MSOutputIndex] = MetricPattern17( - client, "p2msoutputindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern17[P2MSOutputIndex] = MetricPattern17(client, 'p2msoutputindex') class CatalogTree_Indexes_Address_P2pk33: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern18[P2PK33AddressIndex] = MetricPattern18( - client, "p2pk33addressindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern18[P2PK33AddressIndex] = MetricPattern18(client, 'p2pk33addressindex') class CatalogTree_Indexes_Address_P2pk65: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern19[P2PK65AddressIndex] = MetricPattern19( - client, "p2pk65addressindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern19[P2PK65AddressIndex] = MetricPattern19(client, 'p2pk65addressindex') class CatalogTree_Indexes_Address_P2pkh: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern20[P2PKHAddressIndex] = MetricPattern20( - client, "p2pkhaddressindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern20[P2PKHAddressIndex] = MetricPattern20(client, 'p2pkhaddressindex') class CatalogTree_Indexes_Address_P2sh: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern21[P2SHAddressIndex] = MetricPattern21( - client, "p2shaddressindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern21[P2SHAddressIndex] = MetricPattern21(client, 'p2shaddressindex') class CatalogTree_Indexes_Address_P2tr: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern22[P2TRAddressIndex] = MetricPattern22( - client, "p2traddressindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern22[P2TRAddressIndex] = MetricPattern22(client, 'p2traddressindex') class CatalogTree_Indexes_Address_P2wpkh: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern23[P2WPKHAddressIndex] = MetricPattern23( - client, "p2wpkhaddressindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern23[P2WPKHAddressIndex] = MetricPattern23(client, 'p2wpkhaddressindex') class CatalogTree_Indexes_Address_P2wsh: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern24[P2WSHAddressIndex] = MetricPattern24( - client, "p2wshaddressindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern24[P2WSHAddressIndex] = MetricPattern24(client, 'p2wshaddressindex') class CatalogTree_Indexes_Address_Unknown: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern28[UnknownOutputIndex] = MetricPattern28( - client, "unknownoutputindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern28[UnknownOutputIndex] = MetricPattern28(client, 'unknownoutputindex') class CatalogTree_Indexes_Dateindex: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.date: MetricPattern6[Date] = MetricPattern6(client, "dateindex_date") - self.first_height: MetricPattern6[Height] = MetricPattern6( - client, "dateindex_first_height" - ) - self.height_count: MetricPattern6[StoredU64] = MetricPattern6( - client, "dateindex_height_count" - ) - self.identity: MetricPattern6[DateIndex] = MetricPattern6(client, "dateindex") - self.monthindex: MetricPattern6[MonthIndex] = MetricPattern6( - client, "dateindex_monthindex" - ) - self.weekindex: MetricPattern6[WeekIndex] = MetricPattern6( - client, "dateindex_weekindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.date: MetricPattern6[Date] = MetricPattern6(client, 'dateindex_date') + self.first_height: MetricPattern6[Height] = MetricPattern6(client, 'dateindex_first_height') + self.height_count: MetricPattern6[StoredU64] = MetricPattern6(client, 'dateindex_height_count') + self.identity: MetricPattern6[DateIndex] = MetricPattern6(client, 'dateindex') + self.monthindex: MetricPattern6[MonthIndex] = MetricPattern6(client, 'dateindex_monthindex') + self.weekindex: MetricPattern6[WeekIndex] = MetricPattern6(client, 'dateindex_weekindex') class CatalogTree_Indexes_Decadeindex: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.first_yearindex: MetricPattern7[YearIndex] = MetricPattern7( - client, "decadeindex_first_yearindex" - ) - self.identity: MetricPattern7[DecadeIndex] = MetricPattern7( - client, "decadeindex" - ) - self.yearindex_count: MetricPattern7[StoredU64] = MetricPattern7( - client, "decadeindex_yearindex_count" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.first_yearindex: MetricPattern7[YearIndex] = MetricPattern7(client, 'decadeindex_first_yearindex') + self.identity: MetricPattern7[DecadeIndex] = MetricPattern7(client, 'decadeindex') + self.yearindex_count: MetricPattern7[StoredU64] = MetricPattern7(client, 'decadeindex_yearindex_count') class CatalogTree_Indexes_Difficultyepoch: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.first_height: MetricPattern8[Height] = MetricPattern8( - client, "difficultyepoch_first_height" - ) - self.height_count: MetricPattern8[StoredU64] = MetricPattern8( - client, "difficultyepoch_height_count" - ) - self.identity: MetricPattern8[DifficultyEpoch] = MetricPattern8( - client, "difficultyepoch" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.first_height: MetricPattern8[Height] = MetricPattern8(client, 'difficultyepoch_first_height') + self.height_count: MetricPattern8[StoredU64] = MetricPattern8(client, 'difficultyepoch_height_count') + self.identity: MetricPattern8[DifficultyEpoch] = MetricPattern8(client, 'difficultyepoch') class CatalogTree_Indexes_Halvingepoch: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.first_height: MetricPattern10[Height] = MetricPattern10( - client, "halvingepoch_first_height" - ) - self.identity: MetricPattern10[HalvingEpoch] = MetricPattern10( - client, "halvingepoch" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.first_height: MetricPattern10[Height] = MetricPattern10(client, 'halvingepoch_first_height') + self.identity: MetricPattern10[HalvingEpoch] = MetricPattern10(client, 'halvingepoch') class CatalogTree_Indexes_Height: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.dateindex: MetricPattern11[DateIndex] = MetricPattern11( - client, "height_dateindex" - ) - self.difficultyepoch: MetricPattern11[DifficultyEpoch] = MetricPattern11( - client, "height_difficultyepoch" - ) - self.halvingepoch: MetricPattern11[HalvingEpoch] = MetricPattern11( - client, "height_halvingepoch" - ) - self.identity: MetricPattern11[Height] = MetricPattern11(client, "height") - self.txindex_count: MetricPattern11[StoredU64] = MetricPattern11( - client, "height_txindex_count" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.dateindex: MetricPattern11[DateIndex] = MetricPattern11(client, 'height_dateindex') + self.difficultyepoch: MetricPattern11[DifficultyEpoch] = MetricPattern11(client, 'height_difficultyepoch') + self.halvingepoch: MetricPattern11[HalvingEpoch] = MetricPattern11(client, 'height_halvingepoch') + self.identity: MetricPattern11[Height] = MetricPattern11(client, 'height') + self.txindex_count: MetricPattern11[StoredU64] = MetricPattern11(client, 'height_txindex_count') class CatalogTree_Indexes_Monthindex: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.dateindex_count: MetricPattern13[StoredU64] = MetricPattern13( - client, "monthindex_dateindex_count" - ) - self.first_dateindex: MetricPattern13[DateIndex] = MetricPattern13( - client, "monthindex_first_dateindex" - ) - self.identity: MetricPattern13[MonthIndex] = MetricPattern13( - client, "monthindex" - ) - self.quarterindex: MetricPattern13[QuarterIndex] = MetricPattern13( - client, "monthindex_quarterindex" - ) - self.semesterindex: MetricPattern13[SemesterIndex] = MetricPattern13( - client, "monthindex_semesterindex" - ) - self.yearindex: MetricPattern13[YearIndex] = MetricPattern13( - client, "monthindex_yearindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.dateindex_count: MetricPattern13[StoredU64] = MetricPattern13(client, 'monthindex_dateindex_count') + self.first_dateindex: MetricPattern13[DateIndex] = MetricPattern13(client, 'monthindex_first_dateindex') + self.identity: MetricPattern13[MonthIndex] = MetricPattern13(client, 'monthindex') + self.quarterindex: MetricPattern13[QuarterIndex] = MetricPattern13(client, 'monthindex_quarterindex') + self.semesterindex: MetricPattern13[SemesterIndex] = MetricPattern13(client, 'monthindex_semesterindex') + self.yearindex: MetricPattern13[YearIndex] = MetricPattern13(client, 'monthindex_yearindex') class CatalogTree_Indexes_Quarterindex: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.first_monthindex: MetricPattern25[MonthIndex] = MetricPattern25( - client, "quarterindex_first_monthindex" - ) - self.identity: MetricPattern25[QuarterIndex] = MetricPattern25( - client, "quarterindex" - ) - self.monthindex_count: MetricPattern25[StoredU64] = MetricPattern25( - client, "quarterindex_monthindex_count" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.first_monthindex: MetricPattern25[MonthIndex] = MetricPattern25(client, 'quarterindex_first_monthindex') + self.identity: MetricPattern25[QuarterIndex] = MetricPattern25(client, 'quarterindex') + self.monthindex_count: MetricPattern25[StoredU64] = MetricPattern25(client, 'quarterindex_monthindex_count') class CatalogTree_Indexes_Semesterindex: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.first_monthindex: MetricPattern26[MonthIndex] = MetricPattern26( - client, "semesterindex_first_monthindex" - ) - self.identity: MetricPattern26[SemesterIndex] = MetricPattern26( - client, "semesterindex" - ) - self.monthindex_count: MetricPattern26[StoredU64] = MetricPattern26( - client, "semesterindex_monthindex_count" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.first_monthindex: MetricPattern26[MonthIndex] = MetricPattern26(client, 'semesterindex_first_monthindex') + self.identity: MetricPattern26[SemesterIndex] = MetricPattern26(client, 'semesterindex') + self.monthindex_count: MetricPattern26[StoredU64] = MetricPattern26(client, 'semesterindex_monthindex_count') class CatalogTree_Indexes_Txindex: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern27[TxIndex] = MetricPattern27(client, "txindex") - self.input_count: MetricPattern27[StoredU64] = MetricPattern27( - client, "txindex_input_count" - ) - self.output_count: MetricPattern27[StoredU64] = MetricPattern27( - client, "txindex_output_count" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern27[TxIndex] = MetricPattern27(client, 'txindex') + self.input_count: MetricPattern27[StoredU64] = MetricPattern27(client, 'txindex_input_count') + self.output_count: MetricPattern27[StoredU64] = MetricPattern27(client, 'txindex_output_count') class CatalogTree_Indexes_Txinindex: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern12[TxInIndex] = MetricPattern12(client, "txinindex") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern12[TxInIndex] = MetricPattern12(client, 'txinindex') class CatalogTree_Indexes_Txoutindex: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.identity: MetricPattern15[TxOutIndex] = MetricPattern15( - client, "txoutindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.identity: MetricPattern15[TxOutIndex] = MetricPattern15(client, 'txoutindex') class CatalogTree_Indexes_Weekindex: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.dateindex_count: MetricPattern29[StoredU64] = MetricPattern29( - client, "weekindex_dateindex_count" - ) - self.first_dateindex: MetricPattern29[DateIndex] = MetricPattern29( - client, "weekindex_first_dateindex" - ) - self.identity: MetricPattern29[WeekIndex] = MetricPattern29(client, "weekindex") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.dateindex_count: MetricPattern29[StoredU64] = MetricPattern29(client, 'weekindex_dateindex_count') + self.first_dateindex: MetricPattern29[DateIndex] = MetricPattern29(client, 'weekindex_first_dateindex') + self.identity: MetricPattern29[WeekIndex] = MetricPattern29(client, 'weekindex') class CatalogTree_Indexes_Yearindex: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.decadeindex: MetricPattern30[DecadeIndex] = MetricPattern30( - client, "yearindex_decadeindex" - ) - self.first_monthindex: MetricPattern30[MonthIndex] = MetricPattern30( - client, "yearindex_first_monthindex" - ) - self.identity: MetricPattern30[YearIndex] = MetricPattern30(client, "yearindex") - self.monthindex_count: MetricPattern30[StoredU64] = MetricPattern30( - client, "yearindex_monthindex_count" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.decadeindex: MetricPattern30[DecadeIndex] = MetricPattern30(client, 'yearindex_decadeindex') + self.first_monthindex: MetricPattern30[MonthIndex] = MetricPattern30(client, 'yearindex_first_monthindex') + self.identity: MetricPattern30[YearIndex] = MetricPattern30(client, 'yearindex') + self.monthindex_count: MetricPattern30[StoredU64] = MetricPattern30(client, 'yearindex_monthindex_count') class CatalogTree_Inputs: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.count: CountPattern2[StoredU64] = CountPattern2(client, "input_count") - self.first_txinindex: MetricPattern11[TxInIndex] = MetricPattern11( - client, "first_txinindex" - ) - self.outpoint: MetricPattern12[OutPoint] = MetricPattern12(client, "outpoint") - self.outputtype: MetricPattern12[OutputType] = MetricPattern12( - client, "outputtype" - ) + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.count: CountPattern2[StoredU64] = CountPattern2(client, 'input_count') + self.first_txinindex: MetricPattern11[TxInIndex] = MetricPattern11(client, 'first_txinindex') + self.outpoint: MetricPattern12[OutPoint] = MetricPattern12(client, 'outpoint') + self.outputtype: MetricPattern12[OutputType] = MetricPattern12(client, 'outputtype') self.spent: CatalogTree_Inputs_Spent = CatalogTree_Inputs_Spent(client) - self.txindex: MetricPattern12[TxIndex] = MetricPattern12(client, "txindex") - self.typeindex: MetricPattern12[TypeIndex] = MetricPattern12( - client, "typeindex" - ) - self.witness_size: MetricPattern12[StoredU32] = MetricPattern12( - client, "witness_size" - ) - + self.txindex: MetricPattern12[TxIndex] = MetricPattern12(client, 'txindex') + self.typeindex: MetricPattern12[TypeIndex] = MetricPattern12(client, 'typeindex') + self.witness_size: MetricPattern12[StoredU32] = MetricPattern12(client, 'witness_size') class CatalogTree_Inputs_Spent: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.txoutindex: MetricPattern12[TxOutIndex] = MetricPattern12( - client, "txoutindex" - ) - self.value: MetricPattern12[Sats] = MetricPattern12(client, "value") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.txoutindex: MetricPattern12[TxOutIndex] = MetricPattern12(client, 'txoutindex') + self.value: MetricPattern12[Sats] = MetricPattern12(client, 'value') class CatalogTree_Market: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): + def __init__(self, client: BrkClientBase, base_path: str = ''): self.ath: CatalogTree_Market_Ath = CatalogTree_Market_Ath(client) self.dca: CatalogTree_Market_Dca = CatalogTree_Market_Dca(client) - self.indicators: CatalogTree_Market_Indicators = CatalogTree_Market_Indicators( - client - ) + self.indicators: CatalogTree_Market_Indicators = CatalogTree_Market_Indicators(client) self.lookback: CatalogTree_Market_Lookback = CatalogTree_Market_Lookback(client) - self.moving_average: CatalogTree_Market_MovingAverage = ( - CatalogTree_Market_MovingAverage(client) - ) + self.moving_average: CatalogTree_Market_MovingAverage = CatalogTree_Market_MovingAverage(client) self.range: CatalogTree_Market_Range = CatalogTree_Market_Range(client) self.returns: CatalogTree_Market_Returns = CatalogTree_Market_Returns(client) - self.volatility: CatalogTree_Market_Volatility = CatalogTree_Market_Volatility( - client - ) - + self.volatility: CatalogTree_Market_Volatility = CatalogTree_Market_Volatility(client) class CatalogTree_Market_Ath: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.days_since_price_ath: MetricPattern4[StoredU16] = MetricPattern4( - client, "days_since_price_ath" - ) - self.max_days_between_price_aths: MetricPattern4[StoredU16] = MetricPattern4( - client, "max_days_between_price_aths" - ) - self.max_years_between_price_aths: MetricPattern4[StoredF32] = MetricPattern4( - client, "max_years_between_price_aths" - ) - self.price_ath: MetricPattern1[Dollars] = MetricPattern1(client, "price_ath") - self.price_drawdown: MetricPattern3[StoredF32] = MetricPattern3( - client, "price_drawdown" - ) - self.years_since_price_ath: MetricPattern4[StoredF32] = MetricPattern4( - client, "years_since_price_ath" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.days_since_price_ath: MetricPattern4[StoredU16] = MetricPattern4(client, 'days_since_price_ath') + self.max_days_between_price_aths: MetricPattern4[StoredU16] = MetricPattern4(client, 'max_days_between_price_aths') + self.max_years_between_price_aths: MetricPattern4[StoredF32] = MetricPattern4(client, 'max_years_between_price_aths') + self.price_ath: MetricPattern1[Dollars] = MetricPattern1(client, 'price_ath') + self.price_drawdown: MetricPattern3[StoredF32] = MetricPattern3(client, 'price_drawdown') + self.years_since_price_ath: MetricPattern4[StoredF32] = MetricPattern4(client, 'years_since_price_ath') class CatalogTree_Market_Dca: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.class_average_price: CatalogTree_Market_Dca_ClassAveragePrice = ( - CatalogTree_Market_Dca_ClassAveragePrice(client) - ) - self.class_returns: CatalogTree_Market_Dca_ClassReturns = ( - CatalogTree_Market_Dca_ClassReturns(client) - ) - self.class_stack: CatalogTree_Market_Dca_ClassStack = ( - CatalogTree_Market_Dca_ClassStack(client) - ) - self.period_average_price: PeriodAveragePricePattern[Dollars] = ( - PeriodAveragePricePattern(client, "dca_average_price") - ) - self.period_cagr: PeriodCagrPattern = PeriodCagrPattern(client, "dca_cagr") - self.period_lump_sum_stack: PeriodLumpSumStackPattern = ( - PeriodLumpSumStackPattern(client, "lump_sum_stack") - ) - self.period_returns: PeriodAveragePricePattern[StoredF32] = ( - PeriodAveragePricePattern(client, "dca_returns") - ) - self.period_stack: PeriodLumpSumStackPattern = PeriodLumpSumStackPattern( - client, "dca_stack" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.class_average_price: CatalogTree_Market_Dca_ClassAveragePrice = CatalogTree_Market_Dca_ClassAveragePrice(client) + self.class_returns: CatalogTree_Market_Dca_ClassReturns = CatalogTree_Market_Dca_ClassReturns(client) + self.class_stack: CatalogTree_Market_Dca_ClassStack = CatalogTree_Market_Dca_ClassStack(client) + self.period_average_price: PeriodAveragePricePattern[Dollars] = PeriodAveragePricePattern(client, 'dca_average_price') + self.period_cagr: PeriodCagrPattern = PeriodCagrPattern(client, 'dca_cagr') + self.period_lump_sum_stack: PeriodLumpSumStackPattern = PeriodLumpSumStackPattern(client, 'lump_sum_stack_btc') + self.period_returns: PeriodAveragePricePattern[StoredF32] = PeriodAveragePricePattern(client, 'dca_returns') + self.period_stack: PeriodLumpSumStackPattern = PeriodLumpSumStackPattern(client, 'dca_stack_btc') class CatalogTree_Market_Dca_ClassAveragePrice: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._2015: MetricPattern4[Dollars] = MetricPattern4( - client, "dca_class_2015_average_price" - ) - self._2016: MetricPattern4[Dollars] = MetricPattern4( - client, "dca_class_2016_average_price" - ) - self._2017: MetricPattern4[Dollars] = MetricPattern4( - client, "dca_class_2017_average_price" - ) - self._2018: MetricPattern4[Dollars] = MetricPattern4( - client, "dca_class_2018_average_price" - ) - self._2019: MetricPattern4[Dollars] = MetricPattern4( - client, "dca_class_2019_average_price" - ) - self._2020: MetricPattern4[Dollars] = MetricPattern4( - client, "dca_class_2020_average_price" - ) - self._2021: MetricPattern4[Dollars] = MetricPattern4( - client, "dca_class_2021_average_price" - ) - self._2022: MetricPattern4[Dollars] = MetricPattern4( - client, "dca_class_2022_average_price" - ) - self._2023: MetricPattern4[Dollars] = MetricPattern4( - client, "dca_class_2023_average_price" - ) - self._2024: MetricPattern4[Dollars] = MetricPattern4( - client, "dca_class_2024_average_price" - ) - self._2025: MetricPattern4[Dollars] = MetricPattern4( - client, "dca_class_2025_average_price" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._2015: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2015_average_price') + self._2016: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2016_average_price') + self._2017: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2017_average_price') + self._2018: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2018_average_price') + self._2019: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2019_average_price') + self._2020: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2020_average_price') + self._2021: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2021_average_price') + self._2022: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2022_average_price') + self._2023: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2023_average_price') + self._2024: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2024_average_price') + self._2025: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2025_average_price') class CatalogTree_Market_Dca_ClassReturns: """Catalog 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" - ) - + 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') class CatalogTree_Market_Dca_ClassStack: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._2015: _2015Pattern = _2015Pattern(client, "dca_class_2015_stack") - self._2016: _2015Pattern = _2015Pattern(client, "dca_class_2016_stack") - self._2017: _2015Pattern = _2015Pattern(client, "dca_class_2017_stack") - self._2018: _2015Pattern = _2015Pattern(client, "dca_class_2018_stack") - self._2019: _2015Pattern = _2015Pattern(client, "dca_class_2019_stack") - self._2020: _2015Pattern = _2015Pattern(client, "dca_class_2020_stack") - self._2021: _2015Pattern = _2015Pattern(client, "dca_class_2021_stack") - self._2022: _2015Pattern = _2015Pattern(client, "dca_class_2022_stack") - self._2023: _2015Pattern = _2015Pattern(client, "dca_class_2023_stack") - self._2024: _2015Pattern = _2015Pattern(client, "dca_class_2024_stack") - self._2025: _2015Pattern = _2015Pattern(client, "dca_class_2025_stack") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._2015: _2015Pattern = _2015Pattern(client, 'dca_class_2015_stack') + self._2016: _2015Pattern = _2015Pattern(client, 'dca_class_2016_stack') + self._2017: _2015Pattern = _2015Pattern(client, 'dca_class_2017_stack') + self._2018: _2015Pattern = _2015Pattern(client, 'dca_class_2018_stack') + self._2019: _2015Pattern = _2015Pattern(client, 'dca_class_2019_stack') + self._2020: _2015Pattern = _2015Pattern(client, 'dca_class_2020_stack') + self._2021: _2015Pattern = _2015Pattern(client, 'dca_class_2021_stack') + self._2022: _2015Pattern = _2015Pattern(client, 'dca_class_2022_stack') + self._2023: _2015Pattern = _2015Pattern(client, 'dca_class_2023_stack') + self._2024: _2015Pattern = _2015Pattern(client, 'dca_class_2024_stack') + self._2025: _2015Pattern = _2015Pattern(client, 'dca_class_2025_stack') class CatalogTree_Market_Indicators: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.gini: MetricPattern6[StoredF32] = MetricPattern6(client, "gini") - self.macd_histogram: MetricPattern6[StoredF32] = MetricPattern6( - client, "macd_histogram" - ) - self.macd_line: MetricPattern6[StoredF32] = MetricPattern6(client, "macd_line") - self.macd_signal: MetricPattern6[StoredF32] = MetricPattern6( - client, "macd_signal" - ) - self.nvt: MetricPattern4[StoredF32] = MetricPattern4(client, "nvt") - self.pi_cycle: MetricPattern6[StoredF32] = MetricPattern6(client, "pi_cycle") - self.puell_multiple: MetricPattern4[StoredF32] = MetricPattern4( - client, "puell_multiple" - ) - self.rsi_14d: MetricPattern6[StoredF32] = MetricPattern6(client, "rsi_14d") - self.rsi_14d_max: MetricPattern6[StoredF32] = MetricPattern6( - client, "rsi_14d_max" - ) - self.rsi_14d_min: MetricPattern6[StoredF32] = MetricPattern6( - client, "rsi_14d_min" - ) - self.rsi_average_gain_14d: MetricPattern6[StoredF32] = MetricPattern6( - client, "rsi_average_gain_14d" - ) - self.rsi_average_loss_14d: MetricPattern6[StoredF32] = MetricPattern6( - client, "rsi_average_loss_14d" - ) - self.rsi_gains: MetricPattern6[StoredF32] = MetricPattern6(client, "rsi_gains") - self.rsi_losses: MetricPattern6[StoredF32] = MetricPattern6( - client, "rsi_losses" - ) - self.stoch_d: MetricPattern6[StoredF32] = MetricPattern6(client, "stoch_d") - self.stoch_k: MetricPattern6[StoredF32] = MetricPattern6(client, "stoch_k") - self.stoch_rsi: MetricPattern6[StoredF32] = MetricPattern6(client, "stoch_rsi") - self.stoch_rsi_d: MetricPattern6[StoredF32] = MetricPattern6( - client, "stoch_rsi_d" - ) - self.stoch_rsi_k: MetricPattern6[StoredF32] = MetricPattern6( - client, "stoch_rsi_k" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.gini: MetricPattern6[StoredF32] = MetricPattern6(client, 'gini') + self.macd_histogram: MetricPattern6[StoredF32] = MetricPattern6(client, 'macd_histogram') + self.macd_line: MetricPattern6[StoredF32] = MetricPattern6(client, 'macd_line') + self.macd_signal: MetricPattern6[StoredF32] = MetricPattern6(client, 'macd_signal') + self.nvt: MetricPattern4[StoredF32] = MetricPattern4(client, 'nvt') + self.pi_cycle: MetricPattern6[StoredF32] = MetricPattern6(client, 'pi_cycle') + self.puell_multiple: MetricPattern4[StoredF32] = MetricPattern4(client, 'puell_multiple') + self.rsi_14d: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_14d') + self.rsi_14d_max: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_14d_max') + self.rsi_14d_min: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_14d_min') + self.rsi_average_gain_14d: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_average_gain_14d') + self.rsi_average_loss_14d: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_average_loss_14d') + self.rsi_gains: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_gains') + self.rsi_losses: MetricPattern6[StoredF32] = MetricPattern6(client, 'rsi_losses') + self.stoch_d: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_d') + self.stoch_k: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_k') + self.stoch_rsi: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_rsi') + self.stoch_rsi_d: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_rsi_d') + self.stoch_rsi_k: MetricPattern6[StoredF32] = MetricPattern6(client, 'stoch_rsi_k') class CatalogTree_Market_Lookback: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.price_ago: CatalogTree_Market_Lookback_PriceAgo = ( - CatalogTree_Market_Lookback_PriceAgo(client) - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.price_ago: CatalogTree_Market_Lookback_PriceAgo = CatalogTree_Market_Lookback_PriceAgo(client) class CatalogTree_Market_Lookback_PriceAgo: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y: MetricPattern4[Dollars] = MetricPattern4(client, "price_10y_ago") - self._1d: MetricPattern4[Dollars] = MetricPattern4(client, "price_1d_ago") - self._1m: MetricPattern4[Dollars] = MetricPattern4(client, "price_1m_ago") - self._1w: MetricPattern4[Dollars] = MetricPattern4(client, "price_1w_ago") - self._1y: MetricPattern4[Dollars] = MetricPattern4(client, "price_1y_ago") - self._2y: MetricPattern4[Dollars] = MetricPattern4(client, "price_2y_ago") - self._3m: MetricPattern4[Dollars] = MetricPattern4(client, "price_3m_ago") - self._3y: MetricPattern4[Dollars] = MetricPattern4(client, "price_3y_ago") - self._4y: MetricPattern4[Dollars] = MetricPattern4(client, "price_4y_ago") - self._5y: MetricPattern4[Dollars] = MetricPattern4(client, "price_5y_ago") - self._6m: MetricPattern4[Dollars] = MetricPattern4(client, "price_6m_ago") - self._6y: MetricPattern4[Dollars] = MetricPattern4(client, "price_6y_ago") - self._8y: MetricPattern4[Dollars] = MetricPattern4(client, "price_8y_ago") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._10y: MetricPattern4[Dollars] = MetricPattern4(client, 'price_10y_ago') + self._1d: MetricPattern4[Dollars] = MetricPattern4(client, 'price_1d_ago') + self._1m: MetricPattern4[Dollars] = MetricPattern4(client, 'price_1m_ago') + self._1w: MetricPattern4[Dollars] = MetricPattern4(client, 'price_1w_ago') + self._1y: MetricPattern4[Dollars] = MetricPattern4(client, 'price_1y_ago') + self._2y: MetricPattern4[Dollars] = MetricPattern4(client, 'price_2y_ago') + self._3m: MetricPattern4[Dollars] = MetricPattern4(client, 'price_3m_ago') + self._3y: MetricPattern4[Dollars] = MetricPattern4(client, 'price_3y_ago') + self._4y: MetricPattern4[Dollars] = MetricPattern4(client, 'price_4y_ago') + self._5y: MetricPattern4[Dollars] = MetricPattern4(client, 'price_5y_ago') + self._6m: MetricPattern4[Dollars] = MetricPattern4(client, 'price_6m_ago') + self._6y: MetricPattern4[Dollars] = MetricPattern4(client, 'price_6y_ago') + self._8y: MetricPattern4[Dollars] = MetricPattern4(client, 'price_8y_ago') class CatalogTree_Market_MovingAverage: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.price_111d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_111d_sma" - ) - self.price_12d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_12d_ema" - ) - self.price_13d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_13d_ema" - ) - self.price_13d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_13d_sma" - ) - self.price_144d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_144d_ema" - ) - self.price_144d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_144d_sma" - ) - self.price_1m_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1m_ema" - ) - self.price_1m_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1m_sma" - ) - self.price_1w_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1w_ema" - ) - self.price_1w_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1w_sma" - ) - self.price_1y_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1y_ema" - ) - self.price_1y_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_1y_sma" - ) - self.price_200d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_200d_ema" - ) - self.price_200d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_200d_sma" - ) - self.price_200d_sma_x0_8: 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: 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: Price111dSmaPattern = Price111dSmaPattern( - client, "price_4y_ema" - ) - self.price_4y_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_4y_sma" - ) - self.price_55d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_55d_ema" - ) - self.price_55d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_55d_sma" - ) - self.price_89d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_89d_ema" - ) - self.price_89d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_89d_sma" - ) - self.price_8d_ema: Price111dSmaPattern = Price111dSmaPattern( - client, "price_8d_ema" - ) - self.price_8d_sma: Price111dSmaPattern = Price111dSmaPattern( - client, "price_8d_sma" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.price_111d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_111d_sma') + self.price_12d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_12d_ema') + self.price_13d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_13d_ema') + self.price_13d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_13d_sma') + self.price_144d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_144d_ema') + self.price_144d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_144d_sma') + self.price_1m_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1m_ema') + self.price_1m_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1m_sma') + self.price_1w_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1w_ema') + self.price_1w_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1w_sma') + self.price_1y_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1y_ema') + self.price_1y_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_1y_sma') + self.price_200d_ema: Price111dSmaPattern = Price111dSmaPattern(client, 'price_200d_ema') + self.price_200d_sma: Price111dSmaPattern = Price111dSmaPattern(client, 'price_200d_sma') + self.price_200d_sma_x0_8: 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: 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: 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 CatalogTree_Market_Range: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.price_1m_max: MetricPattern4[Dollars] = MetricPattern4( - client, "price_1m_max" - ) - self.price_1m_min: MetricPattern4[Dollars] = MetricPattern4( - client, "price_1m_min" - ) - self.price_1w_max: MetricPattern4[Dollars] = MetricPattern4( - client, "price_1w_max" - ) - self.price_1w_min: MetricPattern4[Dollars] = MetricPattern4( - client, "price_1w_min" - ) - self.price_1y_max: MetricPattern4[Dollars] = MetricPattern4( - client, "price_1y_max" - ) - self.price_1y_min: MetricPattern4[Dollars] = MetricPattern4( - client, "price_1y_min" - ) - self.price_2w_choppiness_index: MetricPattern4[StoredF32] = MetricPattern4( - client, "price_2w_choppiness_index" - ) - self.price_2w_max: MetricPattern4[Dollars] = MetricPattern4( - client, "price_2w_max" - ) - self.price_2w_min: MetricPattern4[Dollars] = MetricPattern4( - client, "price_2w_min" - ) - self.price_true_range: MetricPattern6[StoredF32] = MetricPattern6( - client, "price_true_range" - ) - self.price_true_range_2w_sum: MetricPattern6[StoredF32] = MetricPattern6( - client, "price_true_range_2w_sum" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.price_1m_max: MetricPattern4[Dollars] = MetricPattern4(client, 'price_1m_max') + self.price_1m_min: MetricPattern4[Dollars] = MetricPattern4(client, 'price_1m_min') + self.price_1w_max: MetricPattern4[Dollars] = MetricPattern4(client, 'price_1w_max') + self.price_1w_min: MetricPattern4[Dollars] = MetricPattern4(client, 'price_1w_min') + self.price_1y_max: MetricPattern4[Dollars] = MetricPattern4(client, 'price_1y_max') + self.price_1y_min: MetricPattern4[Dollars] = MetricPattern4(client, 'price_1y_min') + self.price_2w_choppiness_index: MetricPattern4[StoredF32] = MetricPattern4(client, 'price_2w_choppiness_index') + self.price_2w_max: MetricPattern4[Dollars] = MetricPattern4(client, 'price_2w_max') + self.price_2w_min: MetricPattern4[Dollars] = MetricPattern4(client, 'price_2w_min') + self.price_true_range: MetricPattern6[StoredF32] = MetricPattern6(client, 'price_true_range') + self.price_true_range_2w_sum: MetricPattern6[StoredF32] = MetricPattern6(client, 'price_true_range_2w_sum') class CatalogTree_Market_Returns: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._1d_returns_1m_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "1d_returns_1m_sd" - ) - self._1d_returns_1w_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "1d_returns_1w_sd" - ) - self._1d_returns_1y_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "1d_returns_1y_sd" - ) - self.cagr: PeriodCagrPattern = PeriodCagrPattern(client, "cagr") - self.downside_1m_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "downside_1m_sd" - ) - self.downside_1w_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "downside_1w_sd" - ) - self.downside_1y_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern( - client, "downside_1y_sd" - ) - self.downside_returns: MetricPattern6[StoredF32] = MetricPattern6( - client, "downside_returns" - ) - self.price_returns: CatalogTree_Market_Returns_PriceReturns = ( - CatalogTree_Market_Returns_PriceReturns(client) - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._1d_returns_1m_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, '1d_returns_1m_sd') + self._1d_returns_1w_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, '1d_returns_1w_sd') + self._1d_returns_1y_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, '1d_returns_1y_sd') + self.cagr: PeriodCagrPattern = PeriodCagrPattern(client, 'cagr') + self.downside_1m_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, 'downside_1m_sd') + self.downside_1w_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, 'downside_1w_sd') + self.downside_1y_sd: _1dReturns1mSdPattern = _1dReturns1mSdPattern(client, 'downside_1y_sd') + self.downside_returns: MetricPattern6[StoredF32] = MetricPattern6(client, 'downside_returns') + self.price_returns: CatalogTree_Market_Returns_PriceReturns = CatalogTree_Market_Returns_PriceReturns(client) class CatalogTree_Market_Returns_PriceReturns: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self._10y: MetricPattern4[StoredF32] = MetricPattern4( - client, "10y_price_returns" - ) - self._1d: MetricPattern4[StoredF32] = MetricPattern4(client, "1d_price_returns") - self._1m: MetricPattern4[StoredF32] = MetricPattern4(client, "1m_price_returns") - self._1w: MetricPattern4[StoredF32] = MetricPattern4(client, "1w_price_returns") - self._1y: MetricPattern4[StoredF32] = MetricPattern4(client, "1y_price_returns") - self._2y: MetricPattern4[StoredF32] = MetricPattern4(client, "2y_price_returns") - self._3m: MetricPattern4[StoredF32] = MetricPattern4(client, "3m_price_returns") - self._3y: MetricPattern4[StoredF32] = MetricPattern4(client, "3y_price_returns") - self._4y: MetricPattern4[StoredF32] = MetricPattern4(client, "4y_price_returns") - self._5y: MetricPattern4[StoredF32] = MetricPattern4(client, "5y_price_returns") - self._6m: MetricPattern4[StoredF32] = MetricPattern4(client, "6m_price_returns") - self._6y: MetricPattern4[StoredF32] = MetricPattern4(client, "6y_price_returns") - self._8y: MetricPattern4[StoredF32] = MetricPattern4(client, "8y_price_returns") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self._10y: MetricPattern4[StoredF32] = MetricPattern4(client, '10y_price_returns') + self._1d: MetricPattern4[StoredF32] = MetricPattern4(client, '1d_price_returns') + self._1m: MetricPattern4[StoredF32] = MetricPattern4(client, '1m_price_returns') + self._1w: MetricPattern4[StoredF32] = MetricPattern4(client, '1w_price_returns') + self._1y: MetricPattern4[StoredF32] = MetricPattern4(client, '1y_price_returns') + self._2y: MetricPattern4[StoredF32] = MetricPattern4(client, '2y_price_returns') + self._3m: MetricPattern4[StoredF32] = MetricPattern4(client, '3m_price_returns') + self._3y: MetricPattern4[StoredF32] = MetricPattern4(client, '3y_price_returns') + self._4y: MetricPattern4[StoredF32] = MetricPattern4(client, '4y_price_returns') + self._5y: MetricPattern4[StoredF32] = MetricPattern4(client, '5y_price_returns') + self._6m: MetricPattern4[StoredF32] = MetricPattern4(client, '6m_price_returns') + self._6y: MetricPattern4[StoredF32] = MetricPattern4(client, '6y_price_returns') + self._8y: MetricPattern4[StoredF32] = MetricPattern4(client, '8y_price_returns') class CatalogTree_Market_Volatility: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.price_1m_volatility: MetricPattern4[StoredF32] = MetricPattern4( - client, "price_1m_volatility" - ) - self.price_1w_volatility: MetricPattern4[StoredF32] = MetricPattern4( - client, "price_1w_volatility" - ) - self.price_1y_volatility: MetricPattern4[StoredF32] = MetricPattern4( - client, "price_1y_volatility" - ) - self.sharpe_1m: MetricPattern6[StoredF32] = MetricPattern6(client, "sharpe_1m") - self.sharpe_1w: MetricPattern6[StoredF32] = MetricPattern6(client, "sharpe_1w") - self.sharpe_1y: MetricPattern6[StoredF32] = MetricPattern6(client, "sharpe_1y") - self.sortino_1m: MetricPattern6[StoredF32] = MetricPattern6( - client, "sortino_1m" - ) - self.sortino_1w: MetricPattern6[StoredF32] = MetricPattern6( - client, "sortino_1w" - ) - self.sortino_1y: MetricPattern6[StoredF32] = MetricPattern6( - client, "sortino_1y" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.price_1m_volatility: MetricPattern4[StoredF32] = MetricPattern4(client, 'price_1m_volatility') + self.price_1w_volatility: MetricPattern4[StoredF32] = MetricPattern4(client, 'price_1w_volatility') + self.price_1y_volatility: MetricPattern4[StoredF32] = MetricPattern4(client, 'price_1y_volatility') + self.sharpe_1m: MetricPattern6[StoredF32] = MetricPattern6(client, 'sharpe_1m') + self.sharpe_1w: MetricPattern6[StoredF32] = MetricPattern6(client, 'sharpe_1w') + self.sharpe_1y: MetricPattern6[StoredF32] = MetricPattern6(client, 'sharpe_1y') + self.sortino_1m: MetricPattern6[StoredF32] = MetricPattern6(client, 'sortino_1m') + self.sortino_1w: MetricPattern6[StoredF32] = MetricPattern6(client, 'sortino_1w') + self.sortino_1y: MetricPattern6[StoredF32] = MetricPattern6(client, 'sortino_1y') class CatalogTree_Outputs: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): + def __init__(self, client: BrkClientBase, base_path: str = ''): self.count: CatalogTree_Outputs_Count = CatalogTree_Outputs_Count(client) - self.first_txoutindex: MetricPattern11[TxOutIndex] = MetricPattern11( - client, "first_txoutindex" - ) - self.outputtype: MetricPattern15[OutputType] = MetricPattern15( - client, "outputtype" - ) + self.first_txoutindex: MetricPattern11[TxOutIndex] = MetricPattern11(client, 'first_txoutindex') + self.outputtype: MetricPattern15[OutputType] = MetricPattern15(client, 'outputtype') self.spent: CatalogTree_Outputs_Spent = CatalogTree_Outputs_Spent(client) - self.txindex: MetricPattern15[TxIndex] = MetricPattern15(client, "txindex") - self.typeindex: MetricPattern15[TypeIndex] = MetricPattern15( - client, "typeindex" - ) - self.value: MetricPattern15[Sats] = MetricPattern15(client, "value") - + self.txindex: MetricPattern15[TxIndex] = MetricPattern15(client, 'txindex') + self.typeindex: MetricPattern15[TypeIndex] = MetricPattern15(client, 'typeindex') + self.value: MetricPattern15[Sats] = MetricPattern15(client, 'value') class CatalogTree_Outputs_Count: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.total_count: CountPattern2[StoredU64] = CountPattern2( - client, "output_count" - ) - self.utxo_count: MetricPattern1[StoredU64] = MetricPattern1( - client, "exact_utxo_count" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.total_count: CountPattern2[StoredU64] = CountPattern2(client, 'output_count') + self.utxo_count: MetricPattern1[StoredU64] = MetricPattern1(client, 'exact_utxo_count') class CatalogTree_Outputs_Spent: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.txinindex: MetricPattern15[TxInIndex] = MetricPattern15( - client, "txinindex" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.txinindex: MetricPattern15[TxInIndex] = MetricPattern15(client, 'txinindex') class CatalogTree_Pools: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.height_to_pool: MetricPattern11[PoolSlug] = MetricPattern11(client, "pool") + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.height_to_pool: MetricPattern11[PoolSlug] = MetricPattern11(client, 'pool') self.vecs: CatalogTree_Pools_Vecs = CatalogTree_Pools_Vecs(client) - class CatalogTree_Pools_Vecs: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.aaopool: AaopoolPattern = AaopoolPattern(client, "aaopool") - self.antpool: AaopoolPattern = AaopoolPattern(client, "antpool") - self.arkpool: AaopoolPattern = AaopoolPattern(client, "arkpool") - self.asicminer: AaopoolPattern = AaopoolPattern(client, "asicminer") - self.axbt: AaopoolPattern = AaopoolPattern(client, "axbt") - self.batpool: AaopoolPattern = AaopoolPattern(client, "batpool") - self.bcmonster: AaopoolPattern = AaopoolPattern(client, "bcmonster") - self.bcpoolio: AaopoolPattern = AaopoolPattern(client, "bcpoolio") - self.binancepool: AaopoolPattern = AaopoolPattern(client, "binancepool") - self.bitalo: AaopoolPattern = AaopoolPattern(client, "bitalo") - self.bitclub: AaopoolPattern = AaopoolPattern(client, "bitclub") - self.bitcoinaffiliatenetwork: AaopoolPattern = AaopoolPattern( - client, "bitcoinaffiliatenetwork" - ) - self.bitcoincom: AaopoolPattern = AaopoolPattern(client, "bitcoincom") - self.bitcoinindia: AaopoolPattern = AaopoolPattern(client, "bitcoinindia") - self.bitcoinrussia: AaopoolPattern = AaopoolPattern(client, "bitcoinrussia") - self.bitcoinukraine: AaopoolPattern = AaopoolPattern(client, "bitcoinukraine") - self.bitfarms: AaopoolPattern = AaopoolPattern(client, "bitfarms") - self.bitfufupool: AaopoolPattern = AaopoolPattern(client, "bitfufupool") - self.bitfury: AaopoolPattern = AaopoolPattern(client, "bitfury") - self.bitminter: AaopoolPattern = AaopoolPattern(client, "bitminter") - self.bitparking: AaopoolPattern = AaopoolPattern(client, "bitparking") - self.bitsolo: AaopoolPattern = AaopoolPattern(client, "bitsolo") - self.bixin: AaopoolPattern = AaopoolPattern(client, "bixin") - self.blockfills: AaopoolPattern = AaopoolPattern(client, "blockfills") - self.braiinspool: AaopoolPattern = AaopoolPattern(client, "braiinspool") - self.bravomining: AaopoolPattern = AaopoolPattern(client, "bravomining") - self.btcc: AaopoolPattern = AaopoolPattern(client, "btcc") - self.btccom: AaopoolPattern = AaopoolPattern(client, "btccom") - self.btcdig: AaopoolPattern = AaopoolPattern(client, "btcdig") - self.btcguild: AaopoolPattern = AaopoolPattern(client, "btcguild") - self.btclab: AaopoolPattern = AaopoolPattern(client, "btclab") - self.btcmp: AaopoolPattern = AaopoolPattern(client, "btcmp") - self.btcnuggets: AaopoolPattern = AaopoolPattern(client, "btcnuggets") - self.btcpoolparty: AaopoolPattern = AaopoolPattern(client, "btcpoolparty") - self.btcserv: AaopoolPattern = AaopoolPattern(client, "btcserv") - self.btctop: AaopoolPattern = AaopoolPattern(client, "btctop") - self.btpool: AaopoolPattern = AaopoolPattern(client, "btpool") - self.bwpool: AaopoolPattern = AaopoolPattern(client, "bwpool") - self.bytepool: AaopoolPattern = AaopoolPattern(client, "bytepool") - self.canoe: AaopoolPattern = AaopoolPattern(client, "canoe") - self.canoepool: AaopoolPattern = AaopoolPattern(client, "canoepool") - self.carbonnegative: AaopoolPattern = AaopoolPattern(client, "carbonnegative") - self.ckpool: AaopoolPattern = AaopoolPattern(client, "ckpool") - self.cloudhashing: AaopoolPattern = AaopoolPattern(client, "cloudhashing") - self.coinlab: AaopoolPattern = AaopoolPattern(client, "coinlab") - self.cointerra: AaopoolPattern = AaopoolPattern(client, "cointerra") - self.connectbtc: AaopoolPattern = AaopoolPattern(client, "connectbtc") - self.dcex: AaopoolPattern = AaopoolPattern(client, "dcex") - self.dcexploration: AaopoolPattern = AaopoolPattern(client, "dcexploration") - self.digitalbtc: AaopoolPattern = AaopoolPattern(client, "digitalbtc") - self.digitalxmintsy: AaopoolPattern = AaopoolPattern(client, "digitalxmintsy") - self.dpool: AaopoolPattern = AaopoolPattern(client, "dpool") - self.eclipsemc: AaopoolPattern = AaopoolPattern(client, "eclipsemc") - self.eightbaochi: AaopoolPattern = AaopoolPattern(client, "eightbaochi") - self.ekanembtc: AaopoolPattern = AaopoolPattern(client, "ekanembtc") - self.eligius: AaopoolPattern = AaopoolPattern(client, "eligius") - self.emcdpool: AaopoolPattern = AaopoolPattern(client, "emcdpool") - self.entrustcharitypool: AaopoolPattern = AaopoolPattern( - client, "entrustcharitypool" - ) - self.eobot: AaopoolPattern = AaopoolPattern(client, "eobot") - self.exxbw: AaopoolPattern = AaopoolPattern(client, "exxbw") - self.f2pool: AaopoolPattern = AaopoolPattern(client, "f2pool") - self.fiftyeightcoin: AaopoolPattern = AaopoolPattern(client, "fiftyeightcoin") - self.foundryusa: AaopoolPattern = AaopoolPattern(client, "foundryusa") - self.futurebitapollosolo: AaopoolPattern = AaopoolPattern( - client, "futurebitapollosolo" - ) - self.gbminers: AaopoolPattern = AaopoolPattern(client, "gbminers") - self.ghashio: AaopoolPattern = AaopoolPattern(client, "ghashio") - self.givemecoins: AaopoolPattern = AaopoolPattern(client, "givemecoins") - self.gogreenlight: AaopoolPattern = AaopoolPattern(client, "gogreenlight") - self.haominer: AaopoolPattern = AaopoolPattern(client, "haominer") - self.haozhuzhu: AaopoolPattern = AaopoolPattern(client, "haozhuzhu") - self.hashbx: AaopoolPattern = AaopoolPattern(client, "hashbx") - self.hashpool: AaopoolPattern = AaopoolPattern(client, "hashpool") - self.helix: AaopoolPattern = AaopoolPattern(client, "helix") - self.hhtt: AaopoolPattern = AaopoolPattern(client, "hhtt") - self.hotpool: AaopoolPattern = AaopoolPattern(client, "hotpool") - self.hummerpool: AaopoolPattern = AaopoolPattern(client, "hummerpool") - self.huobipool: AaopoolPattern = AaopoolPattern(client, "huobipool") - self.innopolistech: AaopoolPattern = AaopoolPattern(client, "innopolistech") - self.kanopool: AaopoolPattern = AaopoolPattern(client, "kanopool") - self.kncminer: AaopoolPattern = AaopoolPattern(client, "kncminer") - self.kucoinpool: AaopoolPattern = AaopoolPattern(client, "kucoinpool") - self.lubiancom: AaopoolPattern = AaopoolPattern(client, "lubiancom") - self.luckypool: AaopoolPattern = AaopoolPattern(client, "luckypool") - self.luxor: AaopoolPattern = AaopoolPattern(client, "luxor") - self.marapool: AaopoolPattern = AaopoolPattern(client, "marapool") - self.maxbtc: AaopoolPattern = AaopoolPattern(client, "maxbtc") - self.maxipool: AaopoolPattern = AaopoolPattern(client, "maxipool") - self.megabigpower: AaopoolPattern = AaopoolPattern(client, "megabigpower") - self.minerium: AaopoolPattern = AaopoolPattern(client, "minerium") - self.miningcity: AaopoolPattern = AaopoolPattern(client, "miningcity") - self.miningdutch: AaopoolPattern = AaopoolPattern(client, "miningdutch") - self.miningkings: AaopoolPattern = AaopoolPattern(client, "miningkings") - self.miningsquared: AaopoolPattern = AaopoolPattern(client, "miningsquared") - self.mmpool: AaopoolPattern = AaopoolPattern(client, "mmpool") - self.mtred: AaopoolPattern = AaopoolPattern(client, "mtred") - self.multicoinco: AaopoolPattern = AaopoolPattern(client, "multicoinco") - self.multipool: AaopoolPattern = AaopoolPattern(client, "multipool") - self.mybtccoinpool: AaopoolPattern = AaopoolPattern(client, "mybtccoinpool") - self.neopool: AaopoolPattern = AaopoolPattern(client, "neopool") - self.nexious: AaopoolPattern = AaopoolPattern(client, "nexious") - self.nicehash: AaopoolPattern = AaopoolPattern(client, "nicehash") - self.nmcbit: AaopoolPattern = AaopoolPattern(client, "nmcbit") - self.novablock: AaopoolPattern = AaopoolPattern(client, "novablock") - self.ocean: AaopoolPattern = AaopoolPattern(client, "ocean") - self.okexpool: AaopoolPattern = AaopoolPattern(client, "okexpool") - self.okkong: AaopoolPattern = AaopoolPattern(client, "okkong") - self.okminer: AaopoolPattern = AaopoolPattern(client, "okminer") - self.okpooltop: AaopoolPattern = AaopoolPattern(client, "okpooltop") - self.onehash: AaopoolPattern = AaopoolPattern(client, "onehash") - self.onem1x: AaopoolPattern = AaopoolPattern(client, "onem1x") - self.onethash: AaopoolPattern = AaopoolPattern(client, "onethash") - self.ozcoin: AaopoolPattern = AaopoolPattern(client, "ozcoin") - self.parasite: AaopoolPattern = AaopoolPattern(client, "parasite") - self.patels: AaopoolPattern = AaopoolPattern(client, "patels") - self.pegapool: AaopoolPattern = AaopoolPattern(client, "pegapool") - self.phashio: AaopoolPattern = AaopoolPattern(client, "phashio") - self.phoenix: AaopoolPattern = AaopoolPattern(client, "phoenix") - self.polmine: AaopoolPattern = AaopoolPattern(client, "polmine") - self.pool175btc: AaopoolPattern = AaopoolPattern(client, "pool175btc") - self.pool50btc: AaopoolPattern = AaopoolPattern(client, "pool50btc") - self.poolin: AaopoolPattern = AaopoolPattern(client, "poolin") - self.portlandhodl: AaopoolPattern = AaopoolPattern(client, "portlandhodl") - self.publicpool: AaopoolPattern = AaopoolPattern(client, "publicpool") - self.purebtccom: AaopoolPattern = AaopoolPattern(client, "purebtccom") - self.rawpool: AaopoolPattern = AaopoolPattern(client, "rawpool") - self.rigpool: AaopoolPattern = AaopoolPattern(client, "rigpool") - self.sbicrypto: AaopoolPattern = AaopoolPattern(client, "sbicrypto") - self.secpool: AaopoolPattern = AaopoolPattern(client, "secpool") - self.secretsuperstar: AaopoolPattern = AaopoolPattern(client, "secretsuperstar") - self.sevenpool: AaopoolPattern = AaopoolPattern(client, "sevenpool") - self.shawnp0wers: AaopoolPattern = AaopoolPattern(client, "shawnp0wers") - self.sigmapoolcom: AaopoolPattern = AaopoolPattern(client, "sigmapoolcom") - self.simplecoinus: AaopoolPattern = AaopoolPattern(client, "simplecoinus") - self.solock: AaopoolPattern = AaopoolPattern(client, "solock") - self.spiderpool: AaopoolPattern = AaopoolPattern(client, "spiderpool") - self.stminingcorp: AaopoolPattern = AaopoolPattern(client, "stminingcorp") - self.tangpool: AaopoolPattern = AaopoolPattern(client, "tangpool") - self.tatmaspool: AaopoolPattern = AaopoolPattern(client, "tatmaspool") - self.tbdice: AaopoolPattern = AaopoolPattern(client, "tbdice") - self.telco214: AaopoolPattern = AaopoolPattern(client, "telco214") - self.terrapool: AaopoolPattern = AaopoolPattern(client, "terrapool") - self.tiger: AaopoolPattern = AaopoolPattern(client, "tiger") - self.tigerpoolnet: AaopoolPattern = AaopoolPattern(client, "tigerpoolnet") - self.titan: AaopoolPattern = AaopoolPattern(client, "titan") - self.transactioncoinmining: AaopoolPattern = AaopoolPattern( - client, "transactioncoinmining" - ) - self.trickysbtcpool: AaopoolPattern = AaopoolPattern(client, "trickysbtcpool") - self.triplemining: AaopoolPattern = AaopoolPattern(client, "triplemining") - self.twentyoneinc: AaopoolPattern = AaopoolPattern(client, "twentyoneinc") - self.ultimuspool: AaopoolPattern = AaopoolPattern(client, "ultimuspool") - self.unknown: AaopoolPattern = AaopoolPattern(client, "unknown") - self.unomp: AaopoolPattern = AaopoolPattern(client, "unomp") - self.viabtc: AaopoolPattern = AaopoolPattern(client, "viabtc") - self.waterhole: AaopoolPattern = AaopoolPattern(client, "waterhole") - self.wayicn: AaopoolPattern = AaopoolPattern(client, "wayicn") - self.whitepool: AaopoolPattern = AaopoolPattern(client, "whitepool") - self.wk057: AaopoolPattern = AaopoolPattern(client, "wk057") - self.yourbtcnet: AaopoolPattern = AaopoolPattern(client, "yourbtcnet") - self.zulupool: AaopoolPattern = AaopoolPattern(client, "zulupool") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.aaopool: AaopoolPattern = AaopoolPattern(client, 'aaopool') + self.antpool: AaopoolPattern = AaopoolPattern(client, 'antpool') + self.arkpool: AaopoolPattern = AaopoolPattern(client, 'arkpool') + self.asicminer: AaopoolPattern = AaopoolPattern(client, 'asicminer') + self.axbt: AaopoolPattern = AaopoolPattern(client, 'axbt') + self.batpool: AaopoolPattern = AaopoolPattern(client, 'batpool') + self.bcmonster: AaopoolPattern = AaopoolPattern(client, 'bcmonster') + self.bcpoolio: AaopoolPattern = AaopoolPattern(client, 'bcpoolio') + self.binancepool: AaopoolPattern = AaopoolPattern(client, 'binancepool') + self.bitalo: AaopoolPattern = AaopoolPattern(client, 'bitalo') + self.bitclub: AaopoolPattern = AaopoolPattern(client, 'bitclub') + self.bitcoinaffiliatenetwork: AaopoolPattern = AaopoolPattern(client, 'bitcoinaffiliatenetwork') + self.bitcoincom: AaopoolPattern = AaopoolPattern(client, 'bitcoincom') + self.bitcoinindia: AaopoolPattern = AaopoolPattern(client, 'bitcoinindia') + self.bitcoinrussia: AaopoolPattern = AaopoolPattern(client, 'bitcoinrussia') + self.bitcoinukraine: AaopoolPattern = AaopoolPattern(client, 'bitcoinukraine') + self.bitfarms: AaopoolPattern = AaopoolPattern(client, 'bitfarms') + self.bitfufupool: AaopoolPattern = AaopoolPattern(client, 'bitfufupool') + self.bitfury: AaopoolPattern = AaopoolPattern(client, 'bitfury') + self.bitminter: AaopoolPattern = AaopoolPattern(client, 'bitminter') + self.bitparking: AaopoolPattern = AaopoolPattern(client, 'bitparking') + self.bitsolo: AaopoolPattern = AaopoolPattern(client, 'bitsolo') + self.bixin: AaopoolPattern = AaopoolPattern(client, 'bixin') + self.blockfills: AaopoolPattern = AaopoolPattern(client, 'blockfills') + self.braiinspool: AaopoolPattern = AaopoolPattern(client, 'braiinspool') + self.bravomining: AaopoolPattern = AaopoolPattern(client, 'bravomining') + self.btcc: AaopoolPattern = AaopoolPattern(client, 'btcc') + self.btccom: AaopoolPattern = AaopoolPattern(client, 'btccom') + self.btcdig: AaopoolPattern = AaopoolPattern(client, 'btcdig') + self.btcguild: AaopoolPattern = AaopoolPattern(client, 'btcguild') + self.btclab: AaopoolPattern = AaopoolPattern(client, 'btclab') + self.btcmp: AaopoolPattern = AaopoolPattern(client, 'btcmp') + self.btcnuggets: AaopoolPattern = AaopoolPattern(client, 'btcnuggets') + self.btcpoolparty: AaopoolPattern = AaopoolPattern(client, 'btcpoolparty') + self.btcserv: AaopoolPattern = AaopoolPattern(client, 'btcserv') + self.btctop: AaopoolPattern = AaopoolPattern(client, 'btctop') + self.btpool: AaopoolPattern = AaopoolPattern(client, 'btpool') + self.bwpool: AaopoolPattern = AaopoolPattern(client, 'bwpool') + self.bytepool: AaopoolPattern = AaopoolPattern(client, 'bytepool') + self.canoe: AaopoolPattern = AaopoolPattern(client, 'canoe') + self.canoepool: AaopoolPattern = AaopoolPattern(client, 'canoepool') + self.carbonnegative: AaopoolPattern = AaopoolPattern(client, 'carbonnegative') + self.ckpool: AaopoolPattern = AaopoolPattern(client, 'ckpool') + self.cloudhashing: AaopoolPattern = AaopoolPattern(client, 'cloudhashing') + self.coinlab: AaopoolPattern = AaopoolPattern(client, 'coinlab') + self.cointerra: AaopoolPattern = AaopoolPattern(client, 'cointerra') + self.connectbtc: AaopoolPattern = AaopoolPattern(client, 'connectbtc') + self.dcex: AaopoolPattern = AaopoolPattern(client, 'dcex') + self.dcexploration: AaopoolPattern = AaopoolPattern(client, 'dcexploration') + self.digitalbtc: AaopoolPattern = AaopoolPattern(client, 'digitalbtc') + self.digitalxmintsy: AaopoolPattern = AaopoolPattern(client, 'digitalxmintsy') + self.dpool: AaopoolPattern = AaopoolPattern(client, 'dpool') + self.eclipsemc: AaopoolPattern = AaopoolPattern(client, 'eclipsemc') + self.eightbaochi: AaopoolPattern = AaopoolPattern(client, 'eightbaochi') + self.ekanembtc: AaopoolPattern = AaopoolPattern(client, 'ekanembtc') + self.eligius: AaopoolPattern = AaopoolPattern(client, 'eligius') + self.emcdpool: AaopoolPattern = AaopoolPattern(client, 'emcdpool') + self.entrustcharitypool: AaopoolPattern = AaopoolPattern(client, 'entrustcharitypool') + self.eobot: AaopoolPattern = AaopoolPattern(client, 'eobot') + self.exxbw: AaopoolPattern = AaopoolPattern(client, 'exxbw') + self.f2pool: AaopoolPattern = AaopoolPattern(client, 'f2pool') + self.fiftyeightcoin: AaopoolPattern = AaopoolPattern(client, 'fiftyeightcoin') + self.foundryusa: AaopoolPattern = AaopoolPattern(client, 'foundryusa') + self.futurebitapollosolo: AaopoolPattern = AaopoolPattern(client, 'futurebitapollosolo') + self.gbminers: AaopoolPattern = AaopoolPattern(client, 'gbminers') + self.ghashio: AaopoolPattern = AaopoolPattern(client, 'ghashio') + self.givemecoins: AaopoolPattern = AaopoolPattern(client, 'givemecoins') + self.gogreenlight: AaopoolPattern = AaopoolPattern(client, 'gogreenlight') + self.haominer: AaopoolPattern = AaopoolPattern(client, 'haominer') + self.haozhuzhu: AaopoolPattern = AaopoolPattern(client, 'haozhuzhu') + self.hashbx: AaopoolPattern = AaopoolPattern(client, 'hashbx') + self.hashpool: AaopoolPattern = AaopoolPattern(client, 'hashpool') + self.helix: AaopoolPattern = AaopoolPattern(client, 'helix') + self.hhtt: AaopoolPattern = AaopoolPattern(client, 'hhtt') + self.hotpool: AaopoolPattern = AaopoolPattern(client, 'hotpool') + self.hummerpool: AaopoolPattern = AaopoolPattern(client, 'hummerpool') + self.huobipool: AaopoolPattern = AaopoolPattern(client, 'huobipool') + self.innopolistech: AaopoolPattern = AaopoolPattern(client, 'innopolistech') + self.kanopool: AaopoolPattern = AaopoolPattern(client, 'kanopool') + self.kncminer: AaopoolPattern = AaopoolPattern(client, 'kncminer') + self.kucoinpool: AaopoolPattern = AaopoolPattern(client, 'kucoinpool') + self.lubiancom: AaopoolPattern = AaopoolPattern(client, 'lubiancom') + self.luckypool: AaopoolPattern = AaopoolPattern(client, 'luckypool') + self.luxor: AaopoolPattern = AaopoolPattern(client, 'luxor') + self.marapool: AaopoolPattern = AaopoolPattern(client, 'marapool') + self.maxbtc: AaopoolPattern = AaopoolPattern(client, 'maxbtc') + self.maxipool: AaopoolPattern = AaopoolPattern(client, 'maxipool') + self.megabigpower: AaopoolPattern = AaopoolPattern(client, 'megabigpower') + self.minerium: AaopoolPattern = AaopoolPattern(client, 'minerium') + self.miningcity: AaopoolPattern = AaopoolPattern(client, 'miningcity') + self.miningdutch: AaopoolPattern = AaopoolPattern(client, 'miningdutch') + self.miningkings: AaopoolPattern = AaopoolPattern(client, 'miningkings') + self.miningsquared: AaopoolPattern = AaopoolPattern(client, 'miningsquared') + self.mmpool: AaopoolPattern = AaopoolPattern(client, 'mmpool') + self.mtred: AaopoolPattern = AaopoolPattern(client, 'mtred') + self.multicoinco: AaopoolPattern = AaopoolPattern(client, 'multicoinco') + self.multipool: AaopoolPattern = AaopoolPattern(client, 'multipool') + self.mybtccoinpool: AaopoolPattern = AaopoolPattern(client, 'mybtccoinpool') + self.neopool: AaopoolPattern = AaopoolPattern(client, 'neopool') + self.nexious: AaopoolPattern = AaopoolPattern(client, 'nexious') + self.nicehash: AaopoolPattern = AaopoolPattern(client, 'nicehash') + self.nmcbit: AaopoolPattern = AaopoolPattern(client, 'nmcbit') + self.novablock: AaopoolPattern = AaopoolPattern(client, 'novablock') + self.ocean: AaopoolPattern = AaopoolPattern(client, 'ocean') + self.okexpool: AaopoolPattern = AaopoolPattern(client, 'okexpool') + self.okkong: AaopoolPattern = AaopoolPattern(client, 'okkong') + self.okminer: AaopoolPattern = AaopoolPattern(client, 'okminer') + self.okpooltop: AaopoolPattern = AaopoolPattern(client, 'okpooltop') + self.onehash: AaopoolPattern = AaopoolPattern(client, 'onehash') + self.onem1x: AaopoolPattern = AaopoolPattern(client, 'onem1x') + self.onethash: AaopoolPattern = AaopoolPattern(client, 'onethash') + self.ozcoin: AaopoolPattern = AaopoolPattern(client, 'ozcoin') + self.parasite: AaopoolPattern = AaopoolPattern(client, 'parasite') + self.patels: AaopoolPattern = AaopoolPattern(client, 'patels') + self.pegapool: AaopoolPattern = AaopoolPattern(client, 'pegapool') + self.phashio: AaopoolPattern = AaopoolPattern(client, 'phashio') + self.phoenix: AaopoolPattern = AaopoolPattern(client, 'phoenix') + self.polmine: AaopoolPattern = AaopoolPattern(client, 'polmine') + self.pool175btc: AaopoolPattern = AaopoolPattern(client, 'pool175btc') + self.pool50btc: AaopoolPattern = AaopoolPattern(client, 'pool50btc') + self.poolin: AaopoolPattern = AaopoolPattern(client, 'poolin') + self.portlandhodl: AaopoolPattern = AaopoolPattern(client, 'portlandhodl') + self.publicpool: AaopoolPattern = AaopoolPattern(client, 'publicpool') + self.purebtccom: AaopoolPattern = AaopoolPattern(client, 'purebtccom') + self.rawpool: AaopoolPattern = AaopoolPattern(client, 'rawpool') + self.rigpool: AaopoolPattern = AaopoolPattern(client, 'rigpool') + self.sbicrypto: AaopoolPattern = AaopoolPattern(client, 'sbicrypto') + self.secpool: AaopoolPattern = AaopoolPattern(client, 'secpool') + self.secretsuperstar: AaopoolPattern = AaopoolPattern(client, 'secretsuperstar') + self.sevenpool: AaopoolPattern = AaopoolPattern(client, 'sevenpool') + self.shawnp0wers: AaopoolPattern = AaopoolPattern(client, 'shawnp0wers') + self.sigmapoolcom: AaopoolPattern = AaopoolPattern(client, 'sigmapoolcom') + self.simplecoinus: AaopoolPattern = AaopoolPattern(client, 'simplecoinus') + self.solock: AaopoolPattern = AaopoolPattern(client, 'solock') + self.spiderpool: AaopoolPattern = AaopoolPattern(client, 'spiderpool') + self.stminingcorp: AaopoolPattern = AaopoolPattern(client, 'stminingcorp') + self.tangpool: AaopoolPattern = AaopoolPattern(client, 'tangpool') + self.tatmaspool: AaopoolPattern = AaopoolPattern(client, 'tatmaspool') + self.tbdice: AaopoolPattern = AaopoolPattern(client, 'tbdice') + self.telco214: AaopoolPattern = AaopoolPattern(client, 'telco214') + self.terrapool: AaopoolPattern = AaopoolPattern(client, 'terrapool') + self.tiger: AaopoolPattern = AaopoolPattern(client, 'tiger') + self.tigerpoolnet: AaopoolPattern = AaopoolPattern(client, 'tigerpoolnet') + self.titan: AaopoolPattern = AaopoolPattern(client, 'titan') + self.transactioncoinmining: AaopoolPattern = AaopoolPattern(client, 'transactioncoinmining') + self.trickysbtcpool: AaopoolPattern = AaopoolPattern(client, 'trickysbtcpool') + self.triplemining: AaopoolPattern = AaopoolPattern(client, 'triplemining') + self.twentyoneinc: AaopoolPattern = AaopoolPattern(client, 'twentyoneinc') + self.ultimuspool: AaopoolPattern = AaopoolPattern(client, 'ultimuspool') + self.unknown: AaopoolPattern = AaopoolPattern(client, 'unknown') + self.unomp: AaopoolPattern = AaopoolPattern(client, 'unomp') + self.viabtc: AaopoolPattern = AaopoolPattern(client, 'viabtc') + self.waterhole: AaopoolPattern = AaopoolPattern(client, 'waterhole') + self.wayicn: AaopoolPattern = AaopoolPattern(client, 'wayicn') + self.whitepool: AaopoolPattern = AaopoolPattern(client, 'whitepool') + self.wk057: AaopoolPattern = AaopoolPattern(client, 'wk057') + self.yourbtcnet: AaopoolPattern = AaopoolPattern(client, 'yourbtcnet') + self.zulupool: AaopoolPattern = AaopoolPattern(client, 'zulupool') class CatalogTree_Positions: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.block_position: MetricPattern11[BlkPosition] = MetricPattern11( - client, "position" - ) - self.tx_position: MetricPattern27[BlkPosition] = MetricPattern27( - client, "position" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.block_position: MetricPattern11[BlkPosition] = MetricPattern11(client, 'position') + self.tx_position: MetricPattern27[BlkPosition] = MetricPattern27(client, 'position') class CatalogTree_Price: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): + def __init__(self, client: BrkClientBase, base_path: str = ''): self.cents: CatalogTree_Price_Cents = CatalogTree_Price_Cents(client) self.sats: CatalogTree_Price_Sats = CatalogTree_Price_Sats(client) self.usd: CatalogTree_Price_Usd = CatalogTree_Price_Usd(client) - class CatalogTree_Price_Cents: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.ohlc: MetricPattern5[OHLCCents] = MetricPattern5(client, "ohlc_cents") - self.split: CatalogTree_Price_Cents_Split = CatalogTree_Price_Cents_Split( - client - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.ohlc: MetricPattern5[OHLCCents] = MetricPattern5(client, 'ohlc_cents') + self.split: CatalogTree_Price_Cents_Split = CatalogTree_Price_Cents_Split(client) class CatalogTree_Price_Cents_Split: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.close: MetricPattern5[Cents] = MetricPattern5(client, "price_close_cents") - self.high: MetricPattern5[Cents] = MetricPattern5(client, "price_high_cents") - self.low: MetricPattern5[Cents] = MetricPattern5(client, "price_low_cents") - self.open: MetricPattern5[Cents] = MetricPattern5(client, "price_open_cents") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.close: MetricPattern5[Close] = MetricPattern5(client, 'price_close_cents') + self.high: MetricPattern5[High] = MetricPattern5(client, 'price_high_cents') + self.low: MetricPattern5[Low] = MetricPattern5(client, 'price_low_cents') + self.open: MetricPattern5[Open] = MetricPattern5(client, 'price_open_cents') class CatalogTree_Price_Sats: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.ohlc: MetricPattern1[OHLCSats] = MetricPattern1(client, "price_ohlc_sats") - self.split: SplitPattern2[Sats] = SplitPattern2(client, "price_sats") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.ohlc: MetricPattern1[OHLCSats] = MetricPattern1(client, 'price_ohlc_sats') + self.split: SplitPattern2[Sats] = SplitPattern2(client, 'price_sats') class CatalogTree_Price_Usd: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.ohlc: MetricPattern1[OHLCDollars] = MetricPattern1(client, "price_ohlc") - self.split: SplitPattern2[Dollars] = SplitPattern2(client, "price") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.ohlc: MetricPattern1[OHLCDollars] = MetricPattern1(client, 'price_ohlc') + self.split: SplitPattern2[Dollars] = SplitPattern2(client, 'price') class CatalogTree_Scripts: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): + def __init__(self, client: BrkClientBase, base_path: str = ''): self.count: CatalogTree_Scripts_Count = CatalogTree_Scripts_Count(client) - self.empty_to_txindex: MetricPattern9[TxIndex] = MetricPattern9( - client, "txindex" - ) - self.first_emptyoutputindex: MetricPattern11[EmptyOutputIndex] = ( - MetricPattern11(client, "first_emptyoutputindex") - ) - self.first_opreturnindex: MetricPattern11[OpReturnIndex] = MetricPattern11( - client, "first_opreturnindex" - ) - self.first_p2msoutputindex: MetricPattern11[P2MSOutputIndex] = MetricPattern11( - client, "first_p2msoutputindex" - ) - self.first_unknownoutputindex: MetricPattern11[UnknownOutputIndex] = ( - MetricPattern11(client, "first_unknownoutputindex") - ) - self.opreturn_to_txindex: MetricPattern14[TxIndex] = MetricPattern14( - client, "txindex" - ) - self.p2ms_to_txindex: MetricPattern17[TxIndex] = MetricPattern17( - client, "txindex" - ) - self.unknown_to_txindex: MetricPattern28[TxIndex] = MetricPattern28( - client, "txindex" - ) + self.empty_to_txindex: MetricPattern9[TxIndex] = MetricPattern9(client, 'txindex') + self.first_emptyoutputindex: MetricPattern11[EmptyOutputIndex] = MetricPattern11(client, 'first_emptyoutputindex') + self.first_opreturnindex: MetricPattern11[OpReturnIndex] = MetricPattern11(client, 'first_opreturnindex') + self.first_p2msoutputindex: MetricPattern11[P2MSOutputIndex] = MetricPattern11(client, 'first_p2msoutputindex') + self.first_unknownoutputindex: MetricPattern11[UnknownOutputIndex] = MetricPattern11(client, 'first_unknownoutputindex') + self.opreturn_to_txindex: MetricPattern14[TxIndex] = MetricPattern14(client, 'txindex') + self.p2ms_to_txindex: MetricPattern17[TxIndex] = MetricPattern17(client, 'txindex') + self.unknown_to_txindex: MetricPattern28[TxIndex] = MetricPattern28(client, 'txindex') self.value: CatalogTree_Scripts_Value = CatalogTree_Scripts_Value(client) - class CatalogTree_Scripts_Count: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.emptyoutput: DollarsPattern[StoredU64] = DollarsPattern( - client, "emptyoutput_count" - ) - self.opreturn: DollarsPattern[StoredU64] = DollarsPattern( - client, "opreturn_count" - ) - self.p2a: DollarsPattern[StoredU64] = DollarsPattern(client, "p2a_count") - self.p2ms: DollarsPattern[StoredU64] = DollarsPattern(client, "p2ms_count") - self.p2pk33: DollarsPattern[StoredU64] = DollarsPattern(client, "p2pk33_count") - self.p2pk65: DollarsPattern[StoredU64] = DollarsPattern(client, "p2pk65_count") - self.p2pkh: DollarsPattern[StoredU64] = DollarsPattern(client, "p2pkh_count") - self.p2sh: DollarsPattern[StoredU64] = DollarsPattern(client, "p2sh_count") - self.p2tr: DollarsPattern[StoredU64] = DollarsPattern(client, "p2tr_count") - self.p2wpkh: DollarsPattern[StoredU64] = DollarsPattern(client, "p2wpkh_count") - self.p2wsh: DollarsPattern[StoredU64] = DollarsPattern(client, "p2wsh_count") - self.segwit: DollarsPattern[StoredU64] = DollarsPattern(client, "segwit_count") - self.segwit_adoption: SegwitAdoptionPattern = SegwitAdoptionPattern( - client, "segwit_adoption" - ) - self.taproot_adoption: SegwitAdoptionPattern = SegwitAdoptionPattern( - client, "taproot_adoption" - ) - self.unknownoutput: DollarsPattern[StoredU64] = DollarsPattern( - client, "unknownoutput_count" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.emptyoutput: DollarsPattern[StoredU64] = DollarsPattern(client, 'emptyoutput_count') + self.opreturn: DollarsPattern[StoredU64] = DollarsPattern(client, 'opreturn_count') + self.p2a: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2a_count') + self.p2ms: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2ms_count') + self.p2pk33: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2pk33_count') + self.p2pk65: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2pk65_count') + self.p2pkh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2pkh_count') + self.p2sh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2sh_count') + self.p2tr: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2tr_count') + self.p2wpkh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2wpkh_count') + self.p2wsh: DollarsPattern[StoredU64] = DollarsPattern(client, 'p2wsh_count') + self.segwit: DollarsPattern[StoredU64] = DollarsPattern(client, 'segwit_count') + self.segwit_adoption: SegwitAdoptionPattern = SegwitAdoptionPattern(client, 'segwit_adoption') + self.taproot_adoption: SegwitAdoptionPattern = SegwitAdoptionPattern(client, 'taproot_adoption') + self.unknownoutput: DollarsPattern[StoredU64] = DollarsPattern(client, 'unknownoutput_count') class CatalogTree_Scripts_Value: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.opreturn: CoinbasePattern = CoinbasePattern(client, "opreturn_value") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.opreturn: CoinbasePattern = CoinbasePattern(client, 'opreturn_value') class CatalogTree_Supply: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): + def __init__(self, client: BrkClientBase, base_path: str = ''): self.burned: CatalogTree_Supply_Burned = CatalogTree_Supply_Burned(client) - self.circulating: CatalogTree_Supply_Circulating = ( - CatalogTree_Supply_Circulating(client) - ) - self.inflation: MetricPattern4[StoredF32] = MetricPattern4( - client, "inflation_rate" - ) - self.market_cap: MetricPattern1[Dollars] = MetricPattern1(client, "market_cap") + self.circulating: CatalogTree_Supply_Circulating = CatalogTree_Supply_Circulating(client) + self.inflation: MetricPattern4[StoredF32] = MetricPattern4(client, 'inflation_rate') + self.market_cap: MetricPattern1[Dollars] = MetricPattern1(client, 'market_cap') self.velocity: CatalogTree_Supply_Velocity = CatalogTree_Supply_Velocity(client) - class CatalogTree_Supply_Burned: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.opreturn: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, "opreturn_supply" - ) - self.unspendable: UnclaimedRewardsPattern = UnclaimedRewardsPattern( - client, "unspendable_supply" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.opreturn: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, 'opreturn_supply') + self.unspendable: UnclaimedRewardsPattern = UnclaimedRewardsPattern(client, 'unspendable_supply') class CatalogTree_Supply_Circulating: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.bitcoin: MetricPattern3[Bitcoin] = MetricPattern3( - client, "circulating_supply_btc" - ) - self.dollars: MetricPattern3[Dollars] = MetricPattern3( - client, "circulating_supply_usd" - ) - self.sats: MetricPattern3[Sats] = MetricPattern3(client, "circulating_supply") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.bitcoin: MetricPattern3[Bitcoin] = MetricPattern3(client, 'circulating_supply_btc') + self.dollars: MetricPattern3[Dollars] = MetricPattern3(client, 'circulating_supply_usd') + self.sats: MetricPattern3[Sats] = MetricPattern3(client, 'circulating_supply') class CatalogTree_Supply_Velocity: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.btc: MetricPattern4[StoredF64] = MetricPattern4(client, "btc_velocity") - self.usd: MetricPattern4[StoredF64] = MetricPattern4(client, "usd_velocity") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.btc: MetricPattern4[StoredF64] = MetricPattern4(client, 'btc_velocity') + self.usd: MetricPattern4[StoredF64] = MetricPattern4(client, 'usd_velocity') class CatalogTree_Transactions: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.base_size: MetricPattern27[StoredU32] = MetricPattern27( - client, "base_size" - ) - self.count: CatalogTree_Transactions_Count = CatalogTree_Transactions_Count( - client - ) + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.base_size: MetricPattern27[StoredU32] = MetricPattern27(client, 'base_size') + self.count: CatalogTree_Transactions_Count = CatalogTree_Transactions_Count(client) self.fees: CatalogTree_Transactions_Fees = CatalogTree_Transactions_Fees(client) - self.first_txindex: MetricPattern11[TxIndex] = MetricPattern11( - client, "first_txindex" - ) - self.first_txinindex: MetricPattern27[TxInIndex] = MetricPattern27( - client, "first_txinindex" - ) - self.first_txoutindex: MetricPattern27[TxOutIndex] = MetricPattern27( - client, "first_txoutindex" - ) - self.height: MetricPattern27[Height] = MetricPattern27(client, "height") - self.is_explicitly_rbf: MetricPattern27[StoredBool] = MetricPattern27( - client, "is_explicitly_rbf" - ) - self.rawlocktime: MetricPattern27[RawLockTime] = MetricPattern27( - client, "rawlocktime" - ) + self.first_txindex: MetricPattern11[TxIndex] = MetricPattern11(client, 'first_txindex') + self.first_txinindex: MetricPattern27[TxInIndex] = MetricPattern27(client, 'first_txinindex') + self.first_txoutindex: MetricPattern27[TxOutIndex] = MetricPattern27(client, 'first_txoutindex') + self.height: MetricPattern27[Height] = MetricPattern27(client, 'height') + self.is_explicitly_rbf: MetricPattern27[StoredBool] = MetricPattern27(client, 'is_explicitly_rbf') + self.rawlocktime: MetricPattern27[RawLockTime] = MetricPattern27(client, 'rawlocktime') self.size: CatalogTree_Transactions_Size = CatalogTree_Transactions_Size(client) - self.total_size: MetricPattern27[StoredU32] = MetricPattern27( - client, "total_size" - ) - self.txid: MetricPattern27[Txid] = MetricPattern27(client, "txid") - self.txversion: MetricPattern27[TxVersion] = MetricPattern27( - client, "txversion" - ) - self.versions: CatalogTree_Transactions_Versions = ( - CatalogTree_Transactions_Versions(client) - ) - self.volume: CatalogTree_Transactions_Volume = CatalogTree_Transactions_Volume( - client - ) - + self.total_size: MetricPattern27[StoredU32] = MetricPattern27(client, 'total_size') + self.txid: MetricPattern27[Txid] = MetricPattern27(client, 'txid') + self.txversion: MetricPattern27[TxVersion] = MetricPattern27(client, 'txversion') + self.versions: CatalogTree_Transactions_Versions = CatalogTree_Transactions_Versions(client) + self.volume: CatalogTree_Transactions_Volume = CatalogTree_Transactions_Volume(client) class CatalogTree_Transactions_Count: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.is_coinbase: MetricPattern27[StoredBool] = MetricPattern27( - client, "is_coinbase" - ) - self.tx_count: DollarsPattern[StoredU64] = DollarsPattern(client, "tx_count") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.is_coinbase: MetricPattern27[StoredBool] = MetricPattern27(client, 'is_coinbase') + self.tx_count: DollarsPattern[StoredU64] = DollarsPattern(client, 'tx_count') class CatalogTree_Transactions_Fees: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.fee: CatalogTree_Transactions_Fees_Fee = CatalogTree_Transactions_Fees_Fee( - client - ) - self.fee_rate: FeeRatePattern[FeeRate] = FeeRatePattern(client, "fee_rate") - self.input_value: MetricPattern27[Sats] = MetricPattern27(client, "input_value") - self.output_value: MetricPattern27[Sats] = MetricPattern27( - client, "output_value" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.fee: CatalogTree_Transactions_Fees_Fee = CatalogTree_Transactions_Fees_Fee(client) + self.fee_rate: FeeRatePattern[FeeRate] = FeeRatePattern(client, 'fee_rate') + self.input_value: MetricPattern27[Sats] = MetricPattern27(client, 'input_value') + self.output_value: MetricPattern27[Sats] = MetricPattern27(client, 'output_value') class CatalogTree_Transactions_Fees_Fee: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.bitcoin: CountPattern2[Bitcoin] = CountPattern2(client, "fee_btc") - self.dollars: CatalogTree_Transactions_Fees_Fee_Dollars = ( - CatalogTree_Transactions_Fees_Fee_Dollars(client) - ) - self.sats: CountPattern2[Sats] = CountPattern2(client, "fee") - self.txindex: MetricPattern27[Sats] = MetricPattern27(client, "fee") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.bitcoin: CountPattern2[Bitcoin] = CountPattern2(client, 'fee_btc') + self.dollars: CatalogTree_Transactions_Fees_Fee_Dollars = CatalogTree_Transactions_Fees_Fee_Dollars(client) + self.sats: CountPattern2[Sats] = CountPattern2(client, 'fee') + self.txindex: MetricPattern27[Sats] = MetricPattern27(client, 'fee') class CatalogTree_Transactions_Fees_Fee_Dollars: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.average: MetricPattern1[Dollars] = MetricPattern1( - client, "fee_usd_average" - ) - self.cumulative: MetricPattern2[Dollars] = MetricPattern2( - client, "fee_usd_cumulative" - ) - self.height_cumulative: MetricPattern11[Dollars] = MetricPattern11( - client, "fee_usd_cumulative" - ) - self.max: MetricPattern1[Dollars] = MetricPattern1(client, "fee_usd_max") - self.median: MetricPattern11[Dollars] = MetricPattern11( - client, "fee_usd_median" - ) - self.min: MetricPattern1[Dollars] = MetricPattern1(client, "fee_usd_min") - self.pct10: MetricPattern11[Dollars] = MetricPattern11(client, "fee_usd_pct10") - self.pct25: MetricPattern11[Dollars] = MetricPattern11(client, "fee_usd_pct25") - self.pct75: MetricPattern11[Dollars] = MetricPattern11(client, "fee_usd_pct75") - self.pct90: MetricPattern11[Dollars] = MetricPattern11(client, "fee_usd_pct90") - self.sum: MetricPattern1[Dollars] = MetricPattern1(client, "fee_usd_sum") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.average: MetricPattern1[Dollars] = MetricPattern1(client, 'fee_usd_average') + self.cumulative: MetricPattern2[Dollars] = MetricPattern2(client, 'fee_usd_cumulative') + self.height_cumulative: MetricPattern11[Dollars] = MetricPattern11(client, 'fee_usd_cumulative') + self.max: MetricPattern1[Dollars] = MetricPattern1(client, 'fee_usd_max') + self.median: MetricPattern11[Dollars] = MetricPattern11(client, 'fee_usd_median') + self.min: MetricPattern1[Dollars] = MetricPattern1(client, 'fee_usd_min') + self.pct10: MetricPattern11[Dollars] = MetricPattern11(client, 'fee_usd_pct10') + self.pct25: MetricPattern11[Dollars] = MetricPattern11(client, 'fee_usd_pct25') + self.pct75: MetricPattern11[Dollars] = MetricPattern11(client, 'fee_usd_pct75') + self.pct90: MetricPattern11[Dollars] = MetricPattern11(client, 'fee_usd_pct90') + self.sum: MetricPattern1[Dollars] = MetricPattern1(client, 'fee_usd_sum') class CatalogTree_Transactions_Size: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.vsize: FeeRatePattern[VSize] = FeeRatePattern(client, "") - self.weight: FeeRatePattern[Weight] = FeeRatePattern(client, "") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.vsize: FeeRatePattern[VSize] = FeeRatePattern(client, 'tx_vsize_average') + self.weight: FeeRatePattern[Weight] = FeeRatePattern(client, 'tx_weight_average') class CatalogTree_Transactions_Versions: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.v1: BlockCountPattern[StoredU64] = BlockCountPattern(client, "tx_v1") - self.v2: BlockCountPattern[StoredU64] = BlockCountPattern(client, "tx_v2") - self.v3: BlockCountPattern[StoredU64] = BlockCountPattern(client, "tx_v3") - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.v1: BlockCountPattern[StoredU64] = BlockCountPattern(client, 'tx_v1') + self.v2: BlockCountPattern[StoredU64] = BlockCountPattern(client, 'tx_v2') + self.v3: BlockCountPattern[StoredU64] = BlockCountPattern(client, 'tx_v3') class CatalogTree_Transactions_Volume: """Catalog tree node.""" - def __init__(self, client: BrkClientBase, base_path: str = ""): - self.annualized_volume: _2015Pattern = _2015Pattern(client, "annualized_volume") - self.inputs_per_sec: MetricPattern4[StoredF32] = MetricPattern4( - client, "inputs_per_sec" - ) - self.outputs_per_sec: MetricPattern4[StoredF32] = MetricPattern4( - client, "outputs_per_sec" - ) - self.sent_sum: ActiveSupplyPattern = ActiveSupplyPattern(client, "sent_sum") - self.tx_per_sec: MetricPattern4[StoredF32] = MetricPattern4( - client, "tx_per_sec" - ) - + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.annualized_volume: _2015Pattern = _2015Pattern(client, 'annualized_volume') + self.inputs_per_sec: MetricPattern4[StoredF32] = MetricPattern4(client, 'inputs_per_sec') + self.outputs_per_sec: MetricPattern4[StoredF32] = MetricPattern4(client, 'outputs_per_sec') + self.sent_sum: ActiveSupplyPattern = ActiveSupplyPattern(client, 'sent_sum') + self.tx_per_sec: MetricPattern4[StoredF32] = MetricPattern4(client, 'tx_per_sec') class BrkClient(BrkClientBase): """Main BRK client with catalog tree and API methods.""" @@ -6667,637 +4420,897 @@ class BrkClient(BrkClientBase): VERSION = "v0.1.0-alpha.2" INDEXES = [ - "dateindex", - "decadeindex", - "difficultyepoch", - "emptyoutputindex", - "halvingepoch", - "height", - "txinindex", - "monthindex", - "opreturnindex", - "txoutindex", - "p2aaddressindex", - "p2msoutputindex", - "p2pk33addressindex", - "p2pk65addressindex", - "p2pkhaddressindex", - "p2shaddressindex", - "p2traddressindex", - "p2wpkhaddressindex", - "p2wshaddressindex", - "quarterindex", - "semesterindex", - "txindex", - "unknownoutputindex", - "weekindex", - "yearindex", - "loadedaddressindex", - "emptyaddressindex", + "dateindex", + "decadeindex", + "difficultyepoch", + "emptyoutputindex", + "halvingepoch", + "height", + "txinindex", + "monthindex", + "opreturnindex", + "txoutindex", + "p2aaddressindex", + "p2msoutputindex", + "p2pk33addressindex", + "p2pk65addressindex", + "p2pkhaddressindex", + "p2shaddressindex", + "p2traddressindex", + "p2wpkhaddressindex", + "p2wshaddressindex", + "quarterindex", + "semesterindex", + "txindex", + "unknownoutputindex", + "weekindex", + "yearindex", + "loadedaddressindex", + "emptyaddressindex" ] POOL_ID_TO_POOL_NAME = { - "aaopool": "AAO Pool", - "antpool": "AntPool", - "arkpool": "ArkPool", - "asicminer": "ASICMiner", - "axbt": "A-XBT", - "batpool": "BATPOOL", - "bcmonster": "BCMonster", - "bcpoolio": "bcpool.io", - "binancepool": "Binance Pool", - "bitalo": "Bitalo", - "bitclub": "BitClub", - "bitcoinaffiliatenetwork": "Bitcoin Affiliate Network", - "bitcoincom": "Bitcoin.com", - "bitcoinindia": "Bitcoin India", - "bitcoinrussia": "BitcoinRussia", - "bitcoinukraine": "Bitcoin-Ukraine", - "bitfarms": "Bitfarms", - "bitfufupool": "BitFuFuPool", - "bitfury": "BitFury", - "bitminter": "BitMinter", - "bitparking": "Bitparking", - "bitsolo": "Bitsolo", - "bixin": "Bixin", - "blockfills": "BlockFills", - "braiinspool": "Braiins Pool", - "bravomining": "Bravo Mining", - "btcc": "BTCC", - "btccom": "BTC.com", - "btcdig": "BTCDig", - "btcguild": "BTC Guild", - "btclab": "BTCLab", - "btcmp": "BTCMP", - "btcnuggets": "BTC Nuggets", - "btcpoolparty": "BTC Pool Party", - "btcserv": "BTCServ", - "btctop": "BTC.TOP", - "btpool": "BTPOOL", - "bwpool": "BWPool", - "bytepool": "BytePool", - "canoe": "CANOE", - "canoepool": "CanoePool", - "carbonnegative": "Carbon Negative", - "ckpool": "CKPool", - "cloudhashing": "CloudHashing", - "coinlab": "CoinLab", - "cointerra": "Cointerra", - "connectbtc": "ConnectBTC", - "dcex": "DCEX", - "dcexploration": "DCExploration", - "digitalbtc": "digitalBTC", - "digitalxmintsy": "digitalX Mintsy", - "dpool": "DPOOL", - "eclipsemc": "EclipseMC", - "eightbaochi": "8baochi", - "ekanembtc": "EkanemBTC", - "eligius": "Eligius", - "emcdpool": "EMCDPool", - "entrustcharitypool": "Entrust Charity Pool", - "eobot": "Eobot", - "exxbw": "EXX&BW", - "f2pool": "F2Pool", - "fiftyeightcoin": "58COIN", - "foundryusa": "Foundry USA", - "futurebitapollosolo": "FutureBit Apollo Solo", - "gbminers": "GBMiners", - "ghashio": "GHash.IO", - "givemecoins": "Give Me Coins", - "gogreenlight": "GoGreenLight", - "haominer": "haominer", - "haozhuzhu": "HAOZHUZHU", - "hashbx": "HashBX", - "hashpool": "HASHPOOL", - "helix": "Helix", - "hhtt": "HHTT", - "hotpool": "HotPool", - "hummerpool": "Hummerpool", - "huobipool": "Huobi.pool", - "innopolistech": "Innopolis Tech", - "kanopool": "KanoPool", - "kncminer": "KnCMiner", - "kucoinpool": "KuCoinPool", - "lubiancom": "Lubian.com", - "luckypool": "luckyPool", - "luxor": "Luxor", - "marapool": "MARA Pool", - "maxbtc": "MaxBTC", - "maxipool": "MaxiPool", - "megabigpower": "MegaBigPower", - "minerium": "Minerium", - "miningcity": "MiningCity", - "miningdutch": "Mining-Dutch", - "miningkings": "MiningKings", - "miningsquared": "Mining Squared", - "mmpool": "mmpool", - "mtred": "Mt Red", - "multicoinco": "MultiCoin.co", - "multipool": "Multipool", - "mybtccoinpool": "myBTCcoin Pool", - "neopool": "Neopool", - "nexious": "Nexious", - "nicehash": "NiceHash", - "nmcbit": "NMCbit", - "novablock": "NovaBlock", - "ocean": "OCEAN", - "okexpool": "OKExPool", - "okkong": "OKKONG", - "okminer": "OKMINER", - "okpooltop": "okpool.top", - "onehash": "1Hash", - "onem1x": "1M1X", - "onethash": "1THash", - "ozcoin": "OzCoin", - "parasite": "Parasite", - "patels": "Patels", - "pegapool": "PEGA Pool", - "phashio": "PHash.IO", - "phoenix": "Phoenix", - "polmine": "Polmine", - "pool175btc": "175btc", - "pool50btc": "50BTC", - "poolin": "Poolin", - "portlandhodl": "Portland.HODL", - "publicpool": "Public Pool", - "purebtccom": "PureBTC.COM", - "rawpool": "Rawpool", - "rigpool": "RigPool", - "sbicrypto": "SBI Crypto", - "secpool": "SECPOOL", - "secretsuperstar": "SecretSuperstar", - "sevenpool": "7pool", - "shawnp0wers": "shawnp0wers", - "sigmapoolcom": "Sigmapool.com", - "simplecoinus": "simplecoin.us", - "solock": "Solo CK", - "spiderpool": "SpiderPool", - "stminingcorp": "ST Mining Corp", - "tangpool": "Tangpool", - "tatmaspool": "TATMAS Pool", - "tbdice": "TBDice", - "telco214": "Telco 214", - "terrapool": "Terra Pool", - "tiger": "tiger", - "tigerpoolnet": "tigerpool.net", - "titan": "Titan", - "transactioncoinmining": "transactioncoinmining", - "trickysbtcpool": "Tricky's BTC Pool", - "triplemining": "TripleMining", - "twentyoneinc": "21 Inc.", - "ultimuspool": "ULTIMUSPOOL", - "unknown": "Unknown", - "unomp": "UNOMP", - "viabtc": "ViaBTC", - "waterhole": "Waterhole", - "wayicn": "WAYI.CN", - "whitepool": "WhitePool", - "wk057": "wk057", - "yourbtcnet": "Yourbtc.net", - "zulupool": "Zulupool", + "aaopool": "AAO Pool", + "antpool": "AntPool", + "arkpool": "ArkPool", + "asicminer": "ASICMiner", + "axbt": "A-XBT", + "batpool": "BATPOOL", + "bcmonster": "BCMonster", + "bcpoolio": "bcpool.io", + "binancepool": "Binance Pool", + "bitalo": "Bitalo", + "bitclub": "BitClub", + "bitcoinaffiliatenetwork": "Bitcoin Affiliate Network", + "bitcoincom": "Bitcoin.com", + "bitcoinindia": "Bitcoin India", + "bitcoinrussia": "BitcoinRussia", + "bitcoinukraine": "Bitcoin-Ukraine", + "bitfarms": "Bitfarms", + "bitfufupool": "BitFuFuPool", + "bitfury": "BitFury", + "bitminter": "BitMinter", + "bitparking": "Bitparking", + "bitsolo": "Bitsolo", + "bixin": "Bixin", + "blockfills": "BlockFills", + "braiinspool": "Braiins Pool", + "bravomining": "Bravo Mining", + "btcc": "BTCC", + "btccom": "BTC.com", + "btcdig": "BTCDig", + "btcguild": "BTC Guild", + "btclab": "BTCLab", + "btcmp": "BTCMP", + "btcnuggets": "BTC Nuggets", + "btcpoolparty": "BTC Pool Party", + "btcserv": "BTCServ", + "btctop": "BTC.TOP", + "btpool": "BTPOOL", + "bwpool": "BWPool", + "bytepool": "BytePool", + "canoe": "CANOE", + "canoepool": "CanoePool", + "carbonnegative": "Carbon Negative", + "ckpool": "CKPool", + "cloudhashing": "CloudHashing", + "coinlab": "CoinLab", + "cointerra": "Cointerra", + "connectbtc": "ConnectBTC", + "dcex": "DCEX", + "dcexploration": "DCExploration", + "digitalbtc": "digitalBTC", + "digitalxmintsy": "digitalX Mintsy", + "dpool": "DPOOL", + "eclipsemc": "EclipseMC", + "eightbaochi": "8baochi", + "ekanembtc": "EkanemBTC", + "eligius": "Eligius", + "emcdpool": "EMCDPool", + "entrustcharitypool": "Entrust Charity Pool", + "eobot": "Eobot", + "exxbw": "EXX&BW", + "f2pool": "F2Pool", + "fiftyeightcoin": "58COIN", + "foundryusa": "Foundry USA", + "futurebitapollosolo": "FutureBit Apollo Solo", + "gbminers": "GBMiners", + "ghashio": "GHash.IO", + "givemecoins": "Give Me Coins", + "gogreenlight": "GoGreenLight", + "haominer": "haominer", + "haozhuzhu": "HAOZHUZHU", + "hashbx": "HashBX", + "hashpool": "HASHPOOL", + "helix": "Helix", + "hhtt": "HHTT", + "hotpool": "HotPool", + "hummerpool": "Hummerpool", + "huobipool": "Huobi.pool", + "innopolistech": "Innopolis Tech", + "kanopool": "KanoPool", + "kncminer": "KnCMiner", + "kucoinpool": "KuCoinPool", + "lubiancom": "Lubian.com", + "luckypool": "luckyPool", + "luxor": "Luxor", + "marapool": "MARA Pool", + "maxbtc": "MaxBTC", + "maxipool": "MaxiPool", + "megabigpower": "MegaBigPower", + "minerium": "Minerium", + "miningcity": "MiningCity", + "miningdutch": "Mining-Dutch", + "miningkings": "MiningKings", + "miningsquared": "Mining Squared", + "mmpool": "mmpool", + "mtred": "Mt Red", + "multicoinco": "MultiCoin.co", + "multipool": "Multipool", + "mybtccoinpool": "myBTCcoin Pool", + "neopool": "Neopool", + "nexious": "Nexious", + "nicehash": "NiceHash", + "nmcbit": "NMCbit", + "novablock": "NovaBlock", + "ocean": "OCEAN", + "okexpool": "OKExPool", + "okkong": "OKKONG", + "okminer": "OKMINER", + "okpooltop": "okpool.top", + "onehash": "1Hash", + "onem1x": "1M1X", + "onethash": "1THash", + "ozcoin": "OzCoin", + "parasite": "Parasite", + "patels": "Patels", + "pegapool": "PEGA Pool", + "phashio": "PHash.IO", + "phoenix": "Phoenix", + "polmine": "Polmine", + "pool175btc": "175btc", + "pool50btc": "50BTC", + "poolin": "Poolin", + "portlandhodl": "Portland.HODL", + "publicpool": "Public Pool", + "purebtccom": "PureBTC.COM", + "rawpool": "Rawpool", + "rigpool": "RigPool", + "sbicrypto": "SBI Crypto", + "secpool": "SECPOOL", + "secretsuperstar": "SecretSuperstar", + "sevenpool": "7pool", + "shawnp0wers": "shawnp0wers", + "sigmapoolcom": "Sigmapool.com", + "simplecoinus": "simplecoin.us", + "solock": "Solo CK", + "spiderpool": "SpiderPool", + "stminingcorp": "ST Mining Corp", + "tangpool": "Tangpool", + "tatmaspool": "TATMAS Pool", + "tbdice": "TBDice", + "telco214": "Telco 214", + "terrapool": "Terra Pool", + "tiger": "tiger", + "tigerpoolnet": "tigerpool.net", + "titan": "Titan", + "transactioncoinmining": "transactioncoinmining", + "trickysbtcpool": "Tricky's BTC Pool", + "triplemining": "TripleMining", + "twentyoneinc": "21 Inc.", + "ultimuspool": "ULTIMUSPOOL", + "unknown": "Unknown", + "unomp": "UNOMP", + "viabtc": "ViaBTC", + "waterhole": "Waterhole", + "wayicn": "WAYI.CN", + "whitepool": "WhitePool", + "wk057": "wk057", + "yourbtcnet": "Yourbtc.net", + "zulupool": "Zulupool" } TERM_NAMES = { - "short": {"id": "sth", "short": "STH", "long": "Short Term Holders"}, - "long": {"id": "lth", "short": "LTH", "long": "Long Term Holders"}, + "short": { + "id": "sth", + "short": "STH", + "long": "Short Term Holders" + }, + "long": { + "id": "lth", + "short": "LTH", + "long": "Long Term Holders" + } } EPOCH_NAMES = { - "_0": {"id": "epoch_0", "short": "Epoch 0", "long": "Epoch 0"}, - "_1": {"id": "epoch_1", "short": "Epoch 1", "long": "Epoch 1"}, - "_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"}, + "_0": { + "id": "epoch_0", + "short": "Epoch 0", + "long": "Epoch 0" + }, + "_1": { + "id": "epoch_1", + "short": "Epoch 1", + "long": "Epoch 1" + }, + "_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" + } } YEAR_NAMES = { - "_2009": {"id": "year_2009", "short": "2009", "long": "Year 2009"}, - "_2010": {"id": "year_2010", "short": "2010", "long": "Year 2010"}, - "_2011": {"id": "year_2011", "short": "2011", "long": "Year 2011"}, - "_2012": {"id": "year_2012", "short": "2012", "long": "Year 2012"}, - "_2013": {"id": "year_2013", "short": "2013", "long": "Year 2013"}, - "_2014": {"id": "year_2014", "short": "2014", "long": "Year 2014"}, - "_2015": {"id": "year_2015", "short": "2015", "long": "Year 2015"}, - "_2016": {"id": "year_2016", "short": "2016", "long": "Year 2016"}, - "_2017": {"id": "year_2017", "short": "2017", "long": "Year 2017"}, - "_2018": {"id": "year_2018", "short": "2018", "long": "Year 2018"}, - "_2019": {"id": "year_2019", "short": "2019", "long": "Year 2019"}, - "_2020": {"id": "year_2020", "short": "2020", "long": "Year 2020"}, - "_2021": {"id": "year_2021", "short": "2021", "long": "Year 2021"}, - "_2022": {"id": "year_2022", "short": "2022", "long": "Year 2022"}, - "_2023": {"id": "year_2023", "short": "2023", "long": "Year 2023"}, - "_2024": {"id": "year_2024", "short": "2024", "long": "Year 2024"}, - "_2025": {"id": "year_2025", "short": "2025", "long": "Year 2025"}, - "_2026": {"id": "year_2026", "short": "2026", "long": "Year 2026"}, + "_2009": { + "id": "year_2009", + "short": "2009", + "long": "Year 2009" + }, + "_2010": { + "id": "year_2010", + "short": "2010", + "long": "Year 2010" + }, + "_2011": { + "id": "year_2011", + "short": "2011", + "long": "Year 2011" + }, + "_2012": { + "id": "year_2012", + "short": "2012", + "long": "Year 2012" + }, + "_2013": { + "id": "year_2013", + "short": "2013", + "long": "Year 2013" + }, + "_2014": { + "id": "year_2014", + "short": "2014", + "long": "Year 2014" + }, + "_2015": { + "id": "year_2015", + "short": "2015", + "long": "Year 2015" + }, + "_2016": { + "id": "year_2016", + "short": "2016", + "long": "Year 2016" + }, + "_2017": { + "id": "year_2017", + "short": "2017", + "long": "Year 2017" + }, + "_2018": { + "id": "year_2018", + "short": "2018", + "long": "Year 2018" + }, + "_2019": { + "id": "year_2019", + "short": "2019", + "long": "Year 2019" + }, + "_2020": { + "id": "year_2020", + "short": "2020", + "long": "Year 2020" + }, + "_2021": { + "id": "year_2021", + "short": "2021", + "long": "Year 2021" + }, + "_2022": { + "id": "year_2022", + "short": "2022", + "long": "Year 2022" + }, + "_2023": { + "id": "year_2023", + "short": "2023", + "long": "Year 2023" + }, + "_2024": { + "id": "year_2024", + "short": "2024", + "long": "Year 2024" + }, + "_2025": { + "id": "year_2025", + "short": "2025", + "long": "Year 2025" + }, + "_2026": { + "id": "year_2026", + "short": "2026", + "long": "Year 2026" + } } SPENDABLE_TYPE_NAMES = { - "p2pk65": { - "id": "p2pk65", - "short": "P2PK65", - "long": "Pay to Public Key (65 bytes)", - }, - "p2pk33": { - "id": "p2pk33", - "short": "P2PK33", - "long": "Pay to Public Key (33 bytes)", - }, - "p2pkh": {"id": "p2pkh", "short": "P2PKH", "long": "Pay to Public Key Hash"}, - "p2ms": {"id": "p2ms", "short": "P2MS", "long": "Pay to Multisig"}, - "p2sh": {"id": "p2sh", "short": "P2SH", "long": "Pay to Script Hash"}, - "p2wpkh": { - "id": "p2wpkh", - "short": "P2WPKH", - "long": "Pay to Witness Public Key Hash", - }, - "p2wsh": { - "id": "p2wsh", - "short": "P2WSH", - "long": "Pay to Witness Script Hash", - }, - "p2tr": {"id": "p2tr", "short": "P2TR", "long": "Pay to Taproot"}, - "p2a": {"id": "p2a", "short": "P2A", "long": "Pay to Anchor"}, - "unknown": { - "id": "unknown_outputs", - "short": "Unknown", - "long": "Unknown Output Type", - }, - "empty": {"id": "empty_outputs", "short": "Empty", "long": "Empty Output"}, + "p2pk65": { + "id": "p2pk65", + "short": "P2PK65", + "long": "Pay to Public Key (65 bytes)" + }, + "p2pk33": { + "id": "p2pk33", + "short": "P2PK33", + "long": "Pay to Public Key (33 bytes)" + }, + "p2pkh": { + "id": "p2pkh", + "short": "P2PKH", + "long": "Pay to Public Key Hash" + }, + "p2ms": { + "id": "p2ms", + "short": "P2MS", + "long": "Pay to Multisig" + }, + "p2sh": { + "id": "p2sh", + "short": "P2SH", + "long": "Pay to Script Hash" + }, + "p2wpkh": { + "id": "p2wpkh", + "short": "P2WPKH", + "long": "Pay to Witness Public Key Hash" + }, + "p2wsh": { + "id": "p2wsh", + "short": "P2WSH", + "long": "Pay to Witness Script Hash" + }, + "p2tr": { + "id": "p2tr", + "short": "P2TR", + "long": "Pay to Taproot" + }, + "p2a": { + "id": "p2a", + "short": "P2A", + "long": "Pay to Anchor" + }, + "unknown": { + "id": "unknown_outputs", + "short": "Unknown", + "long": "Unknown Output Type" + }, + "empty": { + "id": "empty_outputs", + "short": "Empty", + "long": "Empty Output" + } } AGE_RANGE_NAMES = { - "up_to_1h": {"id": "up_to_1h_old", "short": "<1h", "long": "Up to 1 Hour Old"}, - "_1h_to_1d": { - "id": "at_least_1h_up_to_1d_old", - "short": "1h-1d", - "long": "1 Hour to 1 Day Old", - }, - "_1d_to_1w": { - "id": "at_least_1d_up_to_1w_old", - "short": "1d-1w", - "long": "1 Day to 1 Week Old", - }, - "_1w_to_1m": { - "id": "at_least_1w_up_to_1m_old", - "short": "1w-1m", - "long": "1 Week to 1 Month Old", - }, - "_1m_to_2m": { - "id": "at_least_1m_up_to_2m_old", - "short": "1m-2m", - "long": "1 to 2 Months Old", - }, - "_2m_to_3m": { - "id": "at_least_2m_up_to_3m_old", - "short": "2m-3m", - "long": "2 to 3 Months Old", - }, - "_3m_to_4m": { - "id": "at_least_3m_up_to_4m_old", - "short": "3m-4m", - "long": "3 to 4 Months Old", - }, - "_4m_to_5m": { - "id": "at_least_4m_up_to_5m_old", - "short": "4m-5m", - "long": "4 to 5 Months Old", - }, - "_5m_to_6m": { - "id": "at_least_5m_up_to_6m_old", - "short": "5m-6m", - "long": "5 to 6 Months Old", - }, - "_6m_to_1y": { - "id": "at_least_6m_up_to_1y_old", - "short": "6m-1y", - "long": "6 Months to 1 Year Old", - }, - "_1y_to_2y": { - "id": "at_least_1y_up_to_2y_old", - "short": "1y-2y", - "long": "1 to 2 Years Old", - }, - "_2y_to_3y": { - "id": "at_least_2y_up_to_3y_old", - "short": "2y-3y", - "long": "2 to 3 Years Old", - }, - "_3y_to_4y": { - "id": "at_least_3y_up_to_4y_old", - "short": "3y-4y", - "long": "3 to 4 Years Old", - }, - "_4y_to_5y": { - "id": "at_least_4y_up_to_5y_old", - "short": "4y-5y", - "long": "4 to 5 Years Old", - }, - "_5y_to_6y": { - "id": "at_least_5y_up_to_6y_old", - "short": "5y-6y", - "long": "5 to 6 Years Old", - }, - "_6y_to_7y": { - "id": "at_least_6y_up_to_7y_old", - "short": "6y-7y", - "long": "6 to 7 Years Old", - }, - "_7y_to_8y": { - "id": "at_least_7y_up_to_8y_old", - "short": "7y-8y", - "long": "7 to 8 Years Old", - }, - "_8y_to_10y": { - "id": "at_least_8y_up_to_10y_old", - "short": "8y-10y", - "long": "8 to 10 Years Old", - }, - "_10y_to_12y": { - "id": "at_least_10y_up_to_12y_old", - "short": "10y-12y", - "long": "10 to 12 Years Old", - }, - "_12y_to_15y": { - "id": "at_least_12y_up_to_15y_old", - "short": "12y-15y", - "long": "12 to 15 Years Old", - }, - "from_15y": { - "id": "at_least_15y_old", - "short": "15y+", - "long": "15+ Years Old", - }, + "up_to_1h": { + "id": "up_to_1h_old", + "short": "<1h", + "long": "Up to 1 Hour Old" + }, + "_1h_to_1d": { + "id": "at_least_1h_up_to_1d_old", + "short": "1h-1d", + "long": "1 Hour to 1 Day Old" + }, + "_1d_to_1w": { + "id": "at_least_1d_up_to_1w_old", + "short": "1d-1w", + "long": "1 Day to 1 Week Old" + }, + "_1w_to_1m": { + "id": "at_least_1w_up_to_1m_old", + "short": "1w-1m", + "long": "1 Week to 1 Month Old" + }, + "_1m_to_2m": { + "id": "at_least_1m_up_to_2m_old", + "short": "1m-2m", + "long": "1 to 2 Months Old" + }, + "_2m_to_3m": { + "id": "at_least_2m_up_to_3m_old", + "short": "2m-3m", + "long": "2 to 3 Months Old" + }, + "_3m_to_4m": { + "id": "at_least_3m_up_to_4m_old", + "short": "3m-4m", + "long": "3 to 4 Months Old" + }, + "_4m_to_5m": { + "id": "at_least_4m_up_to_5m_old", + "short": "4m-5m", + "long": "4 to 5 Months Old" + }, + "_5m_to_6m": { + "id": "at_least_5m_up_to_6m_old", + "short": "5m-6m", + "long": "5 to 6 Months Old" + }, + "_6m_to_1y": { + "id": "at_least_6m_up_to_1y_old", + "short": "6m-1y", + "long": "6 Months to 1 Year Old" + }, + "_1y_to_2y": { + "id": "at_least_1y_up_to_2y_old", + "short": "1y-2y", + "long": "1 to 2 Years Old" + }, + "_2y_to_3y": { + "id": "at_least_2y_up_to_3y_old", + "short": "2y-3y", + "long": "2 to 3 Years Old" + }, + "_3y_to_4y": { + "id": "at_least_3y_up_to_4y_old", + "short": "3y-4y", + "long": "3 to 4 Years Old" + }, + "_4y_to_5y": { + "id": "at_least_4y_up_to_5y_old", + "short": "4y-5y", + "long": "4 to 5 Years Old" + }, + "_5y_to_6y": { + "id": "at_least_5y_up_to_6y_old", + "short": "5y-6y", + "long": "5 to 6 Years Old" + }, + "_6y_to_7y": { + "id": "at_least_6y_up_to_7y_old", + "short": "6y-7y", + "long": "6 to 7 Years Old" + }, + "_7y_to_8y": { + "id": "at_least_7y_up_to_8y_old", + "short": "7y-8y", + "long": "7 to 8 Years Old" + }, + "_8y_to_10y": { + "id": "at_least_8y_up_to_10y_old", + "short": "8y-10y", + "long": "8 to 10 Years Old" + }, + "_10y_to_12y": { + "id": "at_least_10y_up_to_12y_old", + "short": "10y-12y", + "long": "10 to 12 Years Old" + }, + "_12y_to_15y": { + "id": "at_least_12y_up_to_15y_old", + "short": "12y-15y", + "long": "12 to 15 Years Old" + }, + "from_15y": { + "id": "at_least_15y_old", + "short": "15y+", + "long": "15+ Years Old" + } } MAX_AGE_NAMES = { - "_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"}, - "_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"}, - "_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"}, - "_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"}, - "_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"}, - "_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"}, - "_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"}, - "_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"}, - "_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"}, + "_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" + }, + "_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" + }, + "_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" + }, + "_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" + }, + "_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" + }, + "_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" + }, + "_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" + }, + "_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" + }, + "_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 = { - "_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"}, - "_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", - }, - "_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", - }, - "_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", - }, - "_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", - }, - "_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", - }, - "_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", - }, - "_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", - }, - "_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", - }, + "_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" + }, + "_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" + }, + "_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" + }, + "_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" + }, + "_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" + }, + "_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" + }, + "_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" + }, + "_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" + }, + "_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 = { - "_0sats": {"id": "with_0sats", "short": "0 sats", "long": "0 Sats"}, - "_1sat_to_10sats": { - "id": "above_1sat_under_10sats", - "short": "1-10 sats", - "long": "1 to 10 Sats", - }, - "_10sats_to_100sats": { - "id": "above_10sats_under_100sats", - "short": "10-100 sats", - "long": "10 to 100 Sats", - }, - "_100sats_to_1k_sats": { - "id": "above_100sats_under_1k_sats", - "short": "100-1k sats", - "long": "100 to 1K Sats", - }, - "_1k_sats_to_10k_sats": { - "id": "above_1k_sats_under_10k_sats", - "short": "1k-10k sats", - "long": "1K to 10K Sats", - }, - "_10k_sats_to_100k_sats": { - "id": "above_10k_sats_under_100k_sats", - "short": "10k-100k sats", - "long": "10K to 100K Sats", - }, - "_100k_sats_to_1m_sats": { - "id": "above_100k_sats_under_1m_sats", - "short": "100k-1M sats", - "long": "100K to 1M Sats", - }, - "_1m_sats_to_10m_sats": { - "id": "above_1m_sats_under_10m_sats", - "short": "1M-10M sats", - "long": "1M to 10M Sats", - }, - "_10m_sats_to_1btc": { - "id": "above_10m_sats_under_1btc", - "short": "0.1-1 BTC", - "long": "0.1 to 1 BTC", - }, - "_1btc_to_10btc": { - "id": "above_1btc_under_10btc", - "short": "1-10 BTC", - "long": "1 to 10 BTC", - }, - "_10btc_to_100btc": { - "id": "above_10btc_under_100btc", - "short": "10-100 BTC", - "long": "10 to 100 BTC", - }, - "_100btc_to_1k_btc": { - "id": "above_100btc_under_1k_btc", - "short": "100-1k BTC", - "long": "100 to 1K BTC", - }, - "_1k_btc_to_10k_btc": { - "id": "above_1k_btc_under_10k_btc", - "short": "1k-10k BTC", - "long": "1K to 10K BTC", - }, - "_10k_btc_to_100k_btc": { - "id": "above_10k_btc_under_100k_btc", - "short": "10k-100k BTC", - "long": "10K to 100K BTC", - }, - "_100k_btc_or_more": { - "id": "above_100k_btc", - "short": "100k+ BTC", - "long": "100K+ BTC", - }, + "_0sats": { + "id": "with_0sats", + "short": "0 sats", + "long": "0 Sats" + }, + "_1sat_to_10sats": { + "id": "above_1sat_under_10sats", + "short": "1-10 sats", + "long": "1 to 10 Sats" + }, + "_10sats_to_100sats": { + "id": "above_10sats_under_100sats", + "short": "10-100 sats", + "long": "10 to 100 Sats" + }, + "_100sats_to_1k_sats": { + "id": "above_100sats_under_1k_sats", + "short": "100-1k sats", + "long": "100 to 1K Sats" + }, + "_1k_sats_to_10k_sats": { + "id": "above_1k_sats_under_10k_sats", + "short": "1k-10k sats", + "long": "1K to 10K Sats" + }, + "_10k_sats_to_100k_sats": { + "id": "above_10k_sats_under_100k_sats", + "short": "10k-100k sats", + "long": "10K to 100K Sats" + }, + "_100k_sats_to_1m_sats": { + "id": "above_100k_sats_under_1m_sats", + "short": "100k-1M sats", + "long": "100K to 1M Sats" + }, + "_1m_sats_to_10m_sats": { + "id": "above_1m_sats_under_10m_sats", + "short": "1M-10M sats", + "long": "1M to 10M Sats" + }, + "_10m_sats_to_1btc": { + "id": "above_10m_sats_under_1btc", + "short": "0.1-1 BTC", + "long": "0.1 to 1 BTC" + }, + "_1btc_to_10btc": { + "id": "above_1btc_under_10btc", + "short": "1-10 BTC", + "long": "1 to 10 BTC" + }, + "_10btc_to_100btc": { + "id": "above_10btc_under_100btc", + "short": "10-100 BTC", + "long": "10 to 100 BTC" + }, + "_100btc_to_1k_btc": { + "id": "above_100btc_under_1k_btc", + "short": "100-1k BTC", + "long": "100 to 1K BTC" + }, + "_1k_btc_to_10k_btc": { + "id": "above_1k_btc_under_10k_btc", + "short": "1k-10k BTC", + "long": "1K to 10K BTC" + }, + "_10k_btc_to_100k_btc": { + "id": "above_10k_btc_under_100k_btc", + "short": "10k-100k BTC", + "long": "10K to 100K BTC" + }, + "_100k_btc_or_more": { + "id": "above_100k_btc", + "short": "100k+ BTC", + "long": "100K+ BTC" + } } GE_AMOUNT_NAMES = { - "_1sat": {"id": "above_1sat", "short": "1+ sats", "long": "Above 1 Sat"}, - "_10sats": {"id": "above_10sats", "short": "10+ sats", "long": "Above 10 Sats"}, - "_100sats": { - "id": "above_100sats", - "short": "100+ sats", - "long": "Above 100 Sats", - }, - "_1k_sats": { - "id": "above_1k_sats", - "short": "1k+ sats", - "long": "Above 1K Sats", - }, - "_10k_sats": { - "id": "above_10k_sats", - "short": "10k+ sats", - "long": "Above 10K Sats", - }, - "_100k_sats": { - "id": "above_100k_sats", - "short": "100k+ sats", - "long": "Above 100K Sats", - }, - "_1m_sats": { - "id": "above_1m_sats", - "short": "1M+ sats", - "long": "Above 1M Sats", - }, - "_10m_sats": { - "id": "above_10m_sats", - "short": "0.1+ BTC", - "long": "Above 0.1 BTC", - }, - "_1btc": {"id": "above_1btc", "short": "1+ BTC", "long": "Above 1 BTC"}, - "_10btc": {"id": "above_10btc", "short": "10+ BTC", "long": "Above 10 BTC"}, - "_100btc": {"id": "above_100btc", "short": "100+ BTC", "long": "Above 100 BTC"}, - "_1k_btc": {"id": "above_1k_btc", "short": "1k+ BTC", "long": "Above 1K BTC"}, - "_10k_btc": { - "id": "above_10k_btc", - "short": "10k+ BTC", - "long": "Above 10K BTC", - }, + "_1sat": { + "id": "above_1sat", + "short": "1+ sats", + "long": "Above 1 Sat" + }, + "_10sats": { + "id": "above_10sats", + "short": "10+ sats", + "long": "Above 10 Sats" + }, + "_100sats": { + "id": "above_100sats", + "short": "100+ sats", + "long": "Above 100 Sats" + }, + "_1k_sats": { + "id": "above_1k_sats", + "short": "1k+ sats", + "long": "Above 1K Sats" + }, + "_10k_sats": { + "id": "above_10k_sats", + "short": "10k+ sats", + "long": "Above 10K Sats" + }, + "_100k_sats": { + "id": "above_100k_sats", + "short": "100k+ sats", + "long": "Above 100K Sats" + }, + "_1m_sats": { + "id": "above_1m_sats", + "short": "1M+ sats", + "long": "Above 1M Sats" + }, + "_10m_sats": { + "id": "above_10m_sats", + "short": "0.1+ BTC", + "long": "Above 0.1 BTC" + }, + "_1btc": { + "id": "above_1btc", + "short": "1+ BTC", + "long": "Above 1 BTC" + }, + "_10btc": { + "id": "above_10btc", + "short": "10+ BTC", + "long": "Above 10 BTC" + }, + "_100btc": { + "id": "above_100btc", + "short": "100+ BTC", + "long": "Above 100 BTC" + }, + "_1k_btc": { + "id": "above_1k_btc", + "short": "1k+ BTC", + "long": "Above 1K BTC" + }, + "_10k_btc": { + "id": "above_10k_btc", + "short": "10k+ BTC", + "long": "Above 10K BTC" + } } LT_AMOUNT_NAMES = { - "_10sats": {"id": "under_10sats", "short": "<10 sats", "long": "Under 10 Sats"}, - "_100sats": { - "id": "under_100sats", - "short": "<100 sats", - "long": "Under 100 Sats", - }, - "_1k_sats": { - "id": "under_1k_sats", - "short": "<1k sats", - "long": "Under 1K Sats", - }, - "_10k_sats": { - "id": "under_10k_sats", - "short": "<10k sats", - "long": "Under 10K Sats", - }, - "_100k_sats": { - "id": "under_100k_sats", - "short": "<100k sats", - "long": "Under 100K Sats", - }, - "_1m_sats": { - "id": "under_1m_sats", - "short": "<1M sats", - "long": "Under 1M Sats", - }, - "_10m_sats": { - "id": "under_10m_sats", - "short": "<0.1 BTC", - "long": "Under 0.1 BTC", - }, - "_1btc": {"id": "under_1btc", "short": "<1 BTC", "long": "Under 1 BTC"}, - "_10btc": {"id": "under_10btc", "short": "<10 BTC", "long": "Under 10 BTC"}, - "_100btc": {"id": "under_100btc", "short": "<100 BTC", "long": "Under 100 BTC"}, - "_1k_btc": {"id": "under_1k_btc", "short": "<1k BTC", "long": "Under 1K BTC"}, - "_10k_btc": { - "id": "under_10k_btc", - "short": "<10k BTC", - "long": "Under 10K BTC", - }, - "_100k_btc": { - "id": "under_100k_btc", - "short": "<100k BTC", - "long": "Under 100K BTC", - }, + "_10sats": { + "id": "under_10sats", + "short": "<10 sats", + "long": "Under 10 Sats" + }, + "_100sats": { + "id": "under_100sats", + "short": "<100 sats", + "long": "Under 100 Sats" + }, + "_1k_sats": { + "id": "under_1k_sats", + "short": "<1k sats", + "long": "Under 1K Sats" + }, + "_10k_sats": { + "id": "under_10k_sats", + "short": "<10k sats", + "long": "Under 10K Sats" + }, + "_100k_sats": { + "id": "under_100k_sats", + "short": "<100k sats", + "long": "Under 100K Sats" + }, + "_1m_sats": { + "id": "under_1m_sats", + "short": "<1M sats", + "long": "Under 1M Sats" + }, + "_10m_sats": { + "id": "under_10m_sats", + "short": "<0.1 BTC", + "long": "Under 0.1 BTC" + }, + "_1btc": { + "id": "under_1btc", + "short": "<1 BTC", + "long": "Under 1 BTC" + }, + "_10btc": { + "id": "under_10btc", + "short": "<10 BTC", + "long": "Under 10 BTC" + }, + "_100btc": { + "id": "under_100btc", + "short": "<100 BTC", + "long": "Under 100 BTC" + }, + "_1k_btc": { + "id": "under_1k_btc", + "short": "<1k BTC", + "long": "Under 1K BTC" + }, + "_10k_btc": { + "id": "under_10k_btc", + "short": "<10k BTC", + "long": "Under 10K BTC" + }, + "_100k_btc": { + "id": "under_100k_btc", + "short": "<100k BTC", + "long": "Under 100K BTC" + } } - def __init__(self, base_url: str = "http://localhost:3000", timeout: float = 30.0): + def __init__(self, base_url: str = 'http://localhost:3000', timeout: float = 30.0): super().__init__(base_url, timeout) self.tree = CatalogTree(self) @@ -7305,368 +5318,308 @@ class BrkClient(BrkClientBase): """Address information. Retrieve comprehensive information about a Bitcoin address including balance, transaction history, UTXOs, and estimated investment metrics. Supports all standard Bitcoin address types (P2PKH, P2SH, P2WPKH, P2WSH, P2TR, etc.).""" - return self.get(f"/api/address/{address}") + return self.get(f'/api/address/{address}') - def get_address_txs( - self, - address: Address, - after_txid: Optional[str] = None, - limit: Optional[int] = None, - ) -> List[Txid]: + def get_address_txs(self, address: Address, after_txid: Optional[str] = None, limit: Optional[float] = None) -> List[Txid]: """Address transaction IDs. Get transaction IDs for an address, newest first. Use after_txid for pagination.""" params = [] - if after_txid is not None: - params.append(f"after_txid={after_txid}") - if limit is not None: - params.append(f"limit={limit}") - query = "&".join(params) - return self.get(f"/api/address/{address}/txs{'?' + query if query else ''}") + if after_txid is not None: params.append(f'after_txid={after_txid}') + if limit is not None: params.append(f'limit={limit}') + query = '&'.join(params) + return self.get(f'/api/address/{address}/txs{"?" + query if query else ""}') - def get_address_txs_chain( - self, - address: Address, - after_txid: Optional[str] = None, - limit: Optional[int] = None, - ) -> List[Txid]: + def get_address_txs_chain(self, address: Address, after_txid: Optional[str] = None, limit: Optional[float] = None) -> List[Txid]: """Address confirmed transactions. Get confirmed transaction IDs for an address, 25 per page. Use ?after_txid= for pagination.""" params = [] - if after_txid is not None: - params.append(f"after_txid={after_txid}") - if limit is not None: - params.append(f"limit={limit}") - query = "&".join(params) - return self.get( - f"/api/address/{address}/txs/chain{'?' + query if query else ''}" - ) + if after_txid is not None: params.append(f'after_txid={after_txid}') + if limit is not None: params.append(f'limit={limit}') + query = '&'.join(params) + return self.get(f'/api/address/{address}/txs/chain{"?" + query if query else ""}') def get_address_txs_mempool(self, address: Address) -> List[Txid]: """Address mempool transactions. Get unconfirmed transaction IDs for an address from the mempool (up to 50).""" - return self.get(f"/api/address/{address}/txs/mempool") + return self.get(f'/api/address/{address}/txs/mempool') def get_address_utxo(self, address: Address) -> List[Utxo]: """Address UTXOs. Get unspent transaction outputs for an address.""" - return self.get(f"/api/address/{address}/utxo") + return self.get(f'/api/address/{address}/utxo') def get_block_height(self, height: Height) -> BlockInfo: """Block by height. Retrieve block information by block height. Returns block metadata including hash, timestamp, difficulty, size, weight, and transaction count.""" - return self.get(f"/api/block-height/{height}") + return self.get(f'/api/block-height/{height}') def get_block_by_hash(self, hash: BlockHash) -> BlockInfo: """Block information. Retrieve block information by block hash. Returns block metadata including height, timestamp, difficulty, size, weight, and transaction count.""" - return self.get(f"/api/block/{hash}") + return self.get(f'/api/block/{hash}') - def get_block_by_hash_raw(self, hash: BlockHash) -> List[int]: + def get_block_by_hash_raw(self, hash: BlockHash) -> List[float]: """Raw block. Returns the raw block data in binary format.""" - return self.get(f"/api/block/{hash}/raw") + return self.get(f'/api/block/{hash}/raw') def get_block_by_hash_status(self, hash: BlockHash) -> BlockStatus: """Block status. Retrieve the status of a block. Returns whether the block is in the best chain and, if so, its height and the hash of the next block.""" - return self.get(f"/api/block/{hash}/status") + return self.get(f'/api/block/{hash}/status') def get_block_by_hash_txid_by_index(self, hash: BlockHash, index: TxIndex) -> Txid: """Transaction ID at index. Retrieve a single transaction ID at a specific index within a block. Returns plain text txid.""" - return self.get(f"/api/block/{hash}/txid/{index}") + return self.get(f'/api/block/{hash}/txid/{index}') def get_block_by_hash_txids(self, hash: BlockHash) -> List[Txid]: """Block transaction IDs. Retrieve all transaction IDs in a block by block hash.""" - return self.get(f"/api/block/{hash}/txids") + return self.get(f'/api/block/{hash}/txids') - def get_block_by_hash_txs_by_start_index( - self, hash: BlockHash, start_index: TxIndex - ) -> List[Transaction]: + def get_block_by_hash_txs_by_start_index(self, hash: BlockHash, start_index: TxIndex) -> List[Transaction]: """Block transactions (paginated). Retrieve transactions in a block by block hash, starting from the specified index. Returns up to 25 transactions at a time.""" - return self.get(f"/api/block/{hash}/txs/{start_index}") + return self.get(f'/api/block/{hash}/txs/{start_index}') def get_blocks(self) -> List[BlockInfo]: """Recent blocks. Retrieve the last 10 blocks. Returns block metadata for each block.""" - return self.get("/api/blocks") + return self.get('/api/blocks') def get_blocks_by_height(self, height: Height) -> List[BlockInfo]: """Blocks from height. Retrieve up to 10 blocks going backwards from the given height. For example, height=100 returns blocks 100, 99, 98, ..., 91. Height=0 returns only block 0.""" - return self.get(f"/api/blocks/{height}") + return self.get(f'/api/blocks/{height}') def get_mempool_info(self) -> MempoolInfo: """Mempool statistics. Get current mempool statistics including transaction count, total vsize, and total fees.""" - return self.get("/api/mempool/info") + return self.get('/api/mempool/info') def get_mempool_txids(self) -> List[Txid]: """Mempool transaction IDs. Get all transaction IDs currently in the mempool.""" - return self.get("/api/mempool/txids") + return self.get('/api/mempool/txids') def get_metric(self, metric: Metric) -> List[Index]: """Get supported indexes for a metric. Returns the list of indexes are supported by the specified metric. For example, `realized_price` might be available on dateindex, weekindex, and monthindex.""" - return self.get(f"/api/metric/{metric}") + return self.get(f'/api/metric/{metric}') - def get_metric_by_index( - self, - index: Index, - metric: Metric, - count: Optional[Any] = None, - format: Optional[Format] = None, - from_: Optional[Any] = None, - to: Optional[Any] = None, - ) -> AnyMetricData: + def get_metric_by_index(self, index: Index, metric: Metric, count: Optional[Any] = None, format: Optional[Format] = None, from_: Optional[Any] = None, to: Optional[Any] = None) -> AnyMetricData: """Get metric data. Fetch data for a specific metric at the given index. Use query parameters to filter by date range and format (json/csv).""" params = [] - if count is not None: - params.append(f"count={count}") - if format is not None: - params.append(f"format={format}") - if from_ is not None: - params.append(f"from={from_}") - if to is not None: - params.append(f"to={to}") - query = "&".join(params) - return self.get(f"/api/metric/{metric}/{index}{'?' + query if query else ''}") + if count is not None: params.append(f'count={count}') + if format is not None: params.append(f'format={format}') + if from_ is not None: params.append(f'from={from_}') + if to is not None: params.append(f'to={to}') + query = '&'.join(params) + return self.get(f'/api/metric/{metric}/{index}{"?" + query if query else ""}') - def get_metrics_bulk( - self, - index: Index, - metrics: Metrics, - count: Optional[Any] = None, - format: Optional[Format] = None, - from_: Optional[Any] = None, - to: Optional[Any] = None, - ) -> List[AnyMetricData]: + def get_metrics_bulk(self, index: Index, metrics: Metrics, count: Optional[Any] = None, format: Optional[Format] = None, from_: Optional[Any] = None, to: Optional[Any] = None) -> List[AnyMetricData]: """Bulk metric data. Fetch multiple metrics in a single request. Supports filtering by index and date range. Returns an array of MetricData objects.""" params = [] - if count is not None: - params.append(f"count={count}") - if format is not None: - params.append(f"format={format}") - if from_ is not None: - params.append(f"from={from_}") - params.append(f"index={index}") - params.append(f"metrics={metrics}") - if to is not None: - params.append(f"to={to}") - query = "&".join(params) - return self.get(f"/api/metrics/bulk{'?' + query if query else ''}") + if count is not None: params.append(f'count={count}') + if format is not None: params.append(f'format={format}') + if from_ is not None: params.append(f'from={from_}') + params.append(f'index={index}') + params.append(f'metrics={metrics}') + if to is not None: params.append(f'to={to}') + query = '&'.join(params) + return self.get(f'/api/metrics/bulk{"?" + query if query else ""}') def get_metrics_catalog(self) -> TreeNode: """Metrics catalog. Returns the complete hierarchical catalog of available metrics organized as a tree structure. Metrics are grouped by categories and subcategories. Best viewed in an interactive JSON viewer (e.g., Firefox's built-in JSON viewer) for easy navigation of the nested structure.""" - return self.get("/api/metrics/catalog") + return self.get('/api/metrics/catalog') def get_metrics_count(self) -> List[MetricCount]: """Metric count. Current metric count""" - return self.get("/api/metrics/count") + return self.get('/api/metrics/count') def get_metrics_indexes(self) -> List[IndexInfo]: """List available indexes. Returns all available indexes with their accepted query aliases. Use any alias when querying metrics.""" - return self.get("/api/metrics/indexes") + return self.get('/api/metrics/indexes') def get_metrics_list(self, page: Optional[Any] = None) -> PaginatedMetrics: """Metrics list. Paginated list of available metrics""" params = [] - if page is not None: - params.append(f"page={page}") - query = "&".join(params) - return self.get(f"/api/metrics/list{'?' + query if query else ''}") + if page is not None: params.append(f'page={page}') + query = '&'.join(params) + return self.get(f'/api/metrics/list{"?" + query if query else ""}') - def get_metrics_search_by_metric( - self, metric: Metric, limit: Optional[Limit] = None - ) -> List[Metric]: + def get_metrics_search_by_metric(self, metric: Metric, limit: Optional[Limit] = None) -> List[Metric]: """Search metrics. Fuzzy search for metrics by name. Supports partial matches and typos.""" params = [] - if limit is not None: - params.append(f"limit={limit}") - query = "&".join(params) - return self.get(f"/api/metrics/search/{metric}{'?' + query if query else ''}") + if limit is not None: params.append(f'limit={limit}') + query = '&'.join(params) + return self.get(f'/api/metrics/search/{metric}{"?" + query if query else ""}') def get_tx_by_txid(self, txid: Txid) -> Transaction: """Transaction information. Retrieve complete transaction data by transaction ID (txid). Returns the full transaction details including inputs, outputs, and metadata. The transaction data is read directly from the blockchain data files.""" - return self.get(f"/api/tx/{txid}") + return self.get(f'/api/tx/{txid}') def get_tx_by_txid_hex(self, txid: Txid) -> Hex: """Transaction hex. Retrieve the raw transaction as a hex-encoded string. Returns the serialized transaction in hexadecimal format.""" - return self.get(f"/api/tx/{txid}/hex") + return self.get(f'/api/tx/{txid}/hex') def get_tx_by_txid_outspend_by_vout(self, txid: Txid, vout: Vout) -> TxOutspend: """Output spend status. Get the spending status of a transaction output. Returns whether the output has been spent and, if so, the spending transaction details.""" - return self.get(f"/api/tx/{txid}/outspend/{vout}") + return self.get(f'/api/tx/{txid}/outspend/{vout}') def get_tx_by_txid_outspends(self, txid: Txid) -> List[TxOutspend]: """All output spend statuses. Get the spending status of all outputs in a transaction. Returns an array with the spend status for each output.""" - return self.get(f"/api/tx/{txid}/outspends") + return self.get(f'/api/tx/{txid}/outspends') def get_tx_by_txid_status(self, txid: Txid) -> TxStatus: """Transaction status. Retrieve the confirmation status of a transaction. Returns whether the transaction is confirmed and, if so, the block height, hash, and timestamp.""" - return self.get(f"/api/tx/{txid}/status") + return self.get(f'/api/tx/{txid}/status') def get_v1_difficulty_adjustment(self) -> DifficultyAdjustment: """Difficulty adjustment. Get current difficulty adjustment information including progress through the current epoch, estimated retarget date, and difficulty change prediction.""" - return self.get("/api/v1/difficulty-adjustment") + return self.get('/api/v1/difficulty-adjustment') def get_v1_fees_mempool_blocks(self) -> List[MempoolBlock]: """Projected mempool blocks. Get projected blocks from the mempool for fee estimation. Each block contains statistics about transactions that would be included if a block were mined now.""" - return self.get("/api/v1/fees/mempool-blocks") + return self.get('/api/v1/fees/mempool-blocks') def get_v1_fees_recommended(self) -> RecommendedFees: """Recommended fees. Get recommended fee rates for different confirmation targets based on current mempool state.""" - return self.get("/api/v1/fees/recommended") + return self.get('/api/v1/fees/recommended') - def get_v1_mining_blocks_fees_by_time_period( - self, time_period: TimePeriod - ) -> List[BlockFeesEntry]: + def get_v1_mining_blocks_fees_by_time_period(self, time_period: TimePeriod) -> List[BlockFeesEntry]: """Block fees. Get average block fees for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y""" - return self.get(f"/api/v1/mining/blocks/fees/{time_period}") + return self.get(f'/api/v1/mining/blocks/fees/{time_period}') - def get_v1_mining_blocks_rewards_by_time_period( - self, time_period: TimePeriod - ) -> List[BlockRewardsEntry]: + def get_v1_mining_blocks_rewards_by_time_period(self, time_period: TimePeriod) -> List[BlockRewardsEntry]: """Block rewards. Get average block rewards (coinbase = subsidy + fees) for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y""" - return self.get(f"/api/v1/mining/blocks/rewards/{time_period}") + return self.get(f'/api/v1/mining/blocks/rewards/{time_period}') - def get_v1_mining_blocks_sizes_weights_by_time_period( - self, time_period: TimePeriod - ) -> BlockSizesWeights: + def get_v1_mining_blocks_sizes_weights_by_time_period(self, time_period: TimePeriod) -> BlockSizesWeights: """Block sizes and weights. Get average block sizes and weights for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y""" - return self.get(f"/api/v1/mining/blocks/sizes-weights/{time_period}") + return self.get(f'/api/v1/mining/blocks/sizes-weights/{time_period}') def get_v1_mining_blocks_timestamp(self, timestamp: Timestamp) -> BlockTimestamp: """Block by timestamp. Find the block closest to a given UNIX timestamp.""" - return self.get(f"/api/v1/mining/blocks/timestamp/{timestamp}") + return self.get(f'/api/v1/mining/blocks/timestamp/{timestamp}') def get_v1_mining_difficulty_adjustments(self) -> List[DifficultyAdjustmentEntry]: """Difficulty adjustments (all time). Get historical difficulty adjustments. Returns array of [timestamp, height, difficulty, change_percent].""" - return self.get("/api/v1/mining/difficulty-adjustments") + return self.get('/api/v1/mining/difficulty-adjustments') - def get_v1_mining_difficulty_adjustments_by_time_period( - self, time_period: TimePeriod - ) -> List[DifficultyAdjustmentEntry]: + def get_v1_mining_difficulty_adjustments_by_time_period(self, time_period: TimePeriod) -> List[DifficultyAdjustmentEntry]: """Difficulty adjustments. Get historical difficulty adjustments for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y. Returns array of [timestamp, height, difficulty, change_percent].""" - return self.get(f"/api/v1/mining/difficulty-adjustments/{time_period}") + return self.get(f'/api/v1/mining/difficulty-adjustments/{time_period}') def get_v1_mining_hashrate(self) -> HashrateSummary: """Network hashrate (all time). Get network hashrate and difficulty data for all time.""" - return self.get("/api/v1/mining/hashrate") + return self.get('/api/v1/mining/hashrate') - def get_v1_mining_hashrate_by_time_period( - self, time_period: TimePeriod - ) -> HashrateSummary: + def get_v1_mining_hashrate_by_time_period(self, time_period: TimePeriod) -> HashrateSummary: """Network hashrate. Get network hashrate and difficulty data for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y""" - return self.get(f"/api/v1/mining/hashrate/{time_period}") + return self.get(f'/api/v1/mining/hashrate/{time_period}') def get_v1_mining_pool_by_slug(self, slug: PoolSlug) -> PoolDetail: """Mining pool details. Get detailed information about a specific mining pool including block counts and shares for different time periods.""" - return self.get(f"/api/v1/mining/pool/{slug}") + return self.get(f'/api/v1/mining/pool/{slug}') def get_v1_mining_pools(self) -> List[PoolInfo]: """List all mining pools. Get list of all known mining pools with their identifiers.""" - return self.get("/api/v1/mining/pools") + return self.get('/api/v1/mining/pools') - def get_v1_mining_pools_by_time_period( - self, time_period: TimePeriod - ) -> PoolsSummary: + def get_v1_mining_pools_by_time_period(self, time_period: TimePeriod) -> PoolsSummary: """Mining pool statistics. Get mining pool statistics for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y""" - return self.get(f"/api/v1/mining/pools/{time_period}") + return self.get(f'/api/v1/mining/pools/{time_period}') - def get_v1_mining_reward_stats_by_block_count( - self, block_count: int - ) -> RewardStats: + def get_v1_mining_reward_stats_by_block_count(self, block_count: float) -> RewardStats: """Mining reward statistics. Get mining reward statistics for the last N blocks including total rewards, fees, and transaction count.""" - return self.get(f"/api/v1/mining/reward-stats/{block_count}") + return self.get(f'/api/v1/mining/reward-stats/{block_count}') def get_v1_validate_address(self, address: str) -> AddressValidation: """Validate address. Validate a Bitcoin address and get information about its type and scriptPubKey.""" - return self.get(f"/api/v1/validate-address/{address}") + return self.get(f'/api/v1/validate-address/{address}') def get_health(self) -> Health: """Health check. Returns the health status of the API server""" - return self.get("/health") + return self.get('/health') def get_version(self) -> str: """API version. Returns the current version of the API server""" - return self.get("/version") + return self.get('/version') diff --git a/packages/brk_client/scripts/publish.sh b/packages/brk_client/scripts/publish.sh index 963a20dad..7e1ccd99b 100755 --- a/packages/brk_client/scripts/publish.sh +++ b/packages/brk_client/scripts/publish.sh @@ -1,2 +1,3 @@ +uvx pydoc-markdown > DOCS.md uv build uvx uv-publish diff --git a/scripts/publish-all.sh b/scripts/publish-all.sh index 668385f77..d6ac087de 100755 --- a/scripts/publish-all.sh +++ b/scripts/publish-all.sh @@ -32,7 +32,7 @@ npm publish --access public echo "" echo "=== Python package ===" cd "$ROOT_DIR/packages/brk_client" -uv run pydoc-markdown > docs/API.md +uvx pydoc-markdown > docs/API.md uv build uv publish diff --git a/websites/bitview/index.html b/websites/bitview/index.html index 0601452e9..9f95182cb 100644 --- a/websites/bitview/index.html +++ b/websites/bitview/index.html @@ -1563,8 +1563,9 @@ - - + + + @@ -1633,8 +1634,9 @@ "/scripts/entry.js": "/scripts/entry.fe229b42.js", "/scripts/lazy.js": "/scripts/lazy.1ae52534.js", "/scripts/main.js": "/scripts/main.22a5bd79.js", - "/scripts/modules/brk-client/index.js": "/scripts/modules/brk-client/index.d7a5bd12.js", - "/scripts/modules/brk-client/test.js": "/scripts/modules/brk-client/test.119c2b6e.js", + "/scripts/modules/brk-client/index.js": "/scripts/modules/brk-client/index.469dfd9f.js", + "/scripts/modules/brk-client/tests/basic.js": "/scripts/modules/brk-client/tests/basic.b92ff866.js", + "/scripts/modules/brk-client/tests/tree.js": "/scripts/modules/brk-client/tests/tree.ba9474f7.js", "/scripts/modules/lean-qr/2.6.1/index.mjs": "/scripts/modules/lean-qr/2.6.1/index.09195c13.mjs", "/scripts/modules/leeoniya-ufuzzy/1.0.19/dist/uFuzzy.mjs": "/scripts/modules/leeoniya-ufuzzy/1.0.19/dist/uFuzzy.803b7fb0.mjs", "/scripts/modules/lightweight-charts/5.0.9/dist/lightweight-charts.standalone.production.mjs": "/scripts/modules/lightweight-charts/5.0.9/dist/lightweight-charts.standalone.production.1e264451.mjs",