From 93e02aed44804ed84ec86110ae6e2b95156ff4ef Mon Sep 17 00:00:00 2001 From: nym21 Date: Sat, 17 Jan 2026 23:40:18 +0100 Subject: [PATCH] client: fix minreq feat + publish: add full workspace check --- Cargo.toml | 2 +- crates/brk_client/src/lib.rs | 3597 ++++++++++++++++++++++++++++------ scripts/release.sh | 4 + 3 files changed, 2949 insertions(+), 654 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a0f8d58f8..c7bfd6148 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,7 +66,7 @@ color-eyre = "0.6.5" derive_more = { version = "2.1.1", features = ["deref", "deref_mut"] } fjall = "3.0.1" jiff = { version = "0.2.18", features = ["perf-inline", "tz-system"], default-features = false } -minreq = { version = "2.14.1", features = ["https", "serde_json"] } +minreq = { version = "2.14.1", features = ["https", "json-using-serde"] } parking_lot = "0.12.5" rayon = "1.11.0" rustc-hash = "2.1.1" diff --git a/crates/brk_client/src/lib.rs b/crates/brk_client/src/lib.rs index 3e433a486..3bbf4c25b 100644 --- a/crates/brk_client/src/lib.rs +++ b/crates/brk_client/src/lib.rs @@ -7,12 +7,11 @@ #![allow(clippy::useless_format)] #![allow(clippy::unnecessary_to_owned)] -use std::sync::Arc; -use std::ops::{Bound, RangeBounds}; -use serde::de::DeserializeOwned; pub use brk_cohort::*; pub use brk_types::*; - +use serde::de::DeserializeOwned; +use std::ops::{Bound, RangeBounds}; +use std::sync::Arc; /// Error type for BRK client operations. #[derive(Debug)] @@ -77,7 +76,9 @@ 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 { @@ -90,9 +91,9 @@ impl BrkClientBase { /// Make a GET request and deserialize JSON response. pub fn get_json(&self, path: &str) -> Result { - self.get(path)? - .json() - .map_err(|e| BrkError { message: e.to_string() }) + self.get(path)?.json().map_err(|e| BrkError { + message: e.to_string(), + }) } /// Make a GET request and return raw text response. @@ -100,25 +101,34 @@ impl BrkClientBase { self.get(path)? .as_str() .map(|s| s.to_string()) - .map_err(|e| BrkError { message: e.to_string() }) + .map_err(|e| BrkError { + message: e.to_string(), + }) } } /// Build metric name with suffix. #[inline] fn _m(acc: &str, s: &str) -> String { - if s.is_empty() { acc.to_string() } - else if acc.is_empty() { s.to_string() } - else { format!("{acc}_{s}") } + if s.is_empty() { + acc.to_string() + } else if acc.is_empty() { + s.to_string() + } else { + format!("{acc}_{s}") + } } /// Build metric name with prefix. #[inline] fn _p(prefix: &str, acc: &str) -> String { - if acc.is_empty() { prefix.to_string() } else { format!("{prefix}_{acc}") } + if acc.is_empty() { + prefix.to_string() + } else { + format!("{prefix}_{acc}") + } } - /// Non-generic trait for metric patterns (usable in collections). pub trait AnyMetricPattern { /// Get the metric name. @@ -134,7 +144,6 @@ pub trait MetricPattern: AnyMetricPattern { fn get(&self, index: Index) -> Option>; } - /// Shared endpoint configuration. #[derive(Clone)] struct EndpointConfig { @@ -147,7 +156,13 @@ struct EndpointConfig { impl EndpointConfig { fn new(client: Arc, name: Arc, index: Index) -> Self { - Self { client, name, index, start: None, end: None } + Self { + client, + name, + index, + start: None, + end: None, + } } fn path(&self) -> String { @@ -156,11 +171,21 @@ impl EndpointConfig { fn build_path(&self, format: Option<&str>) -> String { let mut params = Vec::new(); - if let Some(s) = self.start { params.push(format!("start={}", s)); } - if let Some(e) = self.end { params.push(format!("end={}", e)); } - if let Some(fmt) = format { params.push(format!("format={}", fmt)); } + if let Some(s) = self.start { + params.push(format!("start={}", s)); + } + if let Some(e) = self.end { + params.push(format!("end={}", e)); + } + if let Some(fmt) = format { + params.push(format!("format={}", fmt)); + } let p = self.path(); - if params.is_empty() { p } else { format!("{}?{}", p, params.join("&")) } + if params.is_empty() { + p + } else { + format!("{}?{}", p, params.join("&")) + } } fn get_json(&self, format: Option<&str>) -> Result { @@ -206,14 +231,20 @@ pub struct MetricEndpointBuilder { impl MetricEndpointBuilder { pub fn new(client: Arc, name: Arc, index: Index) -> Self { - Self { config: EndpointConfig::new(client, name, index), _marker: std::marker::PhantomData } + Self { + config: EndpointConfig::new(client, name, index), + _marker: std::marker::PhantomData, + } } /// Select a specific index position. pub fn get(mut self, index: usize) -> SingleItemBuilder { self.config.start = Some(index as i64); self.config.end = Some(index as i64 + 1); - SingleItemBuilder { config: self.config, _marker: std::marker::PhantomData } + SingleItemBuilder { + config: self.config, + _marker: std::marker::PhantomData, + } } /// Select a range using Rust range syntax. @@ -235,7 +266,10 @@ impl MetricEndpointBuilder { Bound::Excluded(&n) => Some(n as i64), Bound::Unbounded => None, }; - RangeBuilder { config: self.config, _marker: std::marker::PhantomData } + RangeBuilder { + config: self.config, + _marker: std::marker::PhantomData, + } } /// Take the first n items. @@ -250,13 +284,19 @@ impl MetricEndpointBuilder { } else { self.config.start = Some(-(n as i64)); } - RangeBuilder { config: self.config, _marker: std::marker::PhantomData } + RangeBuilder { + config: self.config, + _marker: std::marker::PhantomData, + } } /// Skip the first n items. Chain with `take(n)` to get a range. pub fn skip(mut self, n: usize) -> SkippedBuilder { self.config.start = Some(n as i64); - SkippedBuilder { config: self.config, _marker: std::marker::PhantomData } + SkippedBuilder { + config: self.config, + _marker: std::marker::PhantomData, + } } /// Fetch all data as parsed JSON. @@ -304,7 +344,10 @@ impl SkippedBuilder { pub fn take(mut self, n: usize) -> RangeBuilder { let start = self.config.start.unwrap_or(0); self.config.end = Some(start + n as i64); - RangeBuilder { config: self.config, _marker: std::marker::PhantomData } + RangeBuilder { + config: self.config, + _marker: std::marker::PhantomData, + } } /// Fetch from the skipped position to the end. @@ -336,12 +379,47 @@ impl RangeBuilder { } } - // Static index arrays -const _I1: &[Index] = &[Index::DateIndex, Index::DecadeIndex, Index::DifficultyEpoch, Index::Height, Index::MonthIndex, Index::QuarterIndex, Index::SemesterIndex, Index::WeekIndex, Index::YearIndex]; -const _I2: &[Index] = &[Index::DateIndex, Index::DecadeIndex, Index::DifficultyEpoch, Index::MonthIndex, Index::QuarterIndex, Index::SemesterIndex, Index::WeekIndex, Index::YearIndex]; -const _I3: &[Index] = &[Index::DateIndex, Index::DecadeIndex, Index::Height, Index::MonthIndex, Index::QuarterIndex, Index::SemesterIndex, Index::WeekIndex, Index::YearIndex]; -const _I4: &[Index] = &[Index::DateIndex, Index::DecadeIndex, Index::MonthIndex, Index::QuarterIndex, Index::SemesterIndex, Index::WeekIndex, Index::YearIndex]; +const _I1: &[Index] = &[ + Index::DateIndex, + Index::DecadeIndex, + Index::DifficultyEpoch, + Index::Height, + Index::MonthIndex, + Index::QuarterIndex, + Index::SemesterIndex, + Index::WeekIndex, + Index::YearIndex, +]; +const _I2: &[Index] = &[ + Index::DateIndex, + Index::DecadeIndex, + Index::DifficultyEpoch, + Index::MonthIndex, + Index::QuarterIndex, + Index::SemesterIndex, + Index::WeekIndex, + Index::YearIndex, +]; +const _I3: &[Index] = &[ + Index::DateIndex, + Index::DecadeIndex, + Index::Height, + Index::MonthIndex, + Index::QuarterIndex, + Index::SemesterIndex, + Index::WeekIndex, + Index::YearIndex, +]; +const _I4: &[Index] = &[ + Index::DateIndex, + Index::DecadeIndex, + Index::MonthIndex, + Index::QuarterIndex, + Index::SemesterIndex, + Index::WeekIndex, + Index::YearIndex, +]; const _I5: &[Index] = &[Index::DateIndex, Index::Height]; const _I6: &[Index] = &[Index::DateIndex]; const _I7: &[Index] = &[Index::DecadeIndex]; @@ -373,502 +451,1653 @@ const _I32: &[Index] = &[Index::EmptyAddressIndex]; const _I33: &[Index] = &[Index::PairOutputIndex]; #[inline] -fn _ep(c: &Arc, n: &Arc, i: Index) -> MetricEndpointBuilder { +fn _ep( + c: &Arc, + n: &Arc, + i: Index, +) -> MetricEndpointBuilder { MetricEndpointBuilder::new(c.clone(), n.clone(), i) } // Index accessor structs -pub struct MetricPattern1By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern1By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern1By { - pub fn dateindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DateIndex) } - pub fn decadeindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DecadeIndex) } - pub fn difficultyepoch(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DifficultyEpoch) } - pub fn height(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::Height) } - pub fn monthindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::MonthIndex) } - pub fn quarterindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::QuarterIndex) } - pub fn semesterindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::SemesterIndex) } - pub fn weekindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::WeekIndex) } - pub fn yearindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::YearIndex) } + pub fn dateindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DateIndex) + } + pub fn decadeindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DecadeIndex) + } + pub fn difficultyepoch(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DifficultyEpoch) + } + pub fn height(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::Height) + } + pub fn monthindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::MonthIndex) + } + pub fn quarterindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::QuarterIndex) + } + pub fn semesterindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::SemesterIndex) + } + pub fn weekindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::WeekIndex) + } + pub fn yearindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::YearIndex) + } } -pub struct MetricPattern1 { name: Arc, pub by: MetricPattern1By } +pub struct MetricPattern1 { + name: Arc, + pub by: MetricPattern1By, +} impl MetricPattern1 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern1By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern1By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern1 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I1 } } -impl MetricPattern for MetricPattern1 { fn get(&self, index: Index) -> Option> { _I1.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern1 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I1 + } +} +impl MetricPattern for MetricPattern1 { + fn get(&self, index: Index) -> Option> { + _I1.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern2By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern2By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern2By { - pub fn dateindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DateIndex) } - pub fn decadeindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DecadeIndex) } - pub fn difficultyepoch(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DifficultyEpoch) } - pub fn monthindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::MonthIndex) } - pub fn quarterindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::QuarterIndex) } - pub fn semesterindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::SemesterIndex) } - pub fn weekindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::WeekIndex) } - pub fn yearindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::YearIndex) } + pub fn dateindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DateIndex) + } + pub fn decadeindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DecadeIndex) + } + pub fn difficultyepoch(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DifficultyEpoch) + } + pub fn monthindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::MonthIndex) + } + pub fn quarterindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::QuarterIndex) + } + pub fn semesterindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::SemesterIndex) + } + pub fn weekindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::WeekIndex) + } + pub fn yearindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::YearIndex) + } } -pub struct MetricPattern2 { name: Arc, pub by: MetricPattern2By } +pub struct MetricPattern2 { + name: Arc, + pub by: MetricPattern2By, +} impl MetricPattern2 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern2By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern2By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern2 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I2 } } -impl MetricPattern for MetricPattern2 { fn get(&self, index: Index) -> Option> { _I2.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern2 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I2 + } +} +impl MetricPattern for MetricPattern2 { + fn get(&self, index: Index) -> Option> { + _I2.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern3By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern3By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern3By { - pub fn dateindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DateIndex) } - pub fn decadeindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DecadeIndex) } - pub fn height(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::Height) } - pub fn monthindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::MonthIndex) } - pub fn quarterindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::QuarterIndex) } - pub fn semesterindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::SemesterIndex) } - pub fn weekindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::WeekIndex) } - pub fn yearindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::YearIndex) } + pub fn dateindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DateIndex) + } + pub fn decadeindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DecadeIndex) + } + pub fn height(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::Height) + } + pub fn monthindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::MonthIndex) + } + pub fn quarterindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::QuarterIndex) + } + pub fn semesterindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::SemesterIndex) + } + pub fn weekindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::WeekIndex) + } + pub fn yearindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::YearIndex) + } } -pub struct MetricPattern3 { name: Arc, pub by: MetricPattern3By } +pub struct MetricPattern3 { + name: Arc, + pub by: MetricPattern3By, +} impl MetricPattern3 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern3By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern3By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern3 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I3 } } -impl MetricPattern for MetricPattern3 { fn get(&self, index: Index) -> Option> { _I3.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern3 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I3 + } +} +impl MetricPattern for MetricPattern3 { + fn get(&self, index: Index) -> Option> { + _I3.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern4By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern4By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern4By { - pub fn dateindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DateIndex) } - pub fn decadeindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DecadeIndex) } - pub fn monthindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::MonthIndex) } - pub fn quarterindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::QuarterIndex) } - pub fn semesterindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::SemesterIndex) } - pub fn weekindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::WeekIndex) } - pub fn yearindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::YearIndex) } + pub fn dateindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DateIndex) + } + pub fn decadeindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DecadeIndex) + } + pub fn monthindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::MonthIndex) + } + pub fn quarterindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::QuarterIndex) + } + pub fn semesterindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::SemesterIndex) + } + pub fn weekindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::WeekIndex) + } + pub fn yearindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::YearIndex) + } } -pub struct MetricPattern4 { name: Arc, pub by: MetricPattern4By } +pub struct MetricPattern4 { + name: Arc, + pub by: MetricPattern4By, +} impl MetricPattern4 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern4By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern4By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern4 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I4 } } -impl MetricPattern for MetricPattern4 { fn get(&self, index: Index) -> Option> { _I4.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern4 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I4 + } +} +impl MetricPattern for MetricPattern4 { + fn get(&self, index: Index) -> Option> { + _I4.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern5By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern5By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern5By { - pub fn dateindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DateIndex) } - pub fn height(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::Height) } + pub fn dateindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DateIndex) + } + pub fn height(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::Height) + } } -pub struct MetricPattern5 { name: Arc, pub by: MetricPattern5By } +pub struct MetricPattern5 { + name: Arc, + pub by: MetricPattern5By, +} impl MetricPattern5 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern5By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern5By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern5 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I5 } } -impl MetricPattern for MetricPattern5 { fn get(&self, index: Index) -> Option> { _I5.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern5 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I5 + } +} +impl MetricPattern for MetricPattern5 { + fn get(&self, index: Index) -> Option> { + _I5.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern6By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern6By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern6By { - pub fn dateindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DateIndex) } + pub fn dateindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DateIndex) + } } -pub struct MetricPattern6 { name: Arc, pub by: MetricPattern6By } +pub struct MetricPattern6 { + name: Arc, + pub by: MetricPattern6By, +} impl MetricPattern6 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern6By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern6By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern6 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I6 } } -impl MetricPattern for MetricPattern6 { fn get(&self, index: Index) -> Option> { _I6.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern6 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I6 + } +} +impl MetricPattern for MetricPattern6 { + fn get(&self, index: Index) -> Option> { + _I6.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern7By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern7By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern7By { - pub fn decadeindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DecadeIndex) } + pub fn decadeindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DecadeIndex) + } } -pub struct MetricPattern7 { name: Arc, pub by: MetricPattern7By } +pub struct MetricPattern7 { + name: Arc, + pub by: MetricPattern7By, +} impl MetricPattern7 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern7By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern7By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern7 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I7 } } -impl MetricPattern for MetricPattern7 { fn get(&self, index: Index) -> Option> { _I7.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern7 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I7 + } +} +impl MetricPattern for MetricPattern7 { + fn get(&self, index: Index) -> Option> { + _I7.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern8By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern8By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern8By { - pub fn difficultyepoch(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::DifficultyEpoch) } + pub fn difficultyepoch(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::DifficultyEpoch) + } } -pub struct MetricPattern8 { name: Arc, pub by: MetricPattern8By } +pub struct MetricPattern8 { + name: Arc, + pub by: MetricPattern8By, +} impl MetricPattern8 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern8By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern8By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern8 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I8 } } -impl MetricPattern for MetricPattern8 { fn get(&self, index: Index) -> Option> { _I8.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern8 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I8 + } +} +impl MetricPattern for MetricPattern8 { + fn get(&self, index: Index) -> Option> { + _I8.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern9By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern9By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern9By { - pub fn emptyoutputindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::EmptyOutputIndex) } + pub fn emptyoutputindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::EmptyOutputIndex) + } } -pub struct MetricPattern9 { name: Arc, pub by: MetricPattern9By } +pub struct MetricPattern9 { + name: Arc, + pub by: MetricPattern9By, +} impl MetricPattern9 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern9By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern9By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern9 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I9 } } -impl MetricPattern for MetricPattern9 { fn get(&self, index: Index) -> Option> { _I9.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern9 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I9 + } +} +impl MetricPattern for MetricPattern9 { + fn get(&self, index: Index) -> Option> { + _I9.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern10By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern10By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern10By { - pub fn halvingepoch(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::HalvingEpoch) } + pub fn halvingepoch(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::HalvingEpoch) + } } -pub struct MetricPattern10 { name: Arc, pub by: MetricPattern10By } +pub struct MetricPattern10 { + name: Arc, + pub by: MetricPattern10By, +} impl MetricPattern10 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern10By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern10By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern10 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I10 } } -impl MetricPattern for MetricPattern10 { fn get(&self, index: Index) -> Option> { _I10.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern10 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I10 + } +} +impl MetricPattern for MetricPattern10 { + fn get(&self, index: Index) -> Option> { + _I10.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern11By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern11By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern11By { - pub fn height(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::Height) } + pub fn height(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::Height) + } } -pub struct MetricPattern11 { name: Arc, pub by: MetricPattern11By } +pub struct MetricPattern11 { + name: Arc, + pub by: MetricPattern11By, +} impl MetricPattern11 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern11By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern11By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern11 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I11 } } -impl MetricPattern for MetricPattern11 { fn get(&self, index: Index) -> Option> { _I11.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern11 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I11 + } +} +impl MetricPattern for MetricPattern11 { + fn get(&self, index: Index) -> Option> { + _I11.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern12By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern12By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern12By { - pub fn txinindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::TxInIndex) } + pub fn txinindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::TxInIndex) + } } -pub struct MetricPattern12 { name: Arc, pub by: MetricPattern12By } +pub struct MetricPattern12 { + name: Arc, + pub by: MetricPattern12By, +} impl MetricPattern12 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern12By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern12By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern12 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I12 } } -impl MetricPattern for MetricPattern12 { fn get(&self, index: Index) -> Option> { _I12.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern12 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I12 + } +} +impl MetricPattern for MetricPattern12 { + fn get(&self, index: Index) -> Option> { + _I12.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern13By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern13By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern13By { - pub fn monthindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::MonthIndex) } + pub fn monthindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::MonthIndex) + } } -pub struct MetricPattern13 { name: Arc, pub by: MetricPattern13By } +pub struct MetricPattern13 { + name: Arc, + pub by: MetricPattern13By, +} impl MetricPattern13 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern13By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern13By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern13 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I13 } } -impl MetricPattern for MetricPattern13 { fn get(&self, index: Index) -> Option> { _I13.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern13 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I13 + } +} +impl MetricPattern for MetricPattern13 { + fn get(&self, index: Index) -> Option> { + _I13.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern14By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern14By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern14By { - pub fn opreturnindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::OpReturnIndex) } + pub fn opreturnindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::OpReturnIndex) + } } -pub struct MetricPattern14 { name: Arc, pub by: MetricPattern14By } +pub struct MetricPattern14 { + name: Arc, + pub by: MetricPattern14By, +} impl MetricPattern14 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern14By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern14By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern14 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I14 } } -impl MetricPattern for MetricPattern14 { fn get(&self, index: Index) -> Option> { _I14.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern14 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I14 + } +} +impl MetricPattern for MetricPattern14 { + fn get(&self, index: Index) -> Option> { + _I14.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern15By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern15By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern15By { - pub fn txoutindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::TxOutIndex) } + pub fn txoutindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::TxOutIndex) + } } -pub struct MetricPattern15 { name: Arc, pub by: MetricPattern15By } +pub struct MetricPattern15 { + name: Arc, + pub by: MetricPattern15By, +} impl MetricPattern15 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern15By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern15By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern15 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I15 } } -impl MetricPattern for MetricPattern15 { fn get(&self, index: Index) -> Option> { _I15.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern15 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I15 + } +} +impl MetricPattern for MetricPattern15 { + fn get(&self, index: Index) -> Option> { + _I15.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern16By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern16By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern16By { - pub fn p2aaddressindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::P2AAddressIndex) } + pub fn p2aaddressindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::P2AAddressIndex) + } } -pub struct MetricPattern16 { name: Arc, pub by: MetricPattern16By } +pub struct MetricPattern16 { + name: Arc, + pub by: MetricPattern16By, +} impl MetricPattern16 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern16By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern16By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern16 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I16 } } -impl MetricPattern for MetricPattern16 { fn get(&self, index: Index) -> Option> { _I16.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern16 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I16 + } +} +impl MetricPattern for MetricPattern16 { + fn get(&self, index: Index) -> Option> { + _I16.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern17By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern17By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern17By { - pub fn p2msoutputindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::P2MSOutputIndex) } + pub fn p2msoutputindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::P2MSOutputIndex) + } } -pub struct MetricPattern17 { name: Arc, pub by: MetricPattern17By } +pub struct MetricPattern17 { + name: Arc, + pub by: MetricPattern17By, +} impl MetricPattern17 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern17By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern17By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern17 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I17 } } -impl MetricPattern for MetricPattern17 { fn get(&self, index: Index) -> Option> { _I17.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern17 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I17 + } +} +impl MetricPattern for MetricPattern17 { + fn get(&self, index: Index) -> Option> { + _I17.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern18By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern18By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern18By { - pub fn p2pk33addressindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::P2PK33AddressIndex) } + pub fn p2pk33addressindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::P2PK33AddressIndex) + } } -pub struct MetricPattern18 { name: Arc, pub by: MetricPattern18By } +pub struct MetricPattern18 { + name: Arc, + pub by: MetricPattern18By, +} impl MetricPattern18 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern18By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern18By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern18 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I18 } } -impl MetricPattern for MetricPattern18 { fn get(&self, index: Index) -> Option> { _I18.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern18 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I18 + } +} +impl MetricPattern for MetricPattern18 { + fn get(&self, index: Index) -> Option> { + _I18.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern19By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern19By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern19By { - pub fn p2pk65addressindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::P2PK65AddressIndex) } + pub fn p2pk65addressindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::P2PK65AddressIndex) + } } -pub struct MetricPattern19 { name: Arc, pub by: MetricPattern19By } +pub struct MetricPattern19 { + name: Arc, + pub by: MetricPattern19By, +} impl MetricPattern19 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern19By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern19By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern19 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I19 } } -impl MetricPattern for MetricPattern19 { fn get(&self, index: Index) -> Option> { _I19.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern19 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I19 + } +} +impl MetricPattern for MetricPattern19 { + fn get(&self, index: Index) -> Option> { + _I19.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern20By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern20By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern20By { - pub fn p2pkhaddressindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::P2PKHAddressIndex) } + pub fn p2pkhaddressindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::P2PKHAddressIndex) + } } -pub struct MetricPattern20 { name: Arc, pub by: MetricPattern20By } +pub struct MetricPattern20 { + name: Arc, + pub by: MetricPattern20By, +} impl MetricPattern20 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern20By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern20By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern20 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I20 } } -impl MetricPattern for MetricPattern20 { fn get(&self, index: Index) -> Option> { _I20.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern20 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I20 + } +} +impl MetricPattern for MetricPattern20 { + fn get(&self, index: Index) -> Option> { + _I20.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern21By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern21By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern21By { - pub fn p2shaddressindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::P2SHAddressIndex) } + pub fn p2shaddressindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::P2SHAddressIndex) + } } -pub struct MetricPattern21 { name: Arc, pub by: MetricPattern21By } +pub struct MetricPattern21 { + name: Arc, + pub by: MetricPattern21By, +} impl MetricPattern21 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern21By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern21By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern21 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I21 } } -impl MetricPattern for MetricPattern21 { fn get(&self, index: Index) -> Option> { _I21.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern21 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I21 + } +} +impl MetricPattern for MetricPattern21 { + fn get(&self, index: Index) -> Option> { + _I21.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern22By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern22By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern22By { - pub fn p2traddressindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::P2TRAddressIndex) } + pub fn p2traddressindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::P2TRAddressIndex) + } } -pub struct MetricPattern22 { name: Arc, pub by: MetricPattern22By } +pub struct MetricPattern22 { + name: Arc, + pub by: MetricPattern22By, +} impl MetricPattern22 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern22By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern22By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern22 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I22 } } -impl MetricPattern for MetricPattern22 { fn get(&self, index: Index) -> Option> { _I22.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern22 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I22 + } +} +impl MetricPattern for MetricPattern22 { + fn get(&self, index: Index) -> Option> { + _I22.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern23By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern23By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern23By { - pub fn p2wpkhaddressindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::P2WPKHAddressIndex) } + pub fn p2wpkhaddressindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::P2WPKHAddressIndex) + } } -pub struct MetricPattern23 { name: Arc, pub by: MetricPattern23By } +pub struct MetricPattern23 { + name: Arc, + pub by: MetricPattern23By, +} impl MetricPattern23 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern23By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern23By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern23 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I23 } } -impl MetricPattern for MetricPattern23 { fn get(&self, index: Index) -> Option> { _I23.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern23 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I23 + } +} +impl MetricPattern for MetricPattern23 { + fn get(&self, index: Index) -> Option> { + _I23.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern24By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern24By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern24By { - pub fn p2wshaddressindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::P2WSHAddressIndex) } + pub fn p2wshaddressindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::P2WSHAddressIndex) + } } -pub struct MetricPattern24 { name: Arc, pub by: MetricPattern24By } +pub struct MetricPattern24 { + name: Arc, + pub by: MetricPattern24By, +} impl MetricPattern24 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern24By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern24By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern24 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I24 } } -impl MetricPattern for MetricPattern24 { fn get(&self, index: Index) -> Option> { _I24.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern24 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I24 + } +} +impl MetricPattern for MetricPattern24 { + fn get(&self, index: Index) -> Option> { + _I24.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern25By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern25By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern25By { - pub fn quarterindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::QuarterIndex) } + pub fn quarterindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::QuarterIndex) + } } -pub struct MetricPattern25 { name: Arc, pub by: MetricPattern25By } +pub struct MetricPattern25 { + name: Arc, + pub by: MetricPattern25By, +} impl MetricPattern25 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern25By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern25By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern25 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I25 } } -impl MetricPattern for MetricPattern25 { fn get(&self, index: Index) -> Option> { _I25.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern25 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I25 + } +} +impl MetricPattern for MetricPattern25 { + fn get(&self, index: Index) -> Option> { + _I25.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern26By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern26By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern26By { - pub fn semesterindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::SemesterIndex) } + pub fn semesterindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::SemesterIndex) + } } -pub struct MetricPattern26 { name: Arc, pub by: MetricPattern26By } +pub struct MetricPattern26 { + name: Arc, + pub by: MetricPattern26By, +} impl MetricPattern26 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern26By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern26By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern26 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I26 } } -impl MetricPattern for MetricPattern26 { fn get(&self, index: Index) -> Option> { _I26.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern26 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I26 + } +} +impl MetricPattern for MetricPattern26 { + fn get(&self, index: Index) -> Option> { + _I26.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern27By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern27By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern27By { - pub fn txindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::TxIndex) } + pub fn txindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::TxIndex) + } } -pub struct MetricPattern27 { name: Arc, pub by: MetricPattern27By } +pub struct MetricPattern27 { + name: Arc, + pub by: MetricPattern27By, +} impl MetricPattern27 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern27By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern27By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern27 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I27 } } -impl MetricPattern for MetricPattern27 { fn get(&self, index: Index) -> Option> { _I27.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern27 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I27 + } +} +impl MetricPattern for MetricPattern27 { + fn get(&self, index: Index) -> Option> { + _I27.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern28By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern28By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern28By { - pub fn unknownoutputindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::UnknownOutputIndex) } + pub fn unknownoutputindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::UnknownOutputIndex) + } } -pub struct MetricPattern28 { name: Arc, pub by: MetricPattern28By } +pub struct MetricPattern28 { + name: Arc, + pub by: MetricPattern28By, +} impl MetricPattern28 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern28By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern28By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern28 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I28 } } -impl MetricPattern for MetricPattern28 { fn get(&self, index: Index) -> Option> { _I28.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern28 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I28 + } +} +impl MetricPattern for MetricPattern28 { + fn get(&self, index: Index) -> Option> { + _I28.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern29By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern29By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern29By { - pub fn weekindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::WeekIndex) } + pub fn weekindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::WeekIndex) + } } -pub struct MetricPattern29 { name: Arc, pub by: MetricPattern29By } +pub struct MetricPattern29 { + name: Arc, + pub by: MetricPattern29By, +} impl MetricPattern29 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern29By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern29By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern29 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I29 } } -impl MetricPattern for MetricPattern29 { fn get(&self, index: Index) -> Option> { _I29.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern29 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I29 + } +} +impl MetricPattern for MetricPattern29 { + fn get(&self, index: Index) -> Option> { + _I29.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern30By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern30By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern30By { - pub fn yearindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::YearIndex) } + pub fn yearindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::YearIndex) + } } -pub struct MetricPattern30 { name: Arc, pub by: MetricPattern30By } +pub struct MetricPattern30 { + name: Arc, + pub by: MetricPattern30By, +} impl MetricPattern30 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern30By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern30By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern30 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I30 } } -impl MetricPattern for MetricPattern30 { fn get(&self, index: Index) -> Option> { _I30.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern30 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I30 + } +} +impl MetricPattern for MetricPattern30 { + fn get(&self, index: Index) -> Option> { + _I30.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern31By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern31By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern31By { - pub fn loadedaddressindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::LoadedAddressIndex) } + pub fn loadedaddressindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::LoadedAddressIndex) + } } -pub struct MetricPattern31 { name: Arc, pub by: MetricPattern31By } +pub struct MetricPattern31 { + name: Arc, + pub by: MetricPattern31By, +} impl MetricPattern31 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern31By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern31By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern31 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I31 } } -impl MetricPattern for MetricPattern31 { fn get(&self, index: Index) -> Option> { _I31.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern31 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I31 + } +} +impl MetricPattern for MetricPattern31 { + fn get(&self, index: Index) -> Option> { + _I31.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern32By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern32By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern32By { - pub fn emptyaddressindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::EmptyAddressIndex) } + pub fn emptyaddressindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::EmptyAddressIndex) + } } -pub struct MetricPattern32 { name: Arc, pub by: MetricPattern32By } +pub struct MetricPattern32 { + name: Arc, + pub by: MetricPattern32By, +} impl MetricPattern32 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern32By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern32By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern32 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I32 } } -impl MetricPattern for MetricPattern32 { fn get(&self, index: Index) -> Option> { _I32.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern32 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I32 + } +} +impl MetricPattern for MetricPattern32 { + fn get(&self, index: Index) -> Option> { + _I32.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} -pub struct MetricPattern33By { client: Arc, name: Arc, _marker: std::marker::PhantomData } +pub struct MetricPattern33By { + client: Arc, + name: Arc, + _marker: std::marker::PhantomData, +} impl MetricPattern33By { - pub fn pairoutputindex(&self) -> MetricEndpointBuilder { _ep(&self.client, &self.name, Index::PairOutputIndex) } + pub fn pairoutputindex(&self) -> MetricEndpointBuilder { + _ep(&self.client, &self.name, Index::PairOutputIndex) + } } -pub struct MetricPattern33 { name: Arc, pub by: MetricPattern33By } +pub struct MetricPattern33 { + name: Arc, + pub by: MetricPattern33By, +} impl MetricPattern33 { - pub fn new(client: Arc, name: String) -> Self { let name: Arc = name.into(); Self { name: name.clone(), by: MetricPattern33By { client, name, _marker: std::marker::PhantomData } } } - pub fn name(&self) -> &str { &self.name } + pub fn new(client: Arc, name: String) -> Self { + let name: Arc = name.into(); + Self { + name: name.clone(), + by: MetricPattern33By { + client, + name, + _marker: std::marker::PhantomData, + }, + } + } + pub fn name(&self) -> &str { + &self.name + } } -impl AnyMetricPattern for MetricPattern33 { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I33 } } -impl MetricPattern for MetricPattern33 { fn get(&self, index: Index) -> Option> { _I33.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } } +impl AnyMetricPattern for MetricPattern33 { + fn name(&self) -> &str { + &self.name + } + fn indexes(&self) -> &'static [Index] { + _I33 + } +} +impl MetricPattern for MetricPattern33 { + fn get(&self, index: Index) -> Option> { + _I33.contains(&index) + .then(|| _ep(&self.by.client, &self.by.name, index)) + } +} // Reusable pattern structs @@ -913,31 +2142,88 @@ impl RealizedPattern3 { pub fn new(client: Arc, acc: String) -> Self { Self { adjusted_sopr: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr")), - adjusted_sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_30d_ema")), - adjusted_sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_7d_ema")), - adjusted_value_created: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_created")), - adjusted_value_destroyed: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_destroyed")), + adjusted_sopr_30d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "adjusted_sopr_30d_ema"), + ), + adjusted_sopr_7d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "adjusted_sopr_7d_ema"), + ), + adjusted_value_created: MetricPattern1::new( + client.clone(), + _m(&acc, "adjusted_value_created"), + ), + adjusted_value_destroyed: MetricPattern1::new( + client.clone(), + _m(&acc, "adjusted_value_destroyed"), + ), mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern2::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( + client.clone(), + _m(&acc, "net_realized_pnl_cumulative_30d_delta"), + ), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( + client.clone(), + _m( + &acc, + "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", + ), + ), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( + client.clone(), + _m( + &acc, + "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", + ), + ), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "net_realized_pnl_rel_to_realized_cap"), + ), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), - realized_cap_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_rel_to_own_market_cap")), + realized_cap_30d_delta: MetricPattern4::new( + client.clone(), + _m(&acc, "realized_cap_30d_delta"), + ), + realized_cap_rel_to_own_market_cap: MetricPattern1::new( + client.clone(), + _m(&acc, "realized_cap_rel_to_own_market_cap"), + ), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), + realized_loss_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "realized_loss_rel_to_realized_cap"), + ), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: ActivePriceRatioPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), + realized_price_extra: ActivePriceRatioPattern::new( + client.clone(), + _m(&acc, "realized_price_ratio"), + ), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), - realized_profit_to_loss_ratio: MetricPattern6::new(client.clone(), _m(&acc, "realized_profit_to_loss_ratio")), + realized_profit_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "realized_profit_rel_to_realized_cap"), + ), + realized_profit_to_loss_ratio: MetricPattern6::new( + client.clone(), + _m(&acc, "realized_profit_to_loss_ratio"), + ), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), - sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), - sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), + sell_side_risk_ratio: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio"), + ), + sell_side_risk_ratio_30d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio_30d_ema"), + ), + sell_side_risk_ratio_7d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio_7d_ema"), + ), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -987,29 +2273,80 @@ impl RealizedPattern4 { pub fn new(client: Arc, acc: String) -> Self { Self { adjusted_sopr: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr")), - adjusted_sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_30d_ema")), - adjusted_sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "adjusted_sopr_7d_ema")), - adjusted_value_created: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_created")), - adjusted_value_destroyed: MetricPattern1::new(client.clone(), _m(&acc, "adjusted_value_destroyed")), + adjusted_sopr_30d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "adjusted_sopr_30d_ema"), + ), + adjusted_sopr_7d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "adjusted_sopr_7d_ema"), + ), + adjusted_value_created: MetricPattern1::new( + client.clone(), + _m(&acc, "adjusted_value_created"), + ), + adjusted_value_destroyed: MetricPattern1::new( + client.clone(), + _m(&acc, "adjusted_value_destroyed"), + ), mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern2::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( + client.clone(), + _m(&acc, "net_realized_pnl_cumulative_30d_delta"), + ), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( + client.clone(), + _m( + &acc, + "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", + ), + ), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( + client.clone(), + _m( + &acc, + "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", + ), + ), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "net_realized_pnl_rel_to_realized_cap"), + ), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), + realized_cap_30d_delta: MetricPattern4::new( + client.clone(), + _m(&acc, "realized_cap_30d_delta"), + ), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), + realized_loss_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "realized_loss_rel_to_realized_cap"), + ), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: RealizedPriceExtraPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), + realized_price_extra: RealizedPriceExtraPattern::new( + client.clone(), + _m(&acc, "realized_price_ratio"), + ), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), + realized_profit_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "realized_profit_rel_to_realized_cap"), + ), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), - sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), - sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), + sell_side_risk_ratio: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio"), + ), + sell_side_risk_ratio_30d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio_30d_ema"), + ), + sell_side_risk_ratio_7d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio_7d_ema"), + ), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -1126,24 +2463,69 @@ impl RealizedPattern2 { mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern2::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( + client.clone(), + _m(&acc, "net_realized_pnl_cumulative_30d_delta"), + ), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( + client.clone(), + _m( + &acc, + "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", + ), + ), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( + client.clone(), + _m( + &acc, + "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", + ), + ), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "net_realized_pnl_rel_to_realized_cap"), + ), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), - realized_cap_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_rel_to_own_market_cap")), + realized_cap_30d_delta: MetricPattern4::new( + client.clone(), + _m(&acc, "realized_cap_30d_delta"), + ), + realized_cap_rel_to_own_market_cap: MetricPattern1::new( + client.clone(), + _m(&acc, "realized_cap_rel_to_own_market_cap"), + ), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), + realized_loss_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "realized_loss_rel_to_realized_cap"), + ), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: ActivePriceRatioPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), + realized_price_extra: ActivePriceRatioPattern::new( + client.clone(), + _m(&acc, "realized_price_ratio"), + ), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), - realized_profit_to_loss_ratio: MetricPattern6::new(client.clone(), _m(&acc, "realized_profit_to_loss_ratio")), + realized_profit_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "realized_profit_rel_to_realized_cap"), + ), + realized_profit_to_loss_ratio: MetricPattern6::new( + client.clone(), + _m(&acc, "realized_profit_to_loss_ratio"), + ), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), - sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), - sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), + sell_side_risk_ratio: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio"), + ), + sell_side_risk_ratio_30d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio_30d_ema"), + ), + sell_side_risk_ratio_7d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio_7d_ema"), + ), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -1190,22 +2572,61 @@ impl RealizedPattern { mvrv: MetricPattern4::new(client.clone(), _m(&acc, "mvrv")), neg_realized_loss: BitcoinPattern2::new(client.clone(), _m(&acc, "neg_realized_loss")), net_realized_pnl: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_cumulative_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta")), - net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap")), - net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap")), - net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), + net_realized_pnl_cumulative_30d_delta: MetricPattern4::new( + client.clone(), + _m(&acc, "net_realized_pnl_cumulative_30d_delta"), + ), + net_realized_pnl_cumulative_30d_delta_rel_to_market_cap: MetricPattern4::new( + client.clone(), + _m( + &acc, + "net_realized_pnl_cumulative_30d_delta_rel_to_market_cap", + ), + ), + net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap: MetricPattern4::new( + client.clone(), + _m( + &acc, + "net_realized_pnl_cumulative_30d_delta_rel_to_realized_cap", + ), + ), + net_realized_pnl_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "net_realized_pnl_rel_to_realized_cap"), + ), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_30d_delta: MetricPattern4::new(client.clone(), _m(&acc, "realized_cap_30d_delta")), + realized_cap_30d_delta: MetricPattern4::new( + client.clone(), + _m(&acc, "realized_cap_30d_delta"), + ), realized_loss: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), + realized_loss_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "realized_loss_rel_to_realized_cap"), + ), realized_price: MetricPattern1::new(client.clone(), _m(&acc, "realized_price")), - realized_price_extra: RealizedPriceExtraPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), + realized_price_extra: RealizedPriceExtraPattern::new( + client.clone(), + _m(&acc, "realized_price_ratio"), + ), realized_profit: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BlockCountPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), + realized_profit_rel_to_realized_cap: BlockCountPattern::new( + client.clone(), + _m(&acc, "realized_profit_rel_to_realized_cap"), + ), realized_value: MetricPattern1::new(client.clone(), _m(&acc, "realized_value")), - sell_side_risk_ratio: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio")), - sell_side_risk_ratio_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_30d_ema")), - sell_side_risk_ratio_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sell_side_risk_ratio_7d_ema")), + sell_side_risk_ratio: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio"), + ), + sell_side_risk_ratio_30d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio_30d_ema"), + ), + sell_side_risk_ratio_7d_ema: MetricPattern6::new( + client.clone(), + _m(&acc, "sell_side_risk_ratio_7d_ema"), + ), sopr: MetricPattern6::new(client.clone(), _m(&acc, "sopr")), sopr_30d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_30d_ema")), sopr_7d_ema: MetricPattern6::new(client.clone(), _m(&acc, "sopr_7d_ema")), @@ -1394,24 +2815,75 @@ 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"), + ), } } } @@ -1686,16 +3158,43 @@ 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"), + ), } } } @@ -1718,16 +3217,46 @@ 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"), + ), } } } @@ -2055,11 +3584,20 @@ 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")), } @@ -2079,9 +3617,18 @@ 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")), } @@ -2276,8 +3823,14 @@ 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")), + 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"), + ), } } } @@ -2402,7 +3955,10 @@ impl MetricsTree { blocks: MetricsTree_Blocks::new(client.clone(), format!("{base_path}_blocks")), cointime: MetricsTree_Cointime::new(client.clone(), format!("{base_path}_cointime")), constants: MetricsTree_Constants::new(client.clone(), format!("{base_path}_constants")), - distribution: MetricsTree_Distribution::new(client.clone(), format!("{base_path}_distribution")), + distribution: MetricsTree_Distribution::new( + client.clone(), + format!("{base_path}_distribution"), + ), indexes: MetricsTree_Indexes::new(client.clone(), format!("{base_path}_indexes")), inputs: MetricsTree_Inputs::new(client.clone(), format!("{base_path}_inputs")), market: MetricsTree_Market::new(client.clone(), format!("{base_path}_market")), @@ -2412,7 +3968,10 @@ impl MetricsTree { price: MetricsTree_Price::new(client.clone(), format!("{base_path}_price")), scripts: MetricsTree_Scripts::new(client.clone(), format!("{base_path}_scripts")), supply: MetricsTree_Supply::new(client.clone(), format!("{base_path}_supply")), - transactions: MetricsTree_Transactions::new(client.clone(), format!("{base_path}_transactions")), + transactions: MetricsTree_Transactions::new( + client.clone(), + format!("{base_path}_transactions"), + ), } } } @@ -2440,14 +3999,38 @@ pub struct MetricsTree_Addresses { impl MetricsTree_Addresses { pub fn new(client: Arc, base_path: String) -> Self { Self { - first_p2aaddressindex: MetricPattern11::new(client.clone(), "first_p2aaddressindex".to_string()), - first_p2pk33addressindex: MetricPattern11::new(client.clone(), "first_p2pk33addressindex".to_string()), - first_p2pk65addressindex: MetricPattern11::new(client.clone(), "first_p2pk65addressindex".to_string()), - first_p2pkhaddressindex: MetricPattern11::new(client.clone(), "first_p2pkhaddressindex".to_string()), - first_p2shaddressindex: MetricPattern11::new(client.clone(), "first_p2shaddressindex".to_string()), - first_p2traddressindex: MetricPattern11::new(client.clone(), "first_p2traddressindex".to_string()), - first_p2wpkhaddressindex: MetricPattern11::new(client.clone(), "first_p2wpkhaddressindex".to_string()), - first_p2wshaddressindex: MetricPattern11::new(client.clone(), "first_p2wshaddressindex".to_string()), + first_p2aaddressindex: MetricPattern11::new( + client.clone(), + "first_p2aaddressindex".to_string(), + ), + first_p2pk33addressindex: MetricPattern11::new( + client.clone(), + "first_p2pk33addressindex".to_string(), + ), + first_p2pk65addressindex: MetricPattern11::new( + client.clone(), + "first_p2pk65addressindex".to_string(), + ), + first_p2pkhaddressindex: MetricPattern11::new( + client.clone(), + "first_p2pkhaddressindex".to_string(), + ), + first_p2shaddressindex: MetricPattern11::new( + client.clone(), + "first_p2shaddressindex".to_string(), + ), + first_p2traddressindex: MetricPattern11::new( + client.clone(), + "first_p2traddressindex".to_string(), + ), + first_p2wpkhaddressindex: MetricPattern11::new( + client.clone(), + "first_p2wpkhaddressindex".to_string(), + ), + first_p2wshaddressindex: MetricPattern11::new( + client.clone(), + "first_p2wshaddressindex".to_string(), + ), p2abytes: MetricPattern16::new(client.clone(), "p2abytes".to_string()), p2pk33bytes: MetricPattern18::new(client.clone(), "p2pk33bytes".to_string()), p2pk65bytes: MetricPattern19::new(client.clone(), "p2pk65bytes".to_string()), @@ -2482,12 +4065,21 @@ impl MetricsTree_Blocks { Self { blockhash: MetricPattern11::new(client.clone(), "blockhash".to_string()), count: MetricsTree_Blocks_Count::new(client.clone(), format!("{base_path}_count")), - difficulty: MetricsTree_Blocks_Difficulty::new(client.clone(), format!("{base_path}_difficulty")), + difficulty: MetricsTree_Blocks_Difficulty::new( + client.clone(), + format!("{base_path}_difficulty"), + ), fullness: FullnessPattern::new(client.clone(), "block_fullness".to_string()), - halving: MetricsTree_Blocks_Halving::new(client.clone(), format!("{base_path}_halving")), + halving: MetricsTree_Blocks_Halving::new( + client.clone(), + format!("{base_path}_halving"), + ), interval: FullnessPattern::new(client.clone(), "block_interval".to_string()), mining: MetricsTree_Blocks_Mining::new(client.clone(), format!("{base_path}_mining")), - rewards: MetricsTree_Blocks_Rewards::new(client.clone(), format!("{base_path}_rewards")), + rewards: MetricsTree_Blocks_Rewards::new( + client.clone(), + format!("{base_path}_rewards"), + ), size: MetricsTree_Blocks_Size::new(client.clone(), format!("{base_path}_size")), time: MetricsTree_Blocks_Time::new(client.clone(), format!("{base_path}_time")), total_size: MetricPattern11::new(client.clone(), "total_size".to_string()), @@ -2523,7 +4115,10 @@ impl MetricsTree_Blocks_Count { _24h_block_count: MetricPattern1::new(client.clone(), "24h_block_count".to_string()), _24h_start: MetricPattern11::new(client.clone(), "24h_start".to_string()), block_count: BlockCountPattern::new(client.clone(), "block_count".to_string()), - block_count_target: MetricPattern4::new(client.clone(), "block_count_target".to_string()), + block_count_target: MetricPattern4::new( + client.clone(), + "block_count_target".to_string(), + ), } } } @@ -2543,8 +4138,14 @@ impl MetricsTree_Blocks_Difficulty { Self { adjustment: MetricPattern1::new(client.clone(), "difficulty_adjustment".to_string()), as_hash: MetricPattern1::new(client.clone(), "difficulty_as_hash".to_string()), - blocks_before_next_adjustment: MetricPattern1::new(client.clone(), "blocks_before_next_difficulty_adjustment".to_string()), - days_before_next_adjustment: MetricPattern1::new(client.clone(), "days_before_next_difficulty_adjustment".to_string()), + blocks_before_next_adjustment: MetricPattern1::new( + client.clone(), + "blocks_before_next_difficulty_adjustment".to_string(), + ), + days_before_next_adjustment: MetricPattern1::new( + client.clone(), + "days_before_next_difficulty_adjustment".to_string(), + ), epoch: MetricPattern4::new(client.clone(), "difficultyepoch".to_string()), raw: MetricPattern1::new(client.clone(), "difficulty".to_string()), } @@ -2561,8 +4162,14 @@ pub struct MetricsTree_Blocks_Halving { impl MetricsTree_Blocks_Halving { pub fn new(client: Arc, base_path: String) -> Self { Self { - blocks_before_next_halving: MetricPattern1::new(client.clone(), "blocks_before_next_halving".to_string()), - days_before_next_halving: MetricPattern1::new(client.clone(), "days_before_next_halving".to_string()), + blocks_before_next_halving: MetricPattern1::new( + client.clone(), + "blocks_before_next_halving".to_string(), + ), + days_before_next_halving: MetricPattern1::new( + client.clone(), + "days_before_next_halving".to_string(), + ), epoch: MetricPattern4::new(client.clone(), "halvingepoch".to_string()), } } @@ -2591,20 +4198,38 @@ impl MetricsTree_Blocks_Mining { pub fn new(client: Arc, base_path: String) -> Self { Self { hash_price_phs: MetricPattern1::new(client.clone(), "hash_price_phs".to_string()), - hash_price_phs_min: MetricPattern1::new(client.clone(), "hash_price_phs_min".to_string()), - hash_price_rebound: MetricPattern1::new(client.clone(), "hash_price_rebound".to_string()), + hash_price_phs_min: MetricPattern1::new( + client.clone(), + "hash_price_phs_min".to_string(), + ), + hash_price_rebound: MetricPattern1::new( + client.clone(), + "hash_price_rebound".to_string(), + ), hash_price_ths: MetricPattern1::new(client.clone(), "hash_price_ths".to_string()), - hash_price_ths_min: MetricPattern1::new(client.clone(), "hash_price_ths_min".to_string()), + hash_price_ths_min: MetricPattern1::new( + client.clone(), + "hash_price_ths_min".to_string(), + ), hash_rate: MetricPattern1::new(client.clone(), "hash_rate".to_string()), hash_rate_1m_sma: MetricPattern4::new(client.clone(), "hash_rate_1m_sma".to_string()), hash_rate_1w_sma: MetricPattern4::new(client.clone(), "hash_rate_1w_sma".to_string()), hash_rate_1y_sma: MetricPattern4::new(client.clone(), "hash_rate_1y_sma".to_string()), hash_rate_2m_sma: MetricPattern4::new(client.clone(), "hash_rate_2m_sma".to_string()), hash_value_phs: MetricPattern1::new(client.clone(), "hash_value_phs".to_string()), - hash_value_phs_min: MetricPattern1::new(client.clone(), "hash_value_phs_min".to_string()), - hash_value_rebound: MetricPattern1::new(client.clone(), "hash_value_rebound".to_string()), + hash_value_phs_min: MetricPattern1::new( + client.clone(), + "hash_value_phs_min".to_string(), + ), + hash_value_rebound: MetricPattern1::new( + client.clone(), + "hash_value_rebound".to_string(), + ), hash_value_ths: MetricPattern1::new(client.clone(), "hash_value_ths".to_string()), - hash_value_ths_min: MetricPattern1::new(client.clone(), "hash_value_ths_min".to_string()), + hash_value_ths_min: MetricPattern1::new( + client.clone(), + "hash_value_ths_min".to_string(), + ), } } } @@ -2623,13 +4248,22 @@ pub struct MetricsTree_Blocks_Rewards { impl MetricsTree_Blocks_Rewards { pub fn new(client: Arc, base_path: String) -> Self { Self { - _24h_coinbase_sum: MetricsTree_Blocks_Rewards_24hCoinbaseSum::new(client.clone(), format!("{base_path}_24h_coinbase_sum")), + _24h_coinbase_sum: MetricsTree_Blocks_Rewards_24hCoinbaseSum::new( + client.clone(), + format!("{base_path}_24h_coinbase_sum"), + ), coinbase: CoinbasePattern::new(client.clone(), "coinbase".to_string()), fee_dominance: MetricPattern6::new(client.clone(), "fee_dominance".to_string()), subsidy: CoinbasePattern::new(client.clone(), "subsidy".to_string()), subsidy_dominance: MetricPattern6::new(client.clone(), "subsidy_dominance".to_string()), - subsidy_usd_1y_sma: MetricPattern4::new(client.clone(), "subsidy_usd_1y_sma".to_string()), - unclaimed_rewards: UnclaimedRewardsPattern::new(client.clone(), "unclaimed_rewards".to_string()), + subsidy_usd_1y_sma: MetricPattern4::new( + client.clone(), + "subsidy_usd_1y_sma".to_string(), + ), + unclaimed_rewards: UnclaimedRewardsPattern::new( + client.clone(), + "unclaimed_rewards".to_string(), + ), } } } @@ -2694,7 +4328,10 @@ impl MetricsTree_Blocks_Time { Self { date: MetricPattern11::new(client.clone(), "date".to_string()), timestamp: MetricPattern1::new(client.clone(), "timestamp".to_string()), - timestamp_monotonic: MetricPattern11::new(client.clone(), "timestamp_monotonic".to_string()), + timestamp_monotonic: MetricPattern11::new( + client.clone(), + "timestamp_monotonic".to_string(), + ), } } } @@ -2712,10 +4349,19 @@ pub struct MetricsTree_Cointime { impl MetricsTree_Cointime { pub fn new(client: Arc, base_path: String) -> Self { Self { - activity: MetricsTree_Cointime_Activity::new(client.clone(), format!("{base_path}_activity")), - adjusted: MetricsTree_Cointime_Adjusted::new(client.clone(), format!("{base_path}_adjusted")), + activity: MetricsTree_Cointime_Activity::new( + client.clone(), + format!("{base_path}_activity"), + ), + adjusted: MetricsTree_Cointime_Adjusted::new( + client.clone(), + format!("{base_path}_adjusted"), + ), cap: MetricsTree_Cointime_Cap::new(client.clone(), format!("{base_path}_cap")), - pricing: MetricsTree_Cointime_Pricing::new(client.clone(), format!("{base_path}_pricing")), + pricing: MetricsTree_Cointime_Pricing::new( + client.clone(), + format!("{base_path}_pricing"), + ), supply: MetricsTree_Cointime_Supply::new(client.clone(), format!("{base_path}_supply")), value: MetricsTree_Cointime_Value::new(client.clone(), format!("{base_path}_value")), } @@ -2734,9 +4380,18 @@ pub struct MetricsTree_Cointime_Activity { impl MetricsTree_Cointime_Activity { pub fn new(client: Arc, base_path: String) -> Self { Self { - activity_to_vaultedness_ratio: MetricPattern1::new(client.clone(), "activity_to_vaultedness_ratio".to_string()), - coinblocks_created: BlockCountPattern::new(client.clone(), "coinblocks_created".to_string()), - coinblocks_stored: BlockCountPattern::new(client.clone(), "coinblocks_stored".to_string()), + activity_to_vaultedness_ratio: MetricPattern1::new( + client.clone(), + "activity_to_vaultedness_ratio".to_string(), + ), + coinblocks_created: BlockCountPattern::new( + client.clone(), + "coinblocks_created".to_string(), + ), + coinblocks_stored: BlockCountPattern::new( + client.clone(), + "coinblocks_stored".to_string(), + ), liveliness: MetricPattern1::new(client.clone(), "liveliness".to_string()), vaultedness: MetricPattern1::new(client.clone(), "vaultedness".to_string()), } @@ -2753,9 +4408,18 @@ pub struct MetricsTree_Cointime_Adjusted { impl MetricsTree_Cointime_Adjusted { pub fn new(client: Arc, base_path: String) -> Self { Self { - cointime_adj_inflation_rate: MetricPattern4::new(client.clone(), "cointime_adj_inflation_rate".to_string()), - cointime_adj_tx_btc_velocity: MetricPattern4::new(client.clone(), "cointime_adj_tx_btc_velocity".to_string()), - cointime_adj_tx_usd_velocity: MetricPattern4::new(client.clone(), "cointime_adj_tx_usd_velocity".to_string()), + cointime_adj_inflation_rate: MetricPattern4::new( + client.clone(), + "cointime_adj_inflation_rate".to_string(), + ), + cointime_adj_tx_btc_velocity: MetricPattern4::new( + client.clone(), + "cointime_adj_tx_btc_velocity".to_string(), + ), + cointime_adj_tx_usd_velocity: MetricPattern4::new( + client.clone(), + "cointime_adj_tx_usd_velocity".to_string(), + ), } } } @@ -2797,13 +4461,25 @@ impl MetricsTree_Cointime_Pricing { pub fn new(client: Arc, base_path: String) -> Self { Self { active_price: MetricPattern1::new(client.clone(), "active_price".to_string()), - active_price_ratio: ActivePriceRatioPattern::new(client.clone(), "active_price_ratio".to_string()), + active_price_ratio: 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()), + 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()), + 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()), + vaulted_price_ratio: ActivePriceRatioPattern::new( + client.clone(), + "vaulted_price_ratio".to_string(), + ), } } } @@ -2833,9 +4509,18 @@ pub struct MetricsTree_Cointime_Value { impl MetricsTree_Cointime_Value { pub fn new(client: Arc, base_path: String) -> Self { Self { - cointime_value_created: BlockCountPattern::new(client.clone(), "cointime_value_created".to_string()), - cointime_value_destroyed: BlockCountPattern::new(client.clone(), "cointime_value_destroyed".to_string()), - cointime_value_stored: BlockCountPattern::new(client.clone(), "cointime_value_stored".to_string()), + cointime_value_created: BlockCountPattern::new( + client.clone(), + "cointime_value_created".to_string(), + ), + cointime_value_destroyed: BlockCountPattern::new( + client.clone(), + "cointime_value_destroyed".to_string(), + ), + cointime_value_stored: BlockCountPattern::new( + client.clone(), + "cointime_value_stored".to_string(), + ), } } } @@ -2904,14 +4589,32 @@ impl MetricsTree_Distribution { pub fn new(client: Arc, base_path: String) -> Self { Self { addr_count: AddrCountPattern::new(client.clone(), "addr_count".to_string()), - address_cohorts: MetricsTree_Distribution_AddressCohorts::new(client.clone(), format!("{base_path}_address_cohorts")), - addresses_data: MetricsTree_Distribution_AddressesData::new(client.clone(), format!("{base_path}_addresses_data")), - any_address_indexes: MetricsTree_Distribution_AnyAddressIndexes::new(client.clone(), format!("{base_path}_any_address_indexes")), + address_cohorts: MetricsTree_Distribution_AddressCohorts::new( + client.clone(), + format!("{base_path}_address_cohorts"), + ), + addresses_data: MetricsTree_Distribution_AddressesData::new( + client.clone(), + format!("{base_path}_addresses_data"), + ), + any_address_indexes: MetricsTree_Distribution_AnyAddressIndexes::new( + client.clone(), + format!("{base_path}_any_address_indexes"), + ), chain_state: MetricPattern11::new(client.clone(), "chain".to_string()), empty_addr_count: AddrCountPattern::new(client.clone(), "empty_addr_count".to_string()), - emptyaddressindex: MetricPattern32::new(client.clone(), "emptyaddressindex".to_string()), - loadedaddressindex: MetricPattern31::new(client.clone(), "loadedaddressindex".to_string()), - utxo_cohorts: MetricsTree_Distribution_UtxoCohorts::new(client.clone(), format!("{base_path}_utxo_cohorts")), + emptyaddressindex: MetricPattern32::new( + client.clone(), + "emptyaddressindex".to_string(), + ), + loadedaddressindex: MetricPattern31::new( + client.clone(), + "loadedaddressindex".to_string(), + ), + utxo_cohorts: MetricsTree_Distribution_UtxoCohorts::new( + client.clone(), + format!("{base_path}_utxo_cohorts"), + ), } } } @@ -2926,9 +4629,18 @@ pub struct MetricsTree_Distribution_AddressCohorts { impl MetricsTree_Distribution_AddressCohorts { pub fn new(client: Arc, base_path: String) -> Self { Self { - amount_range: MetricsTree_Distribution_AddressCohorts_AmountRange::new(client.clone(), format!("{base_path}_amount_range")), - ge_amount: MetricsTree_Distribution_AddressCohorts_GeAmount::new(client.clone(), format!("{base_path}_ge_amount")), - lt_amount: MetricsTree_Distribution_AddressCohorts_LtAmount::new(client.clone(), format!("{base_path}_lt_amount")), + amount_range: MetricsTree_Distribution_AddressCohorts_AmountRange::new( + client.clone(), + format!("{base_path}_amount_range"), + ), + ge_amount: MetricsTree_Distribution_AddressCohorts_GeAmount::new( + client.clone(), + format!("{base_path}_ge_amount"), + ), + lt_amount: MetricsTree_Distribution_AddressCohorts_LtAmount::new( + client.clone(), + format!("{base_path}_lt_amount"), + ), } } } @@ -2956,20 +4668,62 @@ impl MetricsTree_Distribution_AddressCohorts_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { _0sats: _0satsPattern::new(client.clone(), "addrs_with_0sats".to_string()), - _100btc_to_1k_btc: _0satsPattern::new(client.clone(), "addrs_above_100btc_under_1k_btc".to_string()), - _100k_btc_or_more: _0satsPattern::new(client.clone(), "addrs_above_100k_btc".to_string()), - _100k_sats_to_1m_sats: _0satsPattern::new(client.clone(), "addrs_above_100k_sats_under_1m_sats".to_string()), - _100sats_to_1k_sats: _0satsPattern::new(client.clone(), "addrs_above_100sats_under_1k_sats".to_string()), - _10btc_to_100btc: _0satsPattern::new(client.clone(), "addrs_above_10btc_under_100btc".to_string()), - _10k_btc_to_100k_btc: _0satsPattern::new(client.clone(), "addrs_above_10k_btc_under_100k_btc".to_string()), - _10k_sats_to_100k_sats: _0satsPattern::new(client.clone(), "addrs_above_10k_sats_under_100k_sats".to_string()), - _10m_sats_to_1btc: _0satsPattern::new(client.clone(), "addrs_above_10m_sats_under_1btc".to_string()), - _10sats_to_100sats: _0satsPattern::new(client.clone(), "addrs_above_10sats_under_100sats".to_string()), - _1btc_to_10btc: _0satsPattern::new(client.clone(), "addrs_above_1btc_under_10btc".to_string()), - _1k_btc_to_10k_btc: _0satsPattern::new(client.clone(), "addrs_above_1k_btc_under_10k_btc".to_string()), - _1k_sats_to_10k_sats: _0satsPattern::new(client.clone(), "addrs_above_1k_sats_under_10k_sats".to_string()), - _1m_sats_to_10m_sats: _0satsPattern::new(client.clone(), "addrs_above_1m_sats_under_10m_sats".to_string()), - _1sat_to_10sats: _0satsPattern::new(client.clone(), "addrs_above_1sat_under_10sats".to_string()), + _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(), + ), } } } @@ -3108,17 +4862,50 @@ pub struct MetricsTree_Distribution_UtxoCohorts { impl MetricsTree_Distribution_UtxoCohorts { pub fn new(client: Arc, base_path: String) -> Self { Self { - age_range: MetricsTree_Distribution_UtxoCohorts_AgeRange::new(client.clone(), format!("{base_path}_age_range")), - all: MetricsTree_Distribution_UtxoCohorts_All::new(client.clone(), format!("{base_path}_all")), - amount_range: MetricsTree_Distribution_UtxoCohorts_AmountRange::new(client.clone(), format!("{base_path}_amount_range")), - epoch: MetricsTree_Distribution_UtxoCohorts_Epoch::new(client.clone(), format!("{base_path}_epoch")), - ge_amount: MetricsTree_Distribution_UtxoCohorts_GeAmount::new(client.clone(), format!("{base_path}_ge_amount")), - lt_amount: MetricsTree_Distribution_UtxoCohorts_LtAmount::new(client.clone(), format!("{base_path}_lt_amount")), - max_age: MetricsTree_Distribution_UtxoCohorts_MaxAge::new(client.clone(), format!("{base_path}_max_age")), - min_age: MetricsTree_Distribution_UtxoCohorts_MinAge::new(client.clone(), format!("{base_path}_min_age")), - term: MetricsTree_Distribution_UtxoCohorts_Term::new(client.clone(), format!("{base_path}_term")), - type_: MetricsTree_Distribution_UtxoCohorts_Type::new(client.clone(), format!("{base_path}_type_")), - year: MetricsTree_Distribution_UtxoCohorts_Year::new(client.clone(), format!("{base_path}_year")), + age_range: MetricsTree_Distribution_UtxoCohorts_AgeRange::new( + client.clone(), + format!("{base_path}_age_range"), + ), + all: MetricsTree_Distribution_UtxoCohorts_All::new( + client.clone(), + format!("{base_path}_all"), + ), + amount_range: MetricsTree_Distribution_UtxoCohorts_AmountRange::new( + client.clone(), + format!("{base_path}_amount_range"), + ), + epoch: MetricsTree_Distribution_UtxoCohorts_Epoch::new( + client.clone(), + format!("{base_path}_epoch"), + ), + ge_amount: MetricsTree_Distribution_UtxoCohorts_GeAmount::new( + client.clone(), + format!("{base_path}_ge_amount"), + ), + lt_amount: MetricsTree_Distribution_UtxoCohorts_LtAmount::new( + client.clone(), + format!("{base_path}_lt_amount"), + ), + max_age: MetricsTree_Distribution_UtxoCohorts_MaxAge::new( + client.clone(), + format!("{base_path}_max_age"), + ), + min_age: MetricsTree_Distribution_UtxoCohorts_MinAge::new( + client.clone(), + format!("{base_path}_min_age"), + ), + term: MetricsTree_Distribution_UtxoCohorts_Term::new( + client.clone(), + format!("{base_path}_term"), + ), + type_: MetricsTree_Distribution_UtxoCohorts_Type::new( + client.clone(), + format!("{base_path}_type_"), + ), + year: MetricsTree_Distribution_UtxoCohorts_Year::new( + client.clone(), + format!("{base_path}_year"), + ), } } } @@ -3151,25 +4938,82 @@ pub struct MetricsTree_Distribution_UtxoCohorts_AgeRange { impl MetricsTree_Distribution_UtxoCohorts_AgeRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _10y_to_12y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_10y_up_to_12y_old".to_string()), - _12y_to_15y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_12y_up_to_15y_old".to_string()), - _1d_to_1w: _10yTo12yPattern::new(client.clone(), "utxos_at_least_1d_up_to_1w_old".to_string()), - _1h_to_1d: _10yTo12yPattern::new(client.clone(), "utxos_at_least_1h_up_to_1d_old".to_string()), - _1m_to_2m: _10yTo12yPattern::new(client.clone(), "utxos_at_least_1m_up_to_2m_old".to_string()), - _1w_to_1m: _10yTo12yPattern::new(client.clone(), "utxos_at_least_1w_up_to_1m_old".to_string()), - _1y_to_2y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_1y_up_to_2y_old".to_string()), - _2m_to_3m: _10yTo12yPattern::new(client.clone(), "utxos_at_least_2m_up_to_3m_old".to_string()), - _2y_to_3y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_2y_up_to_3y_old".to_string()), - _3m_to_4m: _10yTo12yPattern::new(client.clone(), "utxos_at_least_3m_up_to_4m_old".to_string()), - _3y_to_4y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_3y_up_to_4y_old".to_string()), - _4m_to_5m: _10yTo12yPattern::new(client.clone(), "utxos_at_least_4m_up_to_5m_old".to_string()), - _4y_to_5y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_4y_up_to_5y_old".to_string()), - _5m_to_6m: _10yTo12yPattern::new(client.clone(), "utxos_at_least_5m_up_to_6m_old".to_string()), - _5y_to_6y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_5y_up_to_6y_old".to_string()), - _6m_to_1y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_6m_up_to_1y_old".to_string()), - _6y_to_7y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_6y_up_to_7y_old".to_string()), - _7y_to_8y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_7y_up_to_8y_old".to_string()), - _8y_to_10y: _10yTo12yPattern::new(client.clone(), "utxos_at_least_8y_up_to_10y_old".to_string()), + _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()), } @@ -3191,10 +5035,16 @@ impl MetricsTree_Distribution_UtxoCohorts_All { pub fn new(client: Arc, base_path: String) -> Self { Self { activity: ActivityPattern2::new(client.clone(), "".to_string()), - cost_basis: MetricsTree_Distribution_UtxoCohorts_All_CostBasis::new(client.clone(), format!("{base_path}_cost_basis")), + cost_basis: MetricsTree_Distribution_UtxoCohorts_All_CostBasis::new( + client.clone(), + format!("{base_path}_cost_basis"), + ), outputs: OutputsPattern::new(client.clone(), "utxo_count".to_string()), realized: RealizedPattern3::new(client.clone(), "".to_string()), - relative: MetricsTree_Distribution_UtxoCohorts_All_Relative::new(client.clone(), format!("{base_path}_relative")), + relative: MetricsTree_Distribution_UtxoCohorts_All_Relative::new( + client.clone(), + format!("{base_path}_relative"), + ), supply: SupplyPattern2::new(client.clone(), "supply".to_string()), unrealized: UnrealizedPattern::new(client.clone(), "".to_string()), } @@ -3231,12 +5081,30 @@ pub struct MetricsTree_Distribution_UtxoCohorts_All_Relative { impl MetricsTree_Distribution_UtxoCohorts_All_Relative { pub fn new(client: Arc, base_path: String) -> Self { Self { - neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "neg_unrealized_loss_rel_to_own_total_unrealized_pnl".to_string()), - net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "net_unrealized_pnl_rel_to_own_total_unrealized_pnl".to_string()), - supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), "supply_in_loss_rel_to_own_supply".to_string()), - supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), "supply_in_profit_rel_to_own_supply".to_string()), - unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "unrealized_loss_rel_to_own_total_unrealized_pnl".to_string()), - unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), "unrealized_profit_rel_to_own_total_unrealized_pnl".to_string()), + neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( + client.clone(), + "neg_unrealized_loss_rel_to_own_total_unrealized_pnl".to_string(), + ), + net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new( + client.clone(), + "net_unrealized_pnl_rel_to_own_total_unrealized_pnl".to_string(), + ), + supply_in_loss_rel_to_own_supply: MetricPattern1::new( + client.clone(), + "supply_in_loss_rel_to_own_supply".to_string(), + ), + supply_in_profit_rel_to_own_supply: MetricPattern1::new( + client.clone(), + "supply_in_profit_rel_to_own_supply".to_string(), + ), + unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new( + client.clone(), + "unrealized_loss_rel_to_own_total_unrealized_pnl".to_string(), + ), + unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new( + client.clone(), + "unrealized_profit_rel_to_own_total_unrealized_pnl".to_string(), + ), } } } @@ -3264,20 +5132,62 @@ impl MetricsTree_Distribution_UtxoCohorts_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { _0sats: _0satsPattern2::new(client.clone(), "utxos_with_0sats".to_string()), - _100btc_to_1k_btc: _0satsPattern2::new(client.clone(), "utxos_above_100btc_under_1k_btc".to_string()), - _100k_btc_or_more: _0satsPattern2::new(client.clone(), "utxos_above_100k_btc".to_string()), - _100k_sats_to_1m_sats: _0satsPattern2::new(client.clone(), "utxos_above_100k_sats_under_1m_sats".to_string()), - _100sats_to_1k_sats: _0satsPattern2::new(client.clone(), "utxos_above_100sats_under_1k_sats".to_string()), - _10btc_to_100btc: _0satsPattern2::new(client.clone(), "utxos_above_10btc_under_100btc".to_string()), - _10k_btc_to_100k_btc: _0satsPattern2::new(client.clone(), "utxos_above_10k_btc_under_100k_btc".to_string()), - _10k_sats_to_100k_sats: _0satsPattern2::new(client.clone(), "utxos_above_10k_sats_under_100k_sats".to_string()), - _10m_sats_to_1btc: _0satsPattern2::new(client.clone(), "utxos_above_10m_sats_under_1btc".to_string()), - _10sats_to_100sats: _0satsPattern2::new(client.clone(), "utxos_above_10sats_under_100sats".to_string()), - _1btc_to_10btc: _0satsPattern2::new(client.clone(), "utxos_above_1btc_under_10btc".to_string()), - _1k_btc_to_10k_btc: _0satsPattern2::new(client.clone(), "utxos_above_1k_btc_under_10k_btc".to_string()), - _1k_sats_to_10k_sats: _0satsPattern2::new(client.clone(), "utxos_above_1k_sats_under_10k_sats".to_string()), - _1m_sats_to_10m_sats: _0satsPattern2::new(client.clone(), "utxos_above_1m_sats_under_10m_sats".to_string()), - _1sat_to_10sats: _0satsPattern2::new(client.clone(), "utxos_above_1sat_under_10sats".to_string()), + _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(), + ), } } } @@ -3480,8 +5390,14 @@ pub struct MetricsTree_Distribution_UtxoCohorts_Term { impl MetricsTree_Distribution_UtxoCohorts_Term { pub fn new(client: Arc, base_path: String) -> Self { Self { - long: MetricsTree_Distribution_UtxoCohorts_Term_Long::new(client.clone(), format!("{base_path}_long")), - short: MetricsTree_Distribution_UtxoCohorts_Term_Short::new(client.clone(), format!("{base_path}_short")), + long: MetricsTree_Distribution_UtxoCohorts_Term_Long::new( + client.clone(), + format!("{base_path}_long"), + ), + short: MetricsTree_Distribution_UtxoCohorts_Term_Short::new( + client.clone(), + format!("{base_path}_short"), + ), } } } @@ -3637,20 +5553,59 @@ pub struct MetricsTree_Indexes { impl MetricsTree_Indexes { pub fn new(client: Arc, base_path: String) -> Self { Self { - address: MetricsTree_Indexes_Address::new(client.clone(), format!("{base_path}_address")), - dateindex: MetricsTree_Indexes_Dateindex::new(client.clone(), format!("{base_path}_dateindex")), - decadeindex: MetricsTree_Indexes_Decadeindex::new(client.clone(), format!("{base_path}_decadeindex")), - difficultyepoch: MetricsTree_Indexes_Difficultyepoch::new(client.clone(), format!("{base_path}_difficultyepoch")), - halvingepoch: MetricsTree_Indexes_Halvingepoch::new(client.clone(), format!("{base_path}_halvingepoch")), + address: MetricsTree_Indexes_Address::new( + client.clone(), + format!("{base_path}_address"), + ), + dateindex: MetricsTree_Indexes_Dateindex::new( + client.clone(), + format!("{base_path}_dateindex"), + ), + decadeindex: MetricsTree_Indexes_Decadeindex::new( + client.clone(), + format!("{base_path}_decadeindex"), + ), + difficultyepoch: MetricsTree_Indexes_Difficultyepoch::new( + client.clone(), + format!("{base_path}_difficultyepoch"), + ), + halvingepoch: MetricsTree_Indexes_Halvingepoch::new( + client.clone(), + format!("{base_path}_halvingepoch"), + ), height: MetricsTree_Indexes_Height::new(client.clone(), format!("{base_path}_height")), - monthindex: MetricsTree_Indexes_Monthindex::new(client.clone(), format!("{base_path}_monthindex")), - quarterindex: MetricsTree_Indexes_Quarterindex::new(client.clone(), format!("{base_path}_quarterindex")), - semesterindex: MetricsTree_Indexes_Semesterindex::new(client.clone(), format!("{base_path}_semesterindex")), - txindex: MetricsTree_Indexes_Txindex::new(client.clone(), format!("{base_path}_txindex")), - txinindex: MetricsTree_Indexes_Txinindex::new(client.clone(), format!("{base_path}_txinindex")), - txoutindex: MetricsTree_Indexes_Txoutindex::new(client.clone(), format!("{base_path}_txoutindex")), - weekindex: MetricsTree_Indexes_Weekindex::new(client.clone(), format!("{base_path}_weekindex")), - yearindex: MetricsTree_Indexes_Yearindex::new(client.clone(), format!("{base_path}_yearindex")), + monthindex: MetricsTree_Indexes_Monthindex::new( + client.clone(), + format!("{base_path}_monthindex"), + ), + quarterindex: MetricsTree_Indexes_Quarterindex::new( + client.clone(), + format!("{base_path}_quarterindex"), + ), + semesterindex: MetricsTree_Indexes_Semesterindex::new( + client.clone(), + format!("{base_path}_semesterindex"), + ), + txindex: MetricsTree_Indexes_Txindex::new( + client.clone(), + format!("{base_path}_txindex"), + ), + txinindex: MetricsTree_Indexes_Txinindex::new( + client.clone(), + format!("{base_path}_txinindex"), + ), + txoutindex: MetricsTree_Indexes_Txoutindex::new( + client.clone(), + format!("{base_path}_txoutindex"), + ), + weekindex: MetricsTree_Indexes_Weekindex::new( + client.clone(), + format!("{base_path}_weekindex"), + ), + yearindex: MetricsTree_Indexes_Yearindex::new( + client.clone(), + format!("{base_path}_yearindex"), + ), } } } @@ -3674,18 +5629,51 @@ pub struct MetricsTree_Indexes_Address { impl MetricsTree_Indexes_Address { pub fn new(client: Arc, base_path: String) -> Self { Self { - empty: MetricsTree_Indexes_Address_Empty::new(client.clone(), format!("{base_path}_empty")), - opreturn: MetricsTree_Indexes_Address_Opreturn::new(client.clone(), format!("{base_path}_opreturn")), + empty: MetricsTree_Indexes_Address_Empty::new( + client.clone(), + format!("{base_path}_empty"), + ), + opreturn: MetricsTree_Indexes_Address_Opreturn::new( + client.clone(), + format!("{base_path}_opreturn"), + ), p2a: MetricsTree_Indexes_Address_P2a::new(client.clone(), format!("{base_path}_p2a")), - p2ms: MetricsTree_Indexes_Address_P2ms::new(client.clone(), format!("{base_path}_p2ms")), - p2pk33: MetricsTree_Indexes_Address_P2pk33::new(client.clone(), format!("{base_path}_p2pk33")), - p2pk65: MetricsTree_Indexes_Address_P2pk65::new(client.clone(), format!("{base_path}_p2pk65")), - p2pkh: MetricsTree_Indexes_Address_P2pkh::new(client.clone(), format!("{base_path}_p2pkh")), - p2sh: MetricsTree_Indexes_Address_P2sh::new(client.clone(), format!("{base_path}_p2sh")), - p2tr: MetricsTree_Indexes_Address_P2tr::new(client.clone(), format!("{base_path}_p2tr")), - p2wpkh: MetricsTree_Indexes_Address_P2wpkh::new(client.clone(), format!("{base_path}_p2wpkh")), - p2wsh: MetricsTree_Indexes_Address_P2wsh::new(client.clone(), format!("{base_path}_p2wsh")), - unknown: MetricsTree_Indexes_Address_Unknown::new(client.clone(), format!("{base_path}_unknown")), + p2ms: MetricsTree_Indexes_Address_P2ms::new( + client.clone(), + format!("{base_path}_p2ms"), + ), + p2pk33: MetricsTree_Indexes_Address_P2pk33::new( + client.clone(), + format!("{base_path}_p2pk33"), + ), + p2pk65: MetricsTree_Indexes_Address_P2pk65::new( + client.clone(), + format!("{base_path}_p2pk65"), + ), + p2pkh: MetricsTree_Indexes_Address_P2pkh::new( + client.clone(), + format!("{base_path}_p2pkh"), + ), + p2sh: MetricsTree_Indexes_Address_P2sh::new( + client.clone(), + format!("{base_path}_p2sh"), + ), + p2tr: MetricsTree_Indexes_Address_P2tr::new( + client.clone(), + format!("{base_path}_p2tr"), + ), + p2wpkh: MetricsTree_Indexes_Address_P2wpkh::new( + client.clone(), + format!("{base_path}_p2wpkh"), + ), + p2wsh: MetricsTree_Indexes_Address_P2wsh::new( + client.clone(), + format!("{base_path}_p2wsh"), + ), + unknown: MetricsTree_Indexes_Address_Unknown::new( + client.clone(), + format!("{base_path}_unknown"), + ), } } } @@ -4144,12 +6132,24 @@ impl MetricsTree_Market { Self { ath: MetricsTree_Market_Ath::new(client.clone(), format!("{base_path}_ath")), dca: MetricsTree_Market_Dca::new(client.clone(), format!("{base_path}_dca")), - indicators: MetricsTree_Market_Indicators::new(client.clone(), format!("{base_path}_indicators")), + indicators: MetricsTree_Market_Indicators::new( + client.clone(), + format!("{base_path}_indicators"), + ), lookback: LookbackPattern::new(client.clone(), "price".to_string()), - moving_average: MetricsTree_Market_MovingAverage::new(client.clone(), format!("{base_path}_moving_average")), + moving_average: MetricsTree_Market_MovingAverage::new( + client.clone(), + format!("{base_path}_moving_average"), + ), range: MetricsTree_Market_Range::new(client.clone(), format!("{base_path}_range")), - returns: MetricsTree_Market_Returns::new(client.clone(), format!("{base_path}_returns")), - volatility: MetricsTree_Market_Volatility::new(client.clone(), format!("{base_path}_volatility")), + returns: MetricsTree_Market_Returns::new( + client.clone(), + format!("{base_path}_returns"), + ), + volatility: MetricsTree_Market_Volatility::new( + client.clone(), + format!("{base_path}_volatility"), + ), } } } @@ -4167,12 +6167,24 @@ pub struct MetricsTree_Market_Ath { impl MetricsTree_Market_Ath { pub fn new(client: Arc, base_path: String) -> Self { Self { - days_since_price_ath: MetricPattern4::new(client.clone(), "days_since_price_ath".to_string()), - max_days_between_price_aths: MetricPattern4::new(client.clone(), "max_days_between_price_aths".to_string()), - max_years_between_price_aths: MetricPattern4::new(client.clone(), "max_years_between_price_aths".to_string()), + days_since_price_ath: MetricPattern4::new( + client.clone(), + "days_since_price_ath".to_string(), + ), + max_days_between_price_aths: MetricPattern4::new( + client.clone(), + "max_days_between_price_aths".to_string(), + ), + max_years_between_price_aths: MetricPattern4::new( + client.clone(), + "max_years_between_price_aths".to_string(), + ), price_ath: MetricPattern1::new(client.clone(), "price_ath".to_string()), price_drawdown: MetricPattern3::new(client.clone(), "price_drawdown".to_string()), - years_since_price_ath: MetricPattern4::new(client.clone(), "years_since_price_ath".to_string()), + years_since_price_ath: MetricPattern4::new( + client.clone(), + "years_since_price_ath".to_string(), + ), } } } @@ -4192,13 +6204,28 @@ pub struct MetricsTree_Market_Dca { impl MetricsTree_Market_Dca { pub fn new(client: Arc, base_path: String) -> Self { Self { - class_average_price: MetricsTree_Market_Dca_ClassAveragePrice::new(client.clone(), format!("{base_path}_class_average_price")), + class_average_price: MetricsTree_Market_Dca_ClassAveragePrice::new( + client.clone(), + format!("{base_path}_class_average_price"), + ), class_returns: ClassAveragePricePattern::new(client.clone(), "dca_class".to_string()), - class_stack: MetricsTree_Market_Dca_ClassStack::new(client.clone(), format!("{base_path}_class_stack")), - period_average_price: PeriodAveragePricePattern::new(client.clone(), "dca_average_price".to_string()), + class_stack: MetricsTree_Market_Dca_ClassStack::new( + client.clone(), + format!("{base_path}_class_stack"), + ), + period_average_price: PeriodAveragePricePattern::new( + client.clone(), + "dca_average_price".to_string(), + ), period_cagr: PeriodCagrPattern::new(client.clone(), "dca_cagr".to_string()), - period_lump_sum_stack: PeriodLumpSumStackPattern::new(client.clone(), "lump_sum_stack".to_string()), - period_returns: PeriodAveragePricePattern::new(client.clone(), "dca_returns".to_string()), + period_lump_sum_stack: PeriodLumpSumStackPattern::new( + client.clone(), + "lump_sum_stack".to_string(), + ), + period_returns: PeriodAveragePricePattern::new( + client.clone(), + "dca_returns".to_string(), + ), period_stack: PeriodLumpSumStackPattern::new(client.clone(), "dca_stack".to_string()), } } @@ -4306,8 +6333,14 @@ impl MetricsTree_Market_Indicators { rsi_14d: MetricPattern6::new(client.clone(), "rsi_14d".to_string()), rsi_14d_max: MetricPattern6::new(client.clone(), "rsi_14d_max".to_string()), rsi_14d_min: MetricPattern6::new(client.clone(), "rsi_14d_min".to_string()), - rsi_average_gain_14d: MetricPattern6::new(client.clone(), "rsi_average_gain_14d".to_string()), - rsi_average_loss_14d: MetricPattern6::new(client.clone(), "rsi_average_loss_14d".to_string()), + rsi_average_gain_14d: MetricPattern6::new( + client.clone(), + "rsi_average_gain_14d".to_string(), + ), + rsi_average_loss_14d: MetricPattern6::new( + client.clone(), + "rsi_average_loss_14d".to_string(), + ), rsi_gains: MetricPattern6::new(client.clone(), "rsi_gains".to_string()), rsi_losses: MetricPattern6::new(client.clone(), "rsi_losses".to_string()), stoch_d: MetricPattern6::new(client.clone(), "stoch_d".to_string()), @@ -4375,8 +6408,14 @@ impl MetricsTree_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(), "price_200d_sma_x0_8".to_string()), - price_200d_sma_x2_4: MetricPattern4::new(client.clone(), "price_200d_sma_x2_4".to_string()), + price_200d_sma_x0_8: MetricPattern4::new( + client.clone(), + "price_200d_sma_x0_8".to_string(), + ), + price_200d_sma_x2_4: MetricPattern4::new( + client.clone(), + "price_200d_sma_x2_4".to_string(), + ), price_200w_ema: Price111dSmaPattern::new(client.clone(), "price_200w_ema".to_string()), price_200w_sma: Price111dSmaPattern::new(client.clone(), "price_200w_sma".to_string()), price_21d_ema: Price111dSmaPattern::new(client.clone(), "price_21d_ema".to_string()), @@ -4424,11 +6463,17 @@ impl MetricsTree_Market_Range { price_1w_min: MetricPattern4::new(client.clone(), "price_1w_min".to_string()), price_1y_max: MetricPattern4::new(client.clone(), "price_1y_max".to_string()), price_1y_min: MetricPattern4::new(client.clone(), "price_1y_min".to_string()), - price_2w_choppiness_index: MetricPattern4::new(client.clone(), "price_2w_choppiness_index".to_string()), + price_2w_choppiness_index: MetricPattern4::new( + client.clone(), + "price_2w_choppiness_index".to_string(), + ), price_2w_max: MetricPattern4::new(client.clone(), "price_2w_max".to_string()), price_2w_min: MetricPattern4::new(client.clone(), "price_2w_min".to_string()), price_true_range: MetricPattern6::new(client.clone(), "price_true_range".to_string()), - price_true_range_2w_sum: MetricPattern6::new(client.clone(), "price_true_range_2w_sum".to_string()), + price_true_range_2w_sum: MetricPattern6::new( + client.clone(), + "price_true_range_2w_sum".to_string(), + ), } } } @@ -4449,15 +6494,36 @@ pub struct MetricsTree_Market_Returns { impl MetricsTree_Market_Returns { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1d_returns_1m_sd: _1dReturns1mSdPattern::new(client.clone(), "1d_returns_1m_sd".to_string()), - _1d_returns_1w_sd: _1dReturns1mSdPattern::new(client.clone(), "1d_returns_1w_sd".to_string()), - _1d_returns_1y_sd: _1dReturns1mSdPattern::new(client.clone(), "1d_returns_1y_sd".to_string()), + _1d_returns_1m_sd: _1dReturns1mSdPattern::new( + client.clone(), + "1d_returns_1m_sd".to_string(), + ), + _1d_returns_1w_sd: _1dReturns1mSdPattern::new( + client.clone(), + "1d_returns_1w_sd".to_string(), + ), + _1d_returns_1y_sd: _1dReturns1mSdPattern::new( + client.clone(), + "1d_returns_1y_sd".to_string(), + ), cagr: PeriodCagrPattern::new(client.clone(), "cagr".to_string()), - downside_1m_sd: _1dReturns1mSdPattern::new(client.clone(), "downside_1m_sd".to_string()), - downside_1w_sd: _1dReturns1mSdPattern::new(client.clone(), "downside_1w_sd".to_string()), - downside_1y_sd: _1dReturns1mSdPattern::new(client.clone(), "downside_1y_sd".to_string()), + downside_1m_sd: _1dReturns1mSdPattern::new( + client.clone(), + "downside_1m_sd".to_string(), + ), + downside_1w_sd: _1dReturns1mSdPattern::new( + client.clone(), + "downside_1w_sd".to_string(), + ), + downside_1y_sd: _1dReturns1mSdPattern::new( + client.clone(), + "downside_1y_sd".to_string(), + ), downside_returns: MetricPattern6::new(client.clone(), "downside_returns".to_string()), - price_returns: MetricsTree_Market_Returns_PriceReturns::new(client.clone(), format!("{base_path}_price_returns")), + price_returns: MetricsTree_Market_Returns_PriceReturns::new( + client.clone(), + format!("{base_path}_price_returns"), + ), } } } @@ -4515,9 +6581,18 @@ pub struct MetricsTree_Market_Volatility { impl MetricsTree_Market_Volatility { pub fn new(client: Arc, base_path: String) -> Self { Self { - price_1m_volatility: MetricPattern4::new(client.clone(), "price_1m_volatility".to_string()), - price_1w_volatility: MetricPattern4::new(client.clone(), "price_1w_volatility".to_string()), - price_1y_volatility: MetricPattern4::new(client.clone(), "price_1y_volatility".to_string()), + price_1m_volatility: MetricPattern4::new( + client.clone(), + "price_1m_volatility".to_string(), + ), + price_1w_volatility: MetricPattern4::new( + client.clone(), + "price_1w_volatility".to_string(), + ), + price_1y_volatility: MetricPattern4::new( + client.clone(), + "price_1y_volatility".to_string(), + ), sharpe_1m: MetricPattern6::new(client.clone(), "sharpe_1m".to_string()), sharpe_1w: MetricPattern6::new(client.clone(), "sharpe_1w".to_string()), sharpe_1y: MetricPattern6::new(client.clone(), "sharpe_1y".to_string()), @@ -4772,7 +6847,10 @@ impl MetricsTree_Pools_Vecs { binancepool: AaopoolPattern::new(client.clone(), "binancepool".to_string()), bitalo: AaopoolPattern::new(client.clone(), "bitalo".to_string()), bitclub: AaopoolPattern::new(client.clone(), "bitclub".to_string()), - bitcoinaffiliatenetwork: AaopoolPattern::new(client.clone(), "bitcoinaffiliatenetwork".to_string()), + bitcoinaffiliatenetwork: AaopoolPattern::new( + client.clone(), + "bitcoinaffiliatenetwork".to_string(), + ), bitcoincom: AaopoolPattern::new(client.clone(), "bitcoincom".to_string()), bitcoinindia: AaopoolPattern::new(client.clone(), "bitcoinindia".to_string()), bitcoinrussia: AaopoolPattern::new(client.clone(), "bitcoinrussia".to_string()), @@ -4818,13 +6896,19 @@ impl MetricsTree_Pools_Vecs { ekanembtc: AaopoolPattern::new(client.clone(), "ekanembtc".to_string()), eligius: AaopoolPattern::new(client.clone(), "eligius".to_string()), emcdpool: AaopoolPattern::new(client.clone(), "emcdpool".to_string()), - entrustcharitypool: AaopoolPattern::new(client.clone(), "entrustcharitypool".to_string()), + entrustcharitypool: AaopoolPattern::new( + client.clone(), + "entrustcharitypool".to_string(), + ), eobot: AaopoolPattern::new(client.clone(), "eobot".to_string()), exxbw: AaopoolPattern::new(client.clone(), "exxbw".to_string()), f2pool: AaopoolPattern::new(client.clone(), "f2pool".to_string()), fiftyeightcoin: AaopoolPattern::new(client.clone(), "fiftyeightcoin".to_string()), foundryusa: AaopoolPattern::new(client.clone(), "foundryusa".to_string()), - futurebitapollosolo: AaopoolPattern::new(client.clone(), "futurebitapollosolo".to_string()), + futurebitapollosolo: AaopoolPattern::new( + client.clone(), + "futurebitapollosolo".to_string(), + ), gbminers: AaopoolPattern::new(client.clone(), "gbminers".to_string()), ghashio: AaopoolPattern::new(client.clone(), "ghashio".to_string()), givemecoins: AaopoolPattern::new(client.clone(), "givemecoins".to_string()), @@ -4905,7 +6989,10 @@ impl MetricsTree_Pools_Vecs { tiger: AaopoolPattern::new(client.clone(), "tiger".to_string()), tigerpoolnet: AaopoolPattern::new(client.clone(), "tigerpoolnet".to_string()), titan: AaopoolPattern::new(client.clone(), "titan".to_string()), - transactioncoinmining: AaopoolPattern::new(client.clone(), "transactioncoinmining".to_string()), + transactioncoinmining: AaopoolPattern::new( + client.clone(), + "transactioncoinmining".to_string(), + ), trickysbtcpool: AaopoolPattern::new(client.clone(), "trickysbtcpool".to_string()), triplemining: AaopoolPattern::new(client.clone(), "triplemining".to_string()), twentyoneinc: AaopoolPattern::new(client.clone(), "twentyoneinc".to_string()), @@ -5024,30 +7111,87 @@ pub struct MetricsTree_Price_Oracle { impl MetricsTree_Price_Oracle { pub fn new(client: Arc, base_path: String) -> Self { Self { - height_to_first_pairoutputindex: MetricPattern11::new(client.clone(), "height_to_first_pairoutputindex".to_string()), + height_to_first_pairoutputindex: MetricPattern11::new( + client.clone(), + "height_to_first_pairoutputindex".to_string(), + ), ohlc_cents: MetricPattern6::new(client.clone(), "oracle_ohlc_cents".to_string()), ohlc_dollars: MetricPattern6::new(client.clone(), "oracle_ohlc".to_string()), output0_value: MetricPattern33::new(client.clone(), "pair_output0_value".to_string()), output1_value: MetricPattern33::new(client.clone(), "pair_output1_value".to_string()), - pairoutputindex_to_txindex: MetricPattern33::new(client.clone(), "pairoutputindex_to_txindex".to_string()), - phase_daily_cents: PhaseDailyCentsPattern::new(client.clone(), "phase_daily".to_string()), - phase_daily_dollars: PhaseDailyCentsPattern::new(client.clone(), "phase_daily_dollars".to_string()), + pairoutputindex_to_txindex: MetricPattern33::new( + client.clone(), + "pairoutputindex_to_txindex".to_string(), + ), + phase_daily_cents: PhaseDailyCentsPattern::new( + client.clone(), + "phase_daily".to_string(), + ), + phase_daily_dollars: PhaseDailyCentsPattern::new( + client.clone(), + "phase_daily_dollars".to_string(), + ), phase_histogram: MetricPattern11::new(client.clone(), "phase_histogram".to_string()), - phase_price_cents: MetricPattern11::new(client.clone(), "phase_price_cents".to_string()), - phase_v2_daily_cents: PhaseDailyCentsPattern::new(client.clone(), "phase_v2_daily".to_string()), - phase_v2_daily_dollars: PhaseDailyCentsPattern::new(client.clone(), "phase_v2_daily_dollars".to_string()), - phase_v2_histogram: MetricPattern11::new(client.clone(), "phase_v2_histogram".to_string()), - phase_v2_peak_daily_cents: PhaseDailyCentsPattern::new(client.clone(), "phase_v2_peak_daily".to_string()), - phase_v2_peak_daily_dollars: PhaseDailyCentsPattern::new(client.clone(), "phase_v2_peak_daily_dollars".to_string()), - phase_v2_peak_price_cents: MetricPattern11::new(client.clone(), "phase_v2_peak_price_cents".to_string()), - phase_v2_price_cents: MetricPattern11::new(client.clone(), "phase_v2_price_cents".to_string()), - phase_v3_daily_cents: PhaseDailyCentsPattern::new(client.clone(), "phase_v3_daily".to_string()), - phase_v3_daily_dollars: PhaseDailyCentsPattern::new(client.clone(), "phase_v3_daily_dollars".to_string()), - phase_v3_histogram: MetricPattern11::new(client.clone(), "phase_v3_histogram".to_string()), - phase_v3_peak_daily_cents: PhaseDailyCentsPattern::new(client.clone(), "phase_v3_peak_daily".to_string()), - phase_v3_peak_daily_dollars: PhaseDailyCentsPattern::new(client.clone(), "phase_v3_peak_daily_dollars".to_string()), - phase_v3_peak_price_cents: MetricPattern11::new(client.clone(), "phase_v3_peak_price_cents".to_string()), - phase_v3_price_cents: MetricPattern11::new(client.clone(), "phase_v3_price_cents".to_string()), + phase_price_cents: MetricPattern11::new( + client.clone(), + "phase_price_cents".to_string(), + ), + phase_v2_daily_cents: PhaseDailyCentsPattern::new( + client.clone(), + "phase_v2_daily".to_string(), + ), + phase_v2_daily_dollars: PhaseDailyCentsPattern::new( + client.clone(), + "phase_v2_daily_dollars".to_string(), + ), + phase_v2_histogram: MetricPattern11::new( + client.clone(), + "phase_v2_histogram".to_string(), + ), + phase_v2_peak_daily_cents: PhaseDailyCentsPattern::new( + client.clone(), + "phase_v2_peak_daily".to_string(), + ), + phase_v2_peak_daily_dollars: PhaseDailyCentsPattern::new( + client.clone(), + "phase_v2_peak_daily_dollars".to_string(), + ), + phase_v2_peak_price_cents: MetricPattern11::new( + client.clone(), + "phase_v2_peak_price_cents".to_string(), + ), + phase_v2_price_cents: MetricPattern11::new( + client.clone(), + "phase_v2_price_cents".to_string(), + ), + phase_v3_daily_cents: PhaseDailyCentsPattern::new( + client.clone(), + "phase_v3_daily".to_string(), + ), + phase_v3_daily_dollars: PhaseDailyCentsPattern::new( + client.clone(), + "phase_v3_daily_dollars".to_string(), + ), + phase_v3_histogram: MetricPattern11::new( + client.clone(), + "phase_v3_histogram".to_string(), + ), + phase_v3_peak_daily_cents: PhaseDailyCentsPattern::new( + client.clone(), + "phase_v3_peak_daily".to_string(), + ), + phase_v3_peak_daily_dollars: PhaseDailyCentsPattern::new( + client.clone(), + "phase_v3_peak_daily_dollars".to_string(), + ), + phase_v3_peak_price_cents: MetricPattern11::new( + client.clone(), + "phase_v3_peak_price_cents".to_string(), + ), + phase_v3_price_cents: MetricPattern11::new( + client.clone(), + "phase_v3_price_cents".to_string(), + ), price_cents: MetricPattern11::new(client.clone(), "oracle_price_cents".to_string()), tx_count: MetricPattern6::new(client.clone(), "oracle_tx_count".to_string()), } @@ -5088,10 +7232,22 @@ impl MetricsTree_Scripts { Self { count: MetricsTree_Scripts_Count::new(client.clone(), format!("{base_path}_count")), empty_to_txindex: MetricPattern9::new(client.clone(), "txindex".to_string()), - first_emptyoutputindex: MetricPattern11::new(client.clone(), "first_emptyoutputindex".to_string()), - first_opreturnindex: MetricPattern11::new(client.clone(), "first_opreturnindex".to_string()), - first_p2msoutputindex: MetricPattern11::new(client.clone(), "first_p2msoutputindex".to_string()), - first_unknownoutputindex: MetricPattern11::new(client.clone(), "first_unknownoutputindex".to_string()), + first_emptyoutputindex: MetricPattern11::new( + client.clone(), + "first_emptyoutputindex".to_string(), + ), + first_opreturnindex: MetricPattern11::new( + client.clone(), + "first_opreturnindex".to_string(), + ), + first_p2msoutputindex: MetricPattern11::new( + client.clone(), + "first_p2msoutputindex".to_string(), + ), + first_unknownoutputindex: MetricPattern11::new( + client.clone(), + "first_unknownoutputindex".to_string(), + ), opreturn_to_txindex: MetricPattern14::new(client.clone(), "txindex".to_string()), p2ms_to_txindex: MetricPattern17::new(client.clone(), "txindex".to_string()), unknown_to_txindex: MetricPattern28::new(client.clone(), "txindex".to_string()), @@ -5134,8 +7290,14 @@ impl MetricsTree_Scripts_Count { p2wpkh: DollarsPattern::new(client.clone(), "p2wpkh_count".to_string()), p2wsh: DollarsPattern::new(client.clone(), "p2wsh_count".to_string()), segwit: DollarsPattern::new(client.clone(), "segwit_count".to_string()), - segwit_adoption: SegwitAdoptionPattern::new(client.clone(), "segwit_adoption".to_string()), - taproot_adoption: SegwitAdoptionPattern::new(client.clone(), "taproot_adoption".to_string()), + segwit_adoption: SegwitAdoptionPattern::new( + client.clone(), + "segwit_adoption".to_string(), + ), + taproot_adoption: SegwitAdoptionPattern::new( + client.clone(), + "taproot_adoption".to_string(), + ), unknownoutput: DollarsPattern::new(client.clone(), "unknownoutput_count".to_string()), } } @@ -5167,10 +7329,16 @@ impl MetricsTree_Supply { pub fn new(client: Arc, base_path: String) -> Self { Self { burned: MetricsTree_Supply_Burned::new(client.clone(), format!("{base_path}_burned")), - circulating: MetricsTree_Supply_Circulating::new(client.clone(), format!("{base_path}_circulating")), + circulating: MetricsTree_Supply_Circulating::new( + client.clone(), + format!("{base_path}_circulating"), + ), inflation: MetricPattern4::new(client.clone(), "inflation_rate".to_string()), market_cap: MetricPattern1::new(client.clone(), "market_cap".to_string()), - velocity: MetricsTree_Supply_Velocity::new(client.clone(), format!("{base_path}_velocity")), + velocity: MetricsTree_Supply_Velocity::new( + client.clone(), + format!("{base_path}_velocity"), + ), } } } @@ -5185,7 +7353,10 @@ impl MetricsTree_Supply_Burned { pub fn new(client: Arc, base_path: String) -> Self { Self { opreturn: UnclaimedRewardsPattern::new(client.clone(), "opreturn_supply".to_string()), - unspendable: UnclaimedRewardsPattern::new(client.clone(), "unspendable_supply".to_string()), + unspendable: UnclaimedRewardsPattern::new( + client.clone(), + "unspendable_supply".to_string(), + ), } } } @@ -5245,20 +7416,32 @@ impl MetricsTree_Transactions { pub fn new(client: Arc, base_path: String) -> Self { Self { base_size: MetricPattern27::new(client.clone(), "base_size".to_string()), - count: MetricsTree_Transactions_Count::new(client.clone(), format!("{base_path}_count")), + count: MetricsTree_Transactions_Count::new( + client.clone(), + format!("{base_path}_count"), + ), fees: MetricsTree_Transactions_Fees::new(client.clone(), format!("{base_path}_fees")), first_txindex: MetricPattern11::new(client.clone(), "first_txindex".to_string()), first_txinindex: MetricPattern27::new(client.clone(), "first_txinindex".to_string()), first_txoutindex: MetricPattern27::new(client.clone(), "first_txoutindex".to_string()), height: MetricPattern27::new(client.clone(), "height".to_string()), - is_explicitly_rbf: MetricPattern27::new(client.clone(), "is_explicitly_rbf".to_string()), + is_explicitly_rbf: MetricPattern27::new( + client.clone(), + "is_explicitly_rbf".to_string(), + ), rawlocktime: MetricPattern27::new(client.clone(), "rawlocktime".to_string()), size: MetricsTree_Transactions_Size::new(client.clone(), format!("{base_path}_size")), total_size: MetricPattern27::new(client.clone(), "total_size".to_string()), txid: MetricPattern27::new(client.clone(), "txid".to_string()), txversion: MetricPattern27::new(client.clone(), "txversion".to_string()), - versions: MetricsTree_Transactions_Versions::new(client.clone(), format!("{base_path}_versions")), - volume: MetricsTree_Transactions_Volume::new(client.clone(), format!("{base_path}_volume")), + versions: MetricsTree_Transactions_Versions::new( + client.clone(), + format!("{base_path}_versions"), + ), + volume: MetricsTree_Transactions_Volume::new( + client.clone(), + format!("{base_path}_volume"), + ), } } } @@ -5309,7 +7492,10 @@ impl MetricsTree_Transactions_Fees_Fee { pub fn new(client: Arc, base_path: String) -> Self { Self { bitcoin: CountPattern2::new(client.clone(), "fee_btc".to_string()), - dollars: MetricsTree_Transactions_Fees_Fee_Dollars::new(client.clone(), format!("{base_path}_dollars")), + dollars: MetricsTree_Transactions_Fees_Fee_Dollars::new( + client.clone(), + format!("{base_path}_dollars"), + ), sats: CountPattern2::new(client.clone(), "fee".to_string()), txindex: MetricPattern27::new(client.clone(), "fee".to_string()), } @@ -5336,7 +7522,10 @@ impl MetricsTree_Transactions_Fees_Fee_Dollars { Self { average: MetricPattern1::new(client.clone(), "fee_usd_average".to_string()), cumulative: MetricPattern2::new(client.clone(), "fee_usd_cumulative".to_string()), - height_cumulative: MetricPattern11::new(client.clone(), "fee_usd_cumulative".to_string()), + height_cumulative: MetricPattern11::new( + client.clone(), + "fee_usd_cumulative".to_string(), + ), max: MetricPattern1::new(client.clone(), "fee_usd_max".to_string()), median: MetricPattern11::new(client.clone(), "fee_usd_median".to_string()), min: MetricPattern1::new(client.clone(), "fee_usd_min".to_string()), @@ -5442,12 +7631,12 @@ impl BrkClient { /// .last(10) /// .json::()?; /// ``` - pub fn metric(&self, metric: impl Into, index: Index) -> MetricEndpointBuilder { - MetricEndpointBuilder::new( - self.base.clone(), - Arc::from(metric.into().as_str()), - index, - ) + pub fn metric( + &self, + metric: impl Into, + index: Index, + ) -> MetricEndpointBuilder { + MetricEndpointBuilder::new(self.base.clone(), Arc::from(metric.into().as_str()), index) } /// Compact OpenAPI specification @@ -5477,11 +7666,24 @@ impl BrkClient { /// *[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-transactions)* /// /// Endpoint: `GET /api/address/{address}/txs` - pub fn get_address_txs(&self, address: Address, after_txid: Option<&str>, limit: Option) -> Result> { + pub fn get_address_txs( + &self, + address: Address, + after_txid: Option<&str>, + limit: Option, + ) -> Result> { let mut query = Vec::new(); - if let Some(v) = after_txid { query.push(format!("after_txid={}", v)); } - if let Some(v) = limit { query.push(format!("limit={}", v)); } - let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; + if let Some(v) = after_txid { + query.push(format!("after_txid={}", v)); + } + if let Some(v) = limit { + query.push(format!("limit={}", v)); + } + let query_str = if query.is_empty() { + String::new() + } else { + format!("?{}", query.join("&")) + }; let path = format!("/api/address/{address}/txs{}", query_str); self.base.get_json(&path) } @@ -5493,11 +7695,24 @@ impl BrkClient { /// *[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-transactions-chain)* /// /// Endpoint: `GET /api/address/{address}/txs/chain` - pub fn get_address_confirmed_txs(&self, address: Address, after_txid: Option<&str>, limit: Option) -> Result> { + pub fn get_address_confirmed_txs( + &self, + address: Address, + after_txid: Option<&str>, + limit: Option, + ) -> Result> { let mut query = Vec::new(); - if let Some(v) = after_txid { query.push(format!("after_txid={}", v)); } - if let Some(v) = limit { query.push(format!("limit={}", v)); } - let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; + if let Some(v) = after_txid { + query.push(format!("after_txid={}", v)); + } + if let Some(v) = limit { + query.push(format!("limit={}", v)); + } + let query_str = if query.is_empty() { + String::new() + } else { + format!("?{}", query.join("&")) + }; let path = format!("/api/address/{address}/txs/chain{}", query_str); self.base.get_json(&path) } @@ -5510,7 +7725,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/address/{address}/txs/mempool` pub fn get_address_mempool_txs(&self, address: Address) -> Result> { - self.base.get_json(&format!("/api/address/{address}/txs/mempool")) + self.base + .get_json(&format!("/api/address/{address}/txs/mempool")) } /// Address UTXOs @@ -5576,7 +7792,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/block/{hash}/txid/{index}` pub fn get_block_txid(&self, hash: BlockHash, index: TxIndex) -> Result { - self.base.get_json(&format!("/api/block/{hash}/txid/{index}")) + self.base + .get_json(&format!("/api/block/{hash}/txid/{index}")) } /// Block transaction IDs @@ -5598,7 +7815,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/block/{hash}/txs/{start_index}` pub fn get_block_txs(&self, hash: BlockHash, start_index: TxIndex) -> Result> { - self.base.get_json(&format!("/api/block/{hash}/txs/{start_index}")) + self.base + .get_json(&format!("/api/block/{hash}/txs/{start_index}")) } /// Recent blocks @@ -5659,14 +7877,38 @@ impl BrkClient { /// Fetch data for a specific metric at the given index. Use query parameters to filter by date range and format (json/csv). /// /// Endpoint: `GET /api/metric/{metric}/{index}` - pub fn get_metric(&self, metric: Metric, index: Index, start: Option, end: Option, limit: Option<&str>, format: Option) -> Result> { + pub fn get_metric( + &self, + metric: Metric, + index: Index, + start: Option, + end: Option, + limit: Option<&str>, + format: Option, + ) -> Result> { let mut query = Vec::new(); - if let Some(v) = start { query.push(format!("start={}", v)); } - if let Some(v) = end { query.push(format!("end={}", v)); } - if let Some(v) = limit { query.push(format!("limit={}", v)); } - if let Some(v) = format { query.push(format!("format={}", v)); } - let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; - let path = format!("/api/metric/{metric}/{}{}", index.serialize_long(), query_str); + if let Some(v) = start { + query.push(format!("start={}", v)); + } + if let Some(v) = end { + query.push(format!("end={}", v)); + } + if let Some(v) = limit { + query.push(format!("limit={}", v)); + } + if let Some(v) = format { + query.push(format!("format={}", v)); + } + let query_str = if query.is_empty() { + String::new() + } else { + format!("?{}", query.join("&")) + }; + let path = format!( + "/api/metric/{metric}/{}{}", + index.serialize_long(), + query_str + ); if format == Some(Format::CSV) { self.base.get_text(&path).map(FormatResponse::Csv) } else { @@ -5688,15 +7930,35 @@ impl BrkClient { /// Fetch multiple metrics in a single request. Supports filtering by index and date range. Returns an array of MetricData objects. For a single metric, use `get_metric` instead. /// /// Endpoint: `GET /api/metrics/bulk` - pub fn get_metrics(&self, metrics: Metrics, index: Index, start: Option, end: Option, limit: Option<&str>, format: Option) -> Result>> { + pub fn get_metrics( + &self, + metrics: Metrics, + index: Index, + start: Option, + end: Option, + limit: Option<&str>, + format: Option, + ) -> Result>> { let mut query = Vec::new(); query.push(format!("metrics={}", metrics)); query.push(format!("index={}", index)); - if let Some(v) = start { query.push(format!("start={}", v)); } - if let Some(v) = end { query.push(format!("end={}", v)); } - if let Some(v) = limit { query.push(format!("limit={}", v)); } - if let Some(v) = format { query.push(format!("format={}", v)); } - let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; + if let Some(v) = start { + query.push(format!("start={}", v)); + } + if let Some(v) = end { + query.push(format!("end={}", v)); + } + if let Some(v) = limit { + query.push(format!("limit={}", v)); + } + if let Some(v) = format { + query.push(format!("format={}", v)); + } + let query_str = if query.is_empty() { + String::new() + } else { + format!("?{}", query.join("&")) + }; let path = format!("/api/metrics/bulk{}", query_str); if format == Some(Format::CSV) { self.base.get_text(&path).map(FormatResponse::Csv) @@ -5730,8 +7992,14 @@ impl BrkClient { /// Endpoint: `GET /api/metrics/list` pub fn list_metrics(&self, page: Option) -> Result { let mut query = Vec::new(); - if let Some(v) = page { query.push(format!("page={}", v)); } - let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; + if let Some(v) = page { + query.push(format!("page={}", v)); + } + let query_str = if query.is_empty() { + String::new() + } else { + format!("?{}", query.join("&")) + }; let path = format!("/api/metrics/list{}", query_str); self.base.get_json(&path) } @@ -5743,8 +8011,14 @@ impl BrkClient { /// Endpoint: `GET /api/metrics/search/{metric}` pub fn search_metrics(&self, metric: Metric, limit: Option) -> Result> { let mut query = Vec::new(); - if let Some(v) = limit { query.push(format!("limit={}", v)); } - let query_str = if query.is_empty() { String::new() } else { format!("?{}", query.join("&")) }; + if let Some(v) = limit { + query.push(format!("limit={}", v)); + } + let query_str = if query.is_empty() { + String::new() + } else { + format!("?{}", query.join("&")) + }; let path = format!("/api/metrics/search/{metric}{}", query_str); self.base.get_json(&path) } @@ -5797,7 +8071,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/tx/{txid}/outspend/{vout}` pub fn get_tx_outspend(&self, txid: Txid, vout: Vout) -> Result { - self.base.get_json(&format!("/api/tx/{txid}/outspend/{vout}")) + self.base + .get_json(&format!("/api/tx/{txid}/outspend/{vout}")) } /// All output spend statuses @@ -5830,7 +8105,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/difficulty-adjustment` pub fn get_difficulty_adjustment(&self) -> Result { - self.base.get_json(&format!("/api/v1/difficulty-adjustment")) + self.base + .get_json(&format!("/api/v1/difficulty-adjustment")) } /// Projected mempool blocks @@ -5863,7 +8139,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/blocks/fee-rates/{time_period}` pub fn get_block_fee_rates(&self, time_period: TimePeriod) -> Result { - self.base.get_json(&format!("/api/v1/mining/blocks/fee-rates/{time_period}")) + self.base + .get_json(&format!("/api/v1/mining/blocks/fee-rates/{time_period}")) } /// Block fees @@ -5874,7 +8151,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/blocks/fees/{time_period}` pub fn get_block_fees(&self, time_period: TimePeriod) -> Result> { - self.base.get_json(&format!("/api/v1/mining/blocks/fees/{time_period}")) + self.base + .get_json(&format!("/api/v1/mining/blocks/fees/{time_period}")) } /// Block rewards @@ -5885,7 +8163,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/blocks/rewards/{time_period}` pub fn get_block_rewards(&self, time_period: TimePeriod) -> Result> { - self.base.get_json(&format!("/api/v1/mining/blocks/rewards/{time_period}")) + self.base + .get_json(&format!("/api/v1/mining/blocks/rewards/{time_period}")) } /// Block sizes and weights @@ -5896,7 +8175,9 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/blocks/sizes-weights/{time_period}` pub fn get_block_sizes_weights(&self, time_period: TimePeriod) -> Result { - self.base.get_json(&format!("/api/v1/mining/blocks/sizes-weights/{time_period}")) + self.base.get_json(&format!( + "/api/v1/mining/blocks/sizes-weights/{time_period}" + )) } /// Block by timestamp @@ -5907,7 +8188,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/blocks/timestamp/{timestamp}` pub fn get_block_by_timestamp(&self, timestamp: Timestamp) -> Result { - self.base.get_json(&format!("/api/v1/mining/blocks/timestamp/{timestamp}")) + self.base + .get_json(&format!("/api/v1/mining/blocks/timestamp/{timestamp}")) } /// Difficulty adjustments (all time) @@ -5918,7 +8200,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/difficulty-adjustments` pub fn get_difficulty_adjustments(&self) -> Result> { - self.base.get_json(&format!("/api/v1/mining/difficulty-adjustments")) + self.base + .get_json(&format!("/api/v1/mining/difficulty-adjustments")) } /// Difficulty adjustments @@ -5928,8 +8211,13 @@ impl BrkClient { /// *[Mempool.space docs](https://mempool.space/docs/api/rest#get-difficulty-adjustments)* /// /// Endpoint: `GET /api/v1/mining/difficulty-adjustments/{time_period}` - pub fn get_difficulty_adjustments_by_period(&self, time_period: TimePeriod) -> Result> { - self.base.get_json(&format!("/api/v1/mining/difficulty-adjustments/{time_period}")) + pub fn get_difficulty_adjustments_by_period( + &self, + time_period: TimePeriod, + ) -> Result> { + self.base.get_json(&format!( + "/api/v1/mining/difficulty-adjustments/{time_period}" + )) } /// Network hashrate (all time) @@ -5951,7 +8239,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/hashrate/{time_period}` pub fn get_hashrate_by_period(&self, time_period: TimePeriod) -> Result { - self.base.get_json(&format!("/api/v1/mining/hashrate/{time_period}")) + self.base + .get_json(&format!("/api/v1/mining/hashrate/{time_period}")) } /// Mining pool details @@ -5984,7 +8273,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/pools/{time_period}` pub fn get_pool_stats(&self, time_period: TimePeriod) -> Result { - self.base.get_json(&format!("/api/v1/mining/pools/{time_period}")) + self.base + .get_json(&format!("/api/v1/mining/pools/{time_period}")) } /// Mining reward statistics @@ -5995,7 +8285,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/mining/reward-stats/{block_count}` pub fn get_reward_stats(&self, block_count: i64) -> Result { - self.base.get_json(&format!("/api/v1/mining/reward-stats/{block_count}")) + self.base + .get_json(&format!("/api/v1/mining/reward-stats/{block_count}")) } /// Validate address @@ -6006,7 +8297,8 @@ impl BrkClient { /// /// Endpoint: `GET /api/v1/validate-address/{address}` pub fn validate_address(&self, address: &str) -> Result { - self.base.get_json(&format!("/api/v1/validate-address/{address}")) + self.base + .get_json(&format!("/api/v1/validate-address/{address}")) } /// Health check @@ -6035,5 +8327,4 @@ impl BrkClient { pub fn get_version(&self) -> Result { self.base.get_json(&format!("/version")) } - } diff --git a/scripts/release.sh b/scripts/release.sh index 42644e03b..249988b66 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -121,6 +121,10 @@ echo "=== Rust release ===" echo "" cd "$ROOT_DIR" + +# Verify all +cargo publish --workspace --dry-run --allow-dirty + # Version bump, commit, and tag (but don't publish yet) cargo release "$RELEASE_ARG" --execute --no-publish