mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-07-21 07:58:11 -07:00
server: snapshot
This commit is contained in:
Generated
+7
-7
@@ -799,9 +799,9 @@ checksum = "dda4398f387cc6395a3e93b3867cd9abda914c97a0b344d1eefb2e5c51785fca"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.2.52"
|
version = "1.2.53"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cd4932aefd12402b36c60956a4fe0035421f544799057659ff86f923657aada3"
|
checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"find-msvc-tools",
|
"find-msvc-tools",
|
||||||
"jobserver",
|
"jobserver",
|
||||||
@@ -1302,9 +1302,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "find-msvc-tools"
|
name = "find-msvc-tools"
|
||||||
version = "0.1.7"
|
version = "0.1.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f449e6c6c08c865631d4890cfacf252b3d396c9bcc83adb6623cdb02a8336c41"
|
checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fjall"
|
name = "fjall"
|
||||||
@@ -1822,13 +1822,13 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "importmap"
|
name = "importmap"
|
||||||
version = "0.2.0"
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9995d103127daa52df1cd851c1bc9d8b023e4591ca4bdb47836b821499ab35f9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"include_dir",
|
"include_dir",
|
||||||
"rapidhash",
|
"rapidhash",
|
||||||
"serde",
|
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"walkdir",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
+314
-314
@@ -1600,6 +1600,40 @@ impl BitcoinPattern {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct ClassAveragePricePattern<T> {
|
||||||
|
pub _2015: MetricPattern4<T>,
|
||||||
|
pub _2016: MetricPattern4<T>,
|
||||||
|
pub _2017: MetricPattern4<T>,
|
||||||
|
pub _2018: MetricPattern4<T>,
|
||||||
|
pub _2019: MetricPattern4<T>,
|
||||||
|
pub _2020: MetricPattern4<T>,
|
||||||
|
pub _2021: MetricPattern4<T>,
|
||||||
|
pub _2022: MetricPattern4<T>,
|
||||||
|
pub _2023: MetricPattern4<T>,
|
||||||
|
pub _2024: MetricPattern4<T>,
|
||||||
|
pub _2025: MetricPattern4<T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: DeserializeOwned> ClassAveragePricePattern<T> {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
_2015: MetricPattern4::new(client.clone(), _m(&acc, "2015_returns")),
|
||||||
|
_2016: MetricPattern4::new(client.clone(), _m(&acc, "2016_returns")),
|
||||||
|
_2017: MetricPattern4::new(client.clone(), _m(&acc, "2017_returns")),
|
||||||
|
_2018: MetricPattern4::new(client.clone(), _m(&acc, "2018_returns")),
|
||||||
|
_2019: MetricPattern4::new(client.clone(), _m(&acc, "2019_returns")),
|
||||||
|
_2020: MetricPattern4::new(client.clone(), _m(&acc, "2020_returns")),
|
||||||
|
_2021: MetricPattern4::new(client.clone(), _m(&acc, "2021_returns")),
|
||||||
|
_2022: MetricPattern4::new(client.clone(), _m(&acc, "2022_returns")),
|
||||||
|
_2023: MetricPattern4::new(client.clone(), _m(&acc, "2023_returns")),
|
||||||
|
_2024: MetricPattern4::new(client.clone(), _m(&acc, "2024_returns")),
|
||||||
|
_2025: MetricPattern4::new(client.clone(), _m(&acc, "2025_returns")),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
/// Pattern struct for repeated tree structure.
|
||||||
pub struct DollarsPattern<T> {
|
pub struct DollarsPattern<T> {
|
||||||
pub average: MetricPattern2<T>,
|
pub average: MetricPattern2<T>,
|
||||||
@@ -1634,40 +1668,6 @@ impl<T: DeserializeOwned> DollarsPattern<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct ClassAveragePricePattern<T> {
|
|
||||||
pub _2015: MetricPattern4<T>,
|
|
||||||
pub _2016: MetricPattern4<T>,
|
|
||||||
pub _2017: MetricPattern4<T>,
|
|
||||||
pub _2018: MetricPattern4<T>,
|
|
||||||
pub _2019: MetricPattern4<T>,
|
|
||||||
pub _2020: MetricPattern4<T>,
|
|
||||||
pub _2021: MetricPattern4<T>,
|
|
||||||
pub _2022: MetricPattern4<T>,
|
|
||||||
pub _2023: MetricPattern4<T>,
|
|
||||||
pub _2024: MetricPattern4<T>,
|
|
||||||
pub _2025: MetricPattern4<T>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: DeserializeOwned> ClassAveragePricePattern<T> {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
_2015: MetricPattern4::new(client.clone(), _m(&acc, "2015_average_price")),
|
|
||||||
_2016: MetricPattern4::new(client.clone(), _m(&acc, "2016_average_price")),
|
|
||||||
_2017: MetricPattern4::new(client.clone(), _m(&acc, "2017_average_price")),
|
|
||||||
_2018: MetricPattern4::new(client.clone(), _m(&acc, "2018_average_price")),
|
|
||||||
_2019: MetricPattern4::new(client.clone(), _m(&acc, "2019_average_price")),
|
|
||||||
_2020: MetricPattern4::new(client.clone(), _m(&acc, "2020_average_price")),
|
|
||||||
_2021: MetricPattern4::new(client.clone(), _m(&acc, "2021_average_price")),
|
|
||||||
_2022: MetricPattern4::new(client.clone(), _m(&acc, "2022_average_price")),
|
|
||||||
_2023: MetricPattern4::new(client.clone(), _m(&acc, "2023_average_price")),
|
|
||||||
_2024: MetricPattern4::new(client.clone(), _m(&acc, "2024_average_price")),
|
|
||||||
_2025: MetricPattern4::new(client.clone(), _m(&acc, "2025_average_price")),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
/// Pattern struct for repeated tree structure.
|
||||||
pub struct RelativePattern2 {
|
pub struct RelativePattern2 {
|
||||||
pub neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1<StoredF32>,
|
pub neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1<StoredF32>,
|
||||||
@@ -1910,6 +1910,110 @@ impl<T: DeserializeOwned> PhaseDailyCentsPattern<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct _10yPattern {
|
||||||
|
pub activity: ActivityPattern2,
|
||||||
|
pub cost_basis: CostBasisPattern,
|
||||||
|
pub outputs: OutputsPattern,
|
||||||
|
pub realized: RealizedPattern4,
|
||||||
|
pub relative: RelativePattern,
|
||||||
|
pub supply: SupplyPattern2,
|
||||||
|
pub unrealized: UnrealizedPattern,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl _10yPattern {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
activity: ActivityPattern2::new(client.clone(), acc.clone()),
|
||||||
|
cost_basis: CostBasisPattern::new(client.clone(), acc.clone()),
|
||||||
|
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
|
||||||
|
realized: RealizedPattern4::new(client.clone(), acc.clone()),
|
||||||
|
relative: RelativePattern::new(client.clone(), acc.clone()),
|
||||||
|
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
|
||||||
|
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct PeriodCagrPattern {
|
||||||
|
pub _10y: MetricPattern4<StoredF32>,
|
||||||
|
pub _2y: MetricPattern4<StoredF32>,
|
||||||
|
pub _3y: MetricPattern4<StoredF32>,
|
||||||
|
pub _4y: MetricPattern4<StoredF32>,
|
||||||
|
pub _5y: MetricPattern4<StoredF32>,
|
||||||
|
pub _6y: MetricPattern4<StoredF32>,
|
||||||
|
pub _8y: MetricPattern4<StoredF32>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PeriodCagrPattern {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
_10y: MetricPattern4::new(client.clone(), _p("10y", &acc)),
|
||||||
|
_2y: MetricPattern4::new(client.clone(), _p("2y", &acc)),
|
||||||
|
_3y: MetricPattern4::new(client.clone(), _p("3y", &acc)),
|
||||||
|
_4y: MetricPattern4::new(client.clone(), _p("4y", &acc)),
|
||||||
|
_5y: MetricPattern4::new(client.clone(), _p("5y", &acc)),
|
||||||
|
_6y: MetricPattern4::new(client.clone(), _p("6y", &acc)),
|
||||||
|
_8y: MetricPattern4::new(client.clone(), _p("8y", &acc)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct _10yTo12yPattern {
|
||||||
|
pub activity: ActivityPattern2,
|
||||||
|
pub cost_basis: CostBasisPattern2,
|
||||||
|
pub outputs: OutputsPattern,
|
||||||
|
pub realized: RealizedPattern2,
|
||||||
|
pub relative: RelativePattern2,
|
||||||
|
pub supply: SupplyPattern2,
|
||||||
|
pub unrealized: UnrealizedPattern,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl _10yTo12yPattern {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
activity: ActivityPattern2::new(client.clone(), acc.clone()),
|
||||||
|
cost_basis: CostBasisPattern2::new(client.clone(), acc.clone()),
|
||||||
|
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
|
||||||
|
realized: RealizedPattern2::new(client.clone(), acc.clone()),
|
||||||
|
relative: RelativePattern2::new(client.clone(), acc.clone()),
|
||||||
|
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
|
||||||
|
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct _0satsPattern2 {
|
||||||
|
pub activity: ActivityPattern2,
|
||||||
|
pub cost_basis: CostBasisPattern,
|
||||||
|
pub outputs: OutputsPattern,
|
||||||
|
pub realized: RealizedPattern,
|
||||||
|
pub relative: RelativePattern4,
|
||||||
|
pub supply: SupplyPattern2,
|
||||||
|
pub unrealized: UnrealizedPattern,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl _0satsPattern2 {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
activity: ActivityPattern2::new(client.clone(), acc.clone()),
|
||||||
|
cost_basis: CostBasisPattern::new(client.clone(), acc.clone()),
|
||||||
|
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
|
||||||
|
realized: RealizedPattern::new(client.clone(), acc.clone()),
|
||||||
|
relative: RelativePattern4::new(client.clone(), _m(&acc, "supply_in")),
|
||||||
|
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
|
||||||
|
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
/// Pattern struct for repeated tree structure.
|
||||||
pub struct UnrealizedPattern {
|
pub struct UnrealizedPattern {
|
||||||
pub neg_unrealized_loss: MetricPattern1<Dollars>,
|
pub neg_unrealized_loss: MetricPattern1<Dollars>,
|
||||||
@@ -1962,110 +2066,6 @@ impl _100btcPattern {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct _0satsPattern2 {
|
|
||||||
pub activity: ActivityPattern2,
|
|
||||||
pub cost_basis: CostBasisPattern,
|
|
||||||
pub outputs: OutputsPattern,
|
|
||||||
pub realized: RealizedPattern,
|
|
||||||
pub relative: RelativePattern4,
|
|
||||||
pub supply: SupplyPattern2,
|
|
||||||
pub unrealized: UnrealizedPattern,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl _0satsPattern2 {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
activity: ActivityPattern2::new(client.clone(), acc.clone()),
|
|
||||||
cost_basis: CostBasisPattern::new(client.clone(), acc.clone()),
|
|
||||||
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
|
|
||||||
realized: RealizedPattern::new(client.clone(), acc.clone()),
|
|
||||||
relative: RelativePattern4::new(client.clone(), _m(&acc, "supply_in")),
|
|
||||||
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
|
|
||||||
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct _10yPattern {
|
|
||||||
pub activity: ActivityPattern2,
|
|
||||||
pub cost_basis: CostBasisPattern,
|
|
||||||
pub outputs: OutputsPattern,
|
|
||||||
pub realized: RealizedPattern4,
|
|
||||||
pub relative: RelativePattern,
|
|
||||||
pub supply: SupplyPattern2,
|
|
||||||
pub unrealized: UnrealizedPattern,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl _10yPattern {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
activity: ActivityPattern2::new(client.clone(), acc.clone()),
|
|
||||||
cost_basis: CostBasisPattern::new(client.clone(), acc.clone()),
|
|
||||||
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
|
|
||||||
realized: RealizedPattern4::new(client.clone(), acc.clone()),
|
|
||||||
relative: RelativePattern::new(client.clone(), acc.clone()),
|
|
||||||
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
|
|
||||||
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct _10yTo12yPattern {
|
|
||||||
pub activity: ActivityPattern2,
|
|
||||||
pub cost_basis: CostBasisPattern2,
|
|
||||||
pub outputs: OutputsPattern,
|
|
||||||
pub realized: RealizedPattern2,
|
|
||||||
pub relative: RelativePattern2,
|
|
||||||
pub supply: SupplyPattern2,
|
|
||||||
pub unrealized: UnrealizedPattern,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl _10yTo12yPattern {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
activity: ActivityPattern2::new(client.clone(), acc.clone()),
|
|
||||||
cost_basis: CostBasisPattern2::new(client.clone(), acc.clone()),
|
|
||||||
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
|
|
||||||
realized: RealizedPattern2::new(client.clone(), acc.clone()),
|
|
||||||
relative: RelativePattern2::new(client.clone(), acc.clone()),
|
|
||||||
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
|
|
||||||
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct PeriodCagrPattern {
|
|
||||||
pub _10y: MetricPattern4<StoredF32>,
|
|
||||||
pub _2y: MetricPattern4<StoredF32>,
|
|
||||||
pub _3y: MetricPattern4<StoredF32>,
|
|
||||||
pub _4y: MetricPattern4<StoredF32>,
|
|
||||||
pub _5y: MetricPattern4<StoredF32>,
|
|
||||||
pub _6y: MetricPattern4<StoredF32>,
|
|
||||||
pub _8y: MetricPattern4<StoredF32>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl PeriodCagrPattern {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
_10y: MetricPattern4::new(client.clone(), _p("10y", &acc)),
|
|
||||||
_2y: MetricPattern4::new(client.clone(), _p("2y", &acc)),
|
|
||||||
_3y: MetricPattern4::new(client.clone(), _p("3y", &acc)),
|
|
||||||
_4y: MetricPattern4::new(client.clone(), _p("4y", &acc)),
|
|
||||||
_5y: MetricPattern4::new(client.clone(), _p("5y", &acc)),
|
|
||||||
_6y: MetricPattern4::new(client.clone(), _p("6y", &acc)),
|
|
||||||
_8y: MetricPattern4::new(client.clone(), _p("8y", &acc)),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
/// Pattern struct for repeated tree structure.
|
||||||
pub struct ActivityPattern2 {
|
pub struct ActivityPattern2 {
|
||||||
pub coinblocks_destroyed: BlockCountPattern<StoredF64>,
|
pub coinblocks_destroyed: BlockCountPattern<StoredF64>,
|
||||||
@@ -2109,17 +2109,89 @@ impl<T: DeserializeOwned> SplitPattern2<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
/// Pattern struct for repeated tree structure.
|
||||||
pub struct UnclaimedRewardsPattern {
|
pub struct SegwitAdoptionPattern {
|
||||||
pub bitcoin: BitcoinPattern2<Bitcoin>,
|
pub base: MetricPattern11<StoredF32>,
|
||||||
|
pub cumulative: MetricPattern2<StoredF32>,
|
||||||
|
pub sum: MetricPattern2<StoredF32>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl SegwitAdoptionPattern {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
base: MetricPattern11::new(client.clone(), acc.clone()),
|
||||||
|
cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")),
|
||||||
|
sum: MetricPattern2::new(client.clone(), _m(&acc, "sum")),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct ActiveSupplyPattern {
|
||||||
|
pub bitcoin: MetricPattern1<Bitcoin>,
|
||||||
|
pub dollars: MetricPattern1<Dollars>,
|
||||||
|
pub sats: MetricPattern1<Sats>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ActiveSupplyPattern {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
bitcoin: MetricPattern1::new(client.clone(), _m(&acc, "btc")),
|
||||||
|
dollars: MetricPattern1::new(client.clone(), _m(&acc, "usd")),
|
||||||
|
sats: MetricPattern1::new(client.clone(), acc.clone()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct _2015Pattern {
|
||||||
|
pub bitcoin: MetricPattern4<Bitcoin>,
|
||||||
|
pub dollars: MetricPattern4<Dollars>,
|
||||||
|
pub sats: MetricPattern4<Sats>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl _2015Pattern {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
bitcoin: MetricPattern4::new(client.clone(), _m(&acc, "btc")),
|
||||||
|
dollars: MetricPattern4::new(client.clone(), _m(&acc, "usd")),
|
||||||
|
sats: MetricPattern4::new(client.clone(), acc.clone()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct CostBasisPattern2 {
|
||||||
|
pub max: MetricPattern1<Dollars>,
|
||||||
|
pub min: MetricPattern1<Dollars>,
|
||||||
|
pub percentiles: PercentilesPattern,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl CostBasisPattern2 {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
max: MetricPattern1::new(client.clone(), _m(&acc, "max_cost_basis")),
|
||||||
|
min: MetricPattern1::new(client.clone(), _m(&acc, "min_cost_basis")),
|
||||||
|
percentiles: PercentilesPattern::new(client.clone(), _m(&acc, "cost_basis")),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct CoinbasePattern2 {
|
||||||
|
pub bitcoin: BlockCountPattern<Bitcoin>,
|
||||||
pub dollars: BlockCountPattern<Dollars>,
|
pub dollars: BlockCountPattern<Dollars>,
|
||||||
pub sats: BlockCountPattern<Sats>,
|
pub sats: BlockCountPattern<Sats>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UnclaimedRewardsPattern {
|
impl CoinbasePattern2 {
|
||||||
/// Create a new pattern node with accumulated metric name.
|
/// Create a new pattern node with accumulated metric name.
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
Self {
|
Self {
|
||||||
bitcoin: BitcoinPattern2::new(client.clone(), _m(&acc, "btc")),
|
bitcoin: BlockCountPattern::new(client.clone(), _m(&acc, "btc")),
|
||||||
dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")),
|
dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")),
|
||||||
sats: BlockCountPattern::new(client.clone(), acc.clone()),
|
sats: BlockCountPattern::new(client.clone(), acc.clone()),
|
||||||
}
|
}
|
||||||
@@ -2145,127 +2217,23 @@ impl CoinbasePattern {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
/// Pattern struct for repeated tree structure.
|
||||||
pub struct SegwitAdoptionPattern {
|
pub struct UnclaimedRewardsPattern {
|
||||||
pub base: MetricPattern11<StoredF32>,
|
pub bitcoin: BitcoinPattern2<Bitcoin>,
|
||||||
pub cumulative: MetricPattern2<StoredF32>,
|
|
||||||
pub sum: MetricPattern2<StoredF32>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl SegwitAdoptionPattern {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
base: MetricPattern11::new(client.clone(), acc.clone()),
|
|
||||||
cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")),
|
|
||||||
sum: MetricPattern2::new(client.clone(), _m(&acc, "sum")),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct _2015Pattern {
|
|
||||||
pub bitcoin: MetricPattern4<Bitcoin>,
|
|
||||||
pub dollars: MetricPattern4<Dollars>,
|
|
||||||
pub sats: MetricPattern4<Sats>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl _2015Pattern {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
bitcoin: MetricPattern4::new(client.clone(), _m(&acc, "btc")),
|
|
||||||
dollars: MetricPattern4::new(client.clone(), _m(&acc, "usd")),
|
|
||||||
sats: MetricPattern4::new(client.clone(), acc.clone()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct ActiveSupplyPattern {
|
|
||||||
pub bitcoin: MetricPattern1<Bitcoin>,
|
|
||||||
pub dollars: MetricPattern1<Dollars>,
|
|
||||||
pub sats: MetricPattern1<Sats>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ActiveSupplyPattern {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
bitcoin: MetricPattern1::new(client.clone(), _m(&acc, "btc")),
|
|
||||||
dollars: MetricPattern1::new(client.clone(), _m(&acc, "usd")),
|
|
||||||
sats: MetricPattern1::new(client.clone(), acc.clone()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct CoinbasePattern2 {
|
|
||||||
pub bitcoin: BlockCountPattern<Bitcoin>,
|
|
||||||
pub dollars: BlockCountPattern<Dollars>,
|
pub dollars: BlockCountPattern<Dollars>,
|
||||||
pub sats: BlockCountPattern<Sats>,
|
pub sats: BlockCountPattern<Sats>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl CoinbasePattern2 {
|
impl UnclaimedRewardsPattern {
|
||||||
/// Create a new pattern node with accumulated metric name.
|
/// Create a new pattern node with accumulated metric name.
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
Self {
|
Self {
|
||||||
bitcoin: BlockCountPattern::new(client.clone(), _m(&acc, "btc")),
|
bitcoin: BitcoinPattern2::new(client.clone(), _m(&acc, "btc")),
|
||||||
dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")),
|
dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")),
|
||||||
sats: BlockCountPattern::new(client.clone(), acc.clone()),
|
sats: BlockCountPattern::new(client.clone(), acc.clone()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct CostBasisPattern2 {
|
|
||||||
pub max: MetricPattern1<Dollars>,
|
|
||||||
pub min: MetricPattern1<Dollars>,
|
|
||||||
pub percentiles: PercentilesPattern,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl CostBasisPattern2 {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
max: MetricPattern1::new(client.clone(), _m(&acc, "max_cost_basis")),
|
|
||||||
min: MetricPattern1::new(client.clone(), _m(&acc, "min_cost_basis")),
|
|
||||||
percentiles: PercentilesPattern::new(client.clone(), _m(&acc, "cost_basis")),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct CostBasisPattern {
|
|
||||||
pub max: MetricPattern1<Dollars>,
|
|
||||||
pub min: MetricPattern1<Dollars>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl CostBasisPattern {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
max: MetricPattern1::new(client.clone(), _m(&acc, "max_cost_basis")),
|
|
||||||
min: MetricPattern1::new(client.clone(), _m(&acc, "min_cost_basis")),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct RelativePattern4 {
|
|
||||||
pub supply_in_loss_rel_to_own_supply: MetricPattern1<StoredF64>,
|
|
||||||
pub supply_in_profit_rel_to_own_supply: MetricPattern1<StoredF64>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl RelativePattern4 {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "loss_rel_to_own_supply")),
|
|
||||||
supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "profit_rel_to_own_supply")),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
/// Pattern struct for repeated tree structure.
|
||||||
pub struct _1dReturns1mSdPattern {
|
pub struct _1dReturns1mSdPattern {
|
||||||
pub sd: MetricPattern4<StoredF32>,
|
pub sd: MetricPattern4<StoredF32>,
|
||||||
@@ -2282,6 +2250,38 @@ impl _1dReturns1mSdPattern {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct RelativePattern4 {
|
||||||
|
pub supply_in_loss_rel_to_own_supply: MetricPattern1<StoredF64>,
|
||||||
|
pub supply_in_profit_rel_to_own_supply: MetricPattern1<StoredF64>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl RelativePattern4 {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "loss_rel_to_own_supply")),
|
||||||
|
supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "profit_rel_to_own_supply")),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct CostBasisPattern {
|
||||||
|
pub max: MetricPattern1<Dollars>,
|
||||||
|
pub min: MetricPattern1<Dollars>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl CostBasisPattern {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
max: MetricPattern1::new(client.clone(), _m(&acc, "max_cost_basis")),
|
||||||
|
min: MetricPattern1::new(client.clone(), _m(&acc, "min_cost_basis")),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
/// Pattern struct for repeated tree structure.
|
||||||
pub struct SupplyPattern2 {
|
pub struct SupplyPattern2 {
|
||||||
pub halved: ActiveSupplyPattern,
|
pub halved: ActiveSupplyPattern,
|
||||||
@@ -2298,38 +2298,6 @@ impl SupplyPattern2 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct SatsPattern<T> {
|
|
||||||
pub ohlc: MetricPattern1<T>,
|
|
||||||
pub split: SplitPattern2<T>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: DeserializeOwned> SatsPattern<T> {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
ohlc: MetricPattern1::new(client.clone(), _m(&acc, "ohlc")),
|
|
||||||
split: SplitPattern2::new(client.clone(), acc.clone()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
|
||||||
pub struct BitcoinPattern2<T> {
|
|
||||||
pub cumulative: MetricPattern2<T>,
|
|
||||||
pub sum: MetricPattern1<T>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: DeserializeOwned> BitcoinPattern2<T> {
|
|
||||||
/// Create a new pattern node with accumulated metric name.
|
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
|
||||||
Self {
|
|
||||||
cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")),
|
|
||||||
sum: MetricPattern1::new(client.clone(), acc.clone()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
/// Pattern struct for repeated tree structure.
|
||||||
pub struct BlockCountPattern<T> {
|
pub struct BlockCountPattern<T> {
|
||||||
pub cumulative: MetricPattern1<T>,
|
pub cumulative: MetricPattern1<T>,
|
||||||
@@ -2347,15 +2315,33 @@ impl<T: DeserializeOwned> BlockCountPattern<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Pattern struct for repeated tree structure.
|
/// Pattern struct for repeated tree structure.
|
||||||
pub struct OutputsPattern {
|
pub struct BitcoinPattern2<T> {
|
||||||
pub utxo_count: MetricPattern1<StoredU64>,
|
pub cumulative: MetricPattern2<T>,
|
||||||
|
pub sum: MetricPattern1<T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl OutputsPattern {
|
impl<T: DeserializeOwned> BitcoinPattern2<T> {
|
||||||
/// Create a new pattern node with accumulated metric name.
|
/// Create a new pattern node with accumulated metric name.
|
||||||
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
Self {
|
Self {
|
||||||
utxo_count: MetricPattern1::new(client.clone(), acc.clone()),
|
cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")),
|
||||||
|
sum: MetricPattern1::new(client.clone(), acc.clone()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct SatsPattern<T> {
|
||||||
|
pub ohlc: MetricPattern1<T>,
|
||||||
|
pub split: SplitPattern2<T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: DeserializeOwned> SatsPattern<T> {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
ohlc: MetricPattern1::new(client.clone(), _m(&acc, "ohlc")),
|
||||||
|
split: SplitPattern2::new(client.clone(), acc.clone()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2374,6 +2360,20 @@ impl RealizedPriceExtraPattern {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Pattern struct for repeated tree structure.
|
||||||
|
pub struct OutputsPattern {
|
||||||
|
pub utxo_count: MetricPattern1<StoredU64>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl OutputsPattern {
|
||||||
|
/// Create a new pattern node with accumulated metric name.
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
|
||||||
|
Self {
|
||||||
|
utxo_count: MetricPattern1::new(client.clone(), acc.clone()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Metrics tree
|
// Metrics tree
|
||||||
|
|
||||||
/// Metrics tree node.
|
/// Metrics tree node.
|
||||||
@@ -4179,8 +4179,8 @@ impl MetricsTree_Market_Ath {
|
|||||||
|
|
||||||
/// Metrics tree node.
|
/// Metrics tree node.
|
||||||
pub struct MetricsTree_Market_Dca {
|
pub struct MetricsTree_Market_Dca {
|
||||||
pub class_average_price: ClassAveragePricePattern<Dollars>,
|
pub class_average_price: MetricsTree_Market_Dca_ClassAveragePrice,
|
||||||
pub class_returns: MetricsTree_Market_Dca_ClassReturns,
|
pub class_returns: ClassAveragePricePattern<StoredF32>,
|
||||||
pub class_stack: MetricsTree_Market_Dca_ClassStack,
|
pub class_stack: MetricsTree_Market_Dca_ClassStack,
|
||||||
pub period_average_price: PeriodAveragePricePattern<Dollars>,
|
pub period_average_price: PeriodAveragePricePattern<Dollars>,
|
||||||
pub period_cagr: PeriodCagrPattern,
|
pub period_cagr: PeriodCagrPattern,
|
||||||
@@ -4192,8 +4192,8 @@ pub struct MetricsTree_Market_Dca {
|
|||||||
impl MetricsTree_Market_Dca {
|
impl MetricsTree_Market_Dca {
|
||||||
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
|
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
|
||||||
Self {
|
Self {
|
||||||
class_average_price: ClassAveragePricePattern::new(client.clone(), "dca_class".to_string()),
|
class_average_price: MetricsTree_Market_Dca_ClassAveragePrice::new(client.clone(), format!("{base_path}_class_average_price")),
|
||||||
class_returns: MetricsTree_Market_Dca_ClassReturns::new(client.clone(), format!("{base_path}_class_returns")),
|
class_returns: ClassAveragePricePattern::new(client.clone(), "dca_class".to_string()),
|
||||||
class_stack: MetricsTree_Market_Dca_ClassStack::new(client.clone(), format!("{base_path}_class_stack")),
|
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_average_price: PeriodAveragePricePattern::new(client.clone(), "dca_average_price".to_string()),
|
||||||
period_cagr: PeriodCagrPattern::new(client.clone(), "dca_cagr".to_string()),
|
period_cagr: PeriodCagrPattern::new(client.clone(), "dca_cagr".to_string()),
|
||||||
@@ -4205,34 +4205,34 @@ impl MetricsTree_Market_Dca {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Metrics tree node.
|
/// Metrics tree node.
|
||||||
pub struct MetricsTree_Market_Dca_ClassReturns {
|
pub struct MetricsTree_Market_Dca_ClassAveragePrice {
|
||||||
pub _2015: MetricPattern4<StoredF32>,
|
pub _2015: MetricPattern4<Dollars>,
|
||||||
pub _2016: MetricPattern4<StoredF32>,
|
pub _2016: MetricPattern4<Dollars>,
|
||||||
pub _2017: MetricPattern4<StoredF32>,
|
pub _2017: MetricPattern4<Dollars>,
|
||||||
pub _2018: MetricPattern4<StoredF32>,
|
pub _2018: MetricPattern4<Dollars>,
|
||||||
pub _2019: MetricPattern4<StoredF32>,
|
pub _2019: MetricPattern4<Dollars>,
|
||||||
pub _2020: MetricPattern4<StoredF32>,
|
pub _2020: MetricPattern4<Dollars>,
|
||||||
pub _2021: MetricPattern4<StoredF32>,
|
pub _2021: MetricPattern4<Dollars>,
|
||||||
pub _2022: MetricPattern4<StoredF32>,
|
pub _2022: MetricPattern4<Dollars>,
|
||||||
pub _2023: MetricPattern4<StoredF32>,
|
pub _2023: MetricPattern4<Dollars>,
|
||||||
pub _2024: MetricPattern4<StoredF32>,
|
pub _2024: MetricPattern4<Dollars>,
|
||||||
pub _2025: MetricPattern4<StoredF32>,
|
pub _2025: MetricPattern4<Dollars>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MetricsTree_Market_Dca_ClassReturns {
|
impl MetricsTree_Market_Dca_ClassAveragePrice {
|
||||||
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
|
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
|
||||||
Self {
|
Self {
|
||||||
_2015: MetricPattern4::new(client.clone(), "dca_class_2015_returns".to_string()),
|
_2015: MetricPattern4::new(client.clone(), "dca_class_2015_average_price".to_string()),
|
||||||
_2016: MetricPattern4::new(client.clone(), "dca_class_2016_returns".to_string()),
|
_2016: MetricPattern4::new(client.clone(), "dca_class_2016_average_price".to_string()),
|
||||||
_2017: MetricPattern4::new(client.clone(), "dca_class_2017_returns".to_string()),
|
_2017: MetricPattern4::new(client.clone(), "dca_class_2017_average_price".to_string()),
|
||||||
_2018: MetricPattern4::new(client.clone(), "dca_class_2018_returns".to_string()),
|
_2018: MetricPattern4::new(client.clone(), "dca_class_2018_average_price".to_string()),
|
||||||
_2019: MetricPattern4::new(client.clone(), "dca_class_2019_returns".to_string()),
|
_2019: MetricPattern4::new(client.clone(), "dca_class_2019_average_price".to_string()),
|
||||||
_2020: MetricPattern4::new(client.clone(), "dca_class_2020_returns".to_string()),
|
_2020: MetricPattern4::new(client.clone(), "dca_class_2020_average_price".to_string()),
|
||||||
_2021: MetricPattern4::new(client.clone(), "dca_class_2021_returns".to_string()),
|
_2021: MetricPattern4::new(client.clone(), "dca_class_2021_average_price".to_string()),
|
||||||
_2022: MetricPattern4::new(client.clone(), "dca_class_2022_returns".to_string()),
|
_2022: MetricPattern4::new(client.clone(), "dca_class_2022_average_price".to_string()),
|
||||||
_2023: MetricPattern4::new(client.clone(), "dca_class_2023_returns".to_string()),
|
_2023: MetricPattern4::new(client.clone(), "dca_class_2023_average_price".to_string()),
|
||||||
_2024: MetricPattern4::new(client.clone(), "dca_class_2024_returns".to_string()),
|
_2024: MetricPattern4::new(client.clone(), "dca_class_2024_average_price".to_string()),
|
||||||
_2025: MetricPattern4::new(client.clone(), "dca_class_2025_returns".to_string()),
|
_2025: MetricPattern4::new(client.clone(), "dca_class_2025_average_price".to_string()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ brk_types = { workspace = true }
|
|||||||
brk_traversable = { workspace = true }
|
brk_traversable = { workspace = true }
|
||||||
derive_more = { workspace = true }
|
derive_more = { workspace = true }
|
||||||
include_dir = "0.7"
|
include_dir = "0.7"
|
||||||
importmap = { path = "../../../importmap", features = ["embedded"] }
|
# importmap = { path = "../../../importmap", features = ["embedded"] }
|
||||||
# importmap = { version = "0.3", features = ["embedded"] }
|
importmap = { version = "0.3.0", features = ["embedded"] }
|
||||||
vecdb = { workspace = true }
|
vecdb = { workspace = true }
|
||||||
jiff = { workspace = true }
|
jiff = { workspace = true }
|
||||||
quick_cache = "0.6.18"
|
quick_cache = "0.6.18"
|
||||||
|
|||||||
@@ -65,11 +65,9 @@ impl ApiRoutes for ApiRouter<AppState> {
|
|||||||
"/api.json",
|
"/api.json",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |headers: HeaderMap,
|
||||||
Extension(api_trimmed): Extension<Arc<String>>|
|
Extension(api): Extension<Arc<ApiJson>>|
|
||||||
-> Response {
|
-> Response {
|
||||||
let value: serde_json::Value =
|
Response::static_json(&headers, api.to_json())
|
||||||
serde_json::from_str(&api_trimmed).unwrap();
|
|
||||||
Response::static_json(&headers, &value)
|
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_api")
|
op.id("get_api")
|
||||||
|
|||||||
+30
-13
@@ -1,6 +1,23 @@
|
|||||||
|
use aide::openapi::OpenApi;
|
||||||
|
use derive_more::Deref;
|
||||||
use serde_json::{Map, Value};
|
use serde_json::{Map, Value};
|
||||||
|
|
||||||
/// Trims an OpenAPI spec JSON to reduce size for LLM consumption.
|
/// Compact OpenAPI spec optimized for LLM consumption.
|
||||||
|
#[derive(Deref)]
|
||||||
|
pub struct ApiJson(String);
|
||||||
|
|
||||||
|
impl ApiJson {
|
||||||
|
pub fn new(openapi: &OpenApi) -> Self {
|
||||||
|
let json = serde_json::to_string(openapi).unwrap();
|
||||||
|
Self(compact_json(&json))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn to_json(&self) -> serde_json::Value {
|
||||||
|
serde_json::from_str(&self.0).unwrap()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Compacts an OpenAPI spec JSON to reduce size for LLM consumption.
|
||||||
/// Removes redundant fields while preserving essential API information.
|
/// Removes redundant fields while preserving essential API information.
|
||||||
///
|
///
|
||||||
/// Transformations applied (in order):
|
/// Transformations applied (in order):
|
||||||
@@ -15,13 +32,13 @@ use serde_json::{Map, Value};
|
|||||||
/// 9. Remove format
|
/// 9. Remove format
|
||||||
/// 10. Remove property descriptions
|
/// 10. Remove property descriptions
|
||||||
/// 11. Simplify properties to direct types
|
/// 11. Simplify properties to direct types
|
||||||
pub fn trim_openapi_json(json: &str) -> String {
|
fn compact_json(json: &str) -> String {
|
||||||
let mut spec: Value = serde_json::from_str(json).expect("Invalid OpenAPI JSON");
|
let mut spec: Value = serde_json::from_str(json).expect("Invalid OpenAPI JSON");
|
||||||
trim_value(&mut spec);
|
compact_value(&mut spec);
|
||||||
serde_json::to_string(&spec).unwrap()
|
serde_json::to_string(&spec).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn trim_value(value: &mut Value) {
|
fn compact_value(value: &mut Value) {
|
||||||
match value {
|
match value {
|
||||||
Value::Object(obj) => {
|
Value::Object(obj) => {
|
||||||
// Step 1: Remove error responses
|
// Step 1: Remove error responses
|
||||||
@@ -106,12 +123,12 @@ fn trim_value(value: &mut Value) {
|
|||||||
|
|
||||||
// Recurse into remaining values
|
// Recurse into remaining values
|
||||||
for (_, v) in obj.iter_mut() {
|
for (_, v) in obj.iter_mut() {
|
||||||
trim_value(v);
|
compact_value(v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Value::Array(arr) => {
|
Value::Array(arr) => {
|
||||||
for item in arr {
|
for item in arr {
|
||||||
trim_value(item);
|
compact_value(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
@@ -298,7 +315,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}"##;
|
}"##;
|
||||||
|
|
||||||
let result = trim_openapi_json(input);
|
let result = compact_json(input);
|
||||||
let parsed: Value = serde_json::from_str(&result).unwrap();
|
let parsed: Value = serde_json::from_str(&result).unwrap();
|
||||||
|
|
||||||
// Property should be simplified to array, not {"type": [...]}
|
// Property should be simplified to array, not {"type": [...]}
|
||||||
@@ -323,7 +340,7 @@ mod tests {
|
|||||||
}]
|
}]
|
||||||
}"##;
|
}"##;
|
||||||
|
|
||||||
let result = trim_openapi_json(input);
|
let result = compact_json(input);
|
||||||
let parsed: Value = serde_json::from_str(&result).unwrap();
|
let parsed: Value = serde_json::from_str(&result).unwrap();
|
||||||
|
|
||||||
// Parameter should have type array including null
|
// Parameter should have type array including null
|
||||||
@@ -344,7 +361,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}"##;
|
}"##;
|
||||||
|
|
||||||
let result = trim_openapi_json(input);
|
let result = compact_json(input);
|
||||||
let parsed: Value = serde_json::from_str(&result).unwrap();
|
let parsed: Value = serde_json::from_str(&result).unwrap();
|
||||||
|
|
||||||
// Property with $ref should be simplified to just the type name
|
// Property with $ref should be simplified to just the type name
|
||||||
@@ -372,7 +389,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}"##;
|
}"##;
|
||||||
|
|
||||||
let result = trim_openapi_json(input);
|
let result = compact_json(input);
|
||||||
let parsed: Value = serde_json::from_str(&result).unwrap();
|
let parsed: Value = serde_json::from_str(&result).unwrap();
|
||||||
|
|
||||||
let props = &parsed["components"]["schemas"]["AddressStats"]["properties"];
|
let props = &parsed["components"]["schemas"]["AddressStats"]["properties"];
|
||||||
@@ -398,7 +415,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}"##;
|
}"##;
|
||||||
|
|
||||||
let result = trim_openapi_json(input);
|
let result = compact_json(input);
|
||||||
let parsed: Value = serde_json::from_str(&result).unwrap();
|
let parsed: Value = serde_json::from_str(&result).unwrap();
|
||||||
|
|
||||||
assert_eq!(parsed["properties"]["address"], "Address");
|
assert_eq!(parsed["properties"]["address"], "Address");
|
||||||
@@ -418,7 +435,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}"##;
|
}"##;
|
||||||
|
|
||||||
let result = trim_openapi_json(input);
|
let result = compact_json(input);
|
||||||
let parsed: Value = serde_json::from_str(&result).unwrap();
|
let parsed: Value = serde_json::from_str(&result).unwrap();
|
||||||
|
|
||||||
// Array with $ref items should be simplified to "array[Type]"
|
// Array with $ref items should be simplified to "array[Type]"
|
||||||
@@ -441,7 +458,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}"##;
|
}"##;
|
||||||
|
|
||||||
let result = trim_openapi_json(input);
|
let result = compact_json(input);
|
||||||
let parsed: Value = serde_json::from_str(&result).unwrap();
|
let parsed: Value = serde_json::from_str(&result).unwrap();
|
||||||
|
|
||||||
assert_eq!(parsed["returns"], "Block");
|
assert_eq!(parsed["returns"], "Block");
|
||||||
@@ -10,9 +10,9 @@
|
|||||||
// - https://api.supabase.com/api/v1
|
// - https://api.supabase.com/api/v1
|
||||||
//
|
//
|
||||||
|
|
||||||
mod trim;
|
mod compact;
|
||||||
|
|
||||||
pub use trim::trim_openapi_json;
|
pub use compact::ApiJson;
|
||||||
|
|
||||||
use aide::openapi::{Contact, Info, License, OpenApi, Tag};
|
use aide::openapi::{Contact, Info, License, OpenApi, Tag};
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ impl Website {
|
|||||||
|
|
||||||
// Try direct lookup, then with hash stripped
|
// Try direct lookup, then with hash stripped
|
||||||
let file = EMBEDDED_WEBSITE.get_file(path).or_else(|| {
|
let file = EMBEDDED_WEBSITE.get_file(path).or_else(|| {
|
||||||
strip_importmap_hash(Path::new(path))
|
ImportMap::strip_hash(Path::new(path))
|
||||||
.and_then(|unhashed| EMBEDDED_WEBSITE.get_file(unhashed.to_str()?))
|
.and_then(|unhashed| EMBEDDED_WEBSITE.get_file(unhashed.to_str()?))
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ impl Website {
|
|||||||
|
|
||||||
// Try with hash stripped
|
// Try with hash stripped
|
||||||
if !file_path.exists()
|
if !file_path.exists()
|
||||||
&& let Some(unhashed) = strip_importmap_hash(&file_path)
|
&& let Some(unhashed) = ImportMap::strip_hash(&file_path)
|
||||||
&& unhashed.exists()
|
&& unhashed.exists()
|
||||||
{
|
{
|
||||||
file_path = unhashed;
|
file_path = unhashed;
|
||||||
@@ -171,23 +171,3 @@ impl Website {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Strip importmap hash from filename: `foo.abc12345.js` -> `foo.js`
|
|
||||||
fn strip_importmap_hash(path: &Path) -> Option<PathBuf> {
|
|
||||||
let stem = path.file_stem()?.to_str()?;
|
|
||||||
let ext = path.extension()?.to_str()?;
|
|
||||||
|
|
||||||
if !matches!(ext, "js" | "mjs" | "css") {
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
|
|
||||||
let dot_pos = stem.rfind('.')?;
|
|
||||||
let hash = &stem[dot_pos + 1..];
|
|
||||||
|
|
||||||
if hash.len() == 8 && hash.chars().all(|c| c.is_ascii_hexdigit()) {
|
|
||||||
let name = &stem[..dot_pos];
|
|
||||||
Some(path.with_file_name(format!("{}.{}", name, ext)))
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -165,8 +165,8 @@ impl Server {
|
|||||||
.javascript(workspace_root.join("modules/brk-client/index.js"))
|
.javascript(workspace_root.join("modules/brk-client/index.js"))
|
||||||
.python(workspace_root.join("packages/brk_client/brk_client/__init__.py"));
|
.python(workspace_root.join("packages/brk_client/brk_client/__init__.py"));
|
||||||
|
|
||||||
let openapi_json = Arc::new(serde_json::to_string(&openapi).unwrap());
|
let api_json = Arc::new(ApiJson::new(&openapi));
|
||||||
let openapi_trimmed = Arc::new(trim_openapi_json(&openapi_json));
|
let openapi_json = serde_json::to_string(&openapi).unwrap();
|
||||||
|
|
||||||
let result = panic::catch_unwind(panic::AssertUnwindSafe(|| {
|
let result = panic::catch_unwind(panic::AssertUnwindSafe(|| {
|
||||||
brk_bindgen::generate_clients(vecs, &openapi_json, &output_paths)
|
brk_bindgen::generate_clients(vecs, &openapi_json, &output_paths)
|
||||||
@@ -180,7 +180,7 @@ impl Server {
|
|||||||
|
|
||||||
let router = router
|
let router = router
|
||||||
.layer(Extension(Arc::new(openapi)))
|
.layer(Extension(Arc::new(openapi)))
|
||||||
.layer(Extension(openapi_trimmed));
|
.layer(Extension(api_json));
|
||||||
|
|
||||||
let service = NormalizePathLayer::trim_trailing_slash().layer(router);
|
let service = NormalizePathLayer::trim_trailing_slash().layer(router);
|
||||||
|
|
||||||
|
|||||||
+327
-327
@@ -2005,6 +2005,45 @@ function createBitcoinPattern(client, acc) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @template T
|
||||||
|
* @typedef {Object} ClassAveragePricePattern
|
||||||
|
* @property {MetricPattern4<T>} _2015
|
||||||
|
* @property {MetricPattern4<T>} _2016
|
||||||
|
* @property {MetricPattern4<T>} _2017
|
||||||
|
* @property {MetricPattern4<T>} _2018
|
||||||
|
* @property {MetricPattern4<T>} _2019
|
||||||
|
* @property {MetricPattern4<T>} _2020
|
||||||
|
* @property {MetricPattern4<T>} _2021
|
||||||
|
* @property {MetricPattern4<T>} _2022
|
||||||
|
* @property {MetricPattern4<T>} _2023
|
||||||
|
* @property {MetricPattern4<T>} _2024
|
||||||
|
* @property {MetricPattern4<T>} _2025
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a ClassAveragePricePattern pattern node
|
||||||
|
* @template T
|
||||||
|
* @param {BrkClientBase} client
|
||||||
|
* @param {string} acc - Accumulated metric name
|
||||||
|
* @returns {ClassAveragePricePattern<T>}
|
||||||
|
*/
|
||||||
|
function createClassAveragePricePattern(client, acc) {
|
||||||
|
return {
|
||||||
|
_2015: createMetricPattern4(client, _m(acc, '2015_returns')),
|
||||||
|
_2016: createMetricPattern4(client, _m(acc, '2016_returns')),
|
||||||
|
_2017: createMetricPattern4(client, _m(acc, '2017_returns')),
|
||||||
|
_2018: createMetricPattern4(client, _m(acc, '2018_returns')),
|
||||||
|
_2019: createMetricPattern4(client, _m(acc, '2019_returns')),
|
||||||
|
_2020: createMetricPattern4(client, _m(acc, '2020_returns')),
|
||||||
|
_2021: createMetricPattern4(client, _m(acc, '2021_returns')),
|
||||||
|
_2022: createMetricPattern4(client, _m(acc, '2022_returns')),
|
||||||
|
_2023: createMetricPattern4(client, _m(acc, '2023_returns')),
|
||||||
|
_2024: createMetricPattern4(client, _m(acc, '2024_returns')),
|
||||||
|
_2025: createMetricPattern4(client, _m(acc, '2025_returns')),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @template T
|
* @template T
|
||||||
* @typedef {Object} DollarsPattern
|
* @typedef {Object} DollarsPattern
|
||||||
@@ -2044,45 +2083,6 @@ function createDollarsPattern(client, acc) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @template T
|
|
||||||
* @typedef {Object} ClassAveragePricePattern
|
|
||||||
* @property {MetricPattern4<T>} _2015
|
|
||||||
* @property {MetricPattern4<T>} _2016
|
|
||||||
* @property {MetricPattern4<T>} _2017
|
|
||||||
* @property {MetricPattern4<T>} _2018
|
|
||||||
* @property {MetricPattern4<T>} _2019
|
|
||||||
* @property {MetricPattern4<T>} _2020
|
|
||||||
* @property {MetricPattern4<T>} _2021
|
|
||||||
* @property {MetricPattern4<T>} _2022
|
|
||||||
* @property {MetricPattern4<T>} _2023
|
|
||||||
* @property {MetricPattern4<T>} _2024
|
|
||||||
* @property {MetricPattern4<T>} _2025
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a ClassAveragePricePattern pattern node
|
|
||||||
* @template T
|
|
||||||
* @param {BrkClientBase} client
|
|
||||||
* @param {string} acc - Accumulated metric name
|
|
||||||
* @returns {ClassAveragePricePattern<T>}
|
|
||||||
*/
|
|
||||||
function createClassAveragePricePattern(client, acc) {
|
|
||||||
return {
|
|
||||||
_2015: createMetricPattern4(client, _m(acc, '2015_average_price')),
|
|
||||||
_2016: createMetricPattern4(client, _m(acc, '2016_average_price')),
|
|
||||||
_2017: createMetricPattern4(client, _m(acc, '2017_average_price')),
|
|
||||||
_2018: createMetricPattern4(client, _m(acc, '2018_average_price')),
|
|
||||||
_2019: createMetricPattern4(client, _m(acc, '2019_average_price')),
|
|
||||||
_2020: createMetricPattern4(client, _m(acc, '2020_average_price')),
|
|
||||||
_2021: createMetricPattern4(client, _m(acc, '2021_average_price')),
|
|
||||||
_2022: createMetricPattern4(client, _m(acc, '2022_average_price')),
|
|
||||||
_2023: createMetricPattern4(client, _m(acc, '2023_average_price')),
|
|
||||||
_2024: createMetricPattern4(client, _m(acc, '2024_average_price')),
|
|
||||||
_2025: createMetricPattern4(client, _m(acc, '2025_average_price')),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} RelativePattern2
|
* @typedef {Object} RelativePattern2
|
||||||
* @property {MetricPattern1<StoredF32>} negUnrealizedLossRelToOwnMarketCap
|
* @property {MetricPattern1<StoredF32>} negUnrealizedLossRelToOwnMarketCap
|
||||||
@@ -2357,6 +2357,122 @@ function createPhaseDailyCentsPattern(client, acc) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} _10yPattern
|
||||||
|
* @property {ActivityPattern2} activity
|
||||||
|
* @property {CostBasisPattern} costBasis
|
||||||
|
* @property {OutputsPattern} outputs
|
||||||
|
* @property {RealizedPattern4} realized
|
||||||
|
* @property {RelativePattern} relative
|
||||||
|
* @property {SupplyPattern2} supply
|
||||||
|
* @property {UnrealizedPattern} unrealized
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a _10yPattern pattern node
|
||||||
|
* @param {BrkClientBase} client
|
||||||
|
* @param {string} acc - Accumulated metric name
|
||||||
|
* @returns {_10yPattern}
|
||||||
|
*/
|
||||||
|
function create_10yPattern(client, acc) {
|
||||||
|
return {
|
||||||
|
activity: createActivityPattern2(client, acc),
|
||||||
|
costBasis: createCostBasisPattern(client, acc),
|
||||||
|
outputs: createOutputsPattern(client, _m(acc, 'utxo_count')),
|
||||||
|
realized: createRealizedPattern4(client, acc),
|
||||||
|
relative: createRelativePattern(client, acc),
|
||||||
|
supply: createSupplyPattern2(client, _m(acc, 'supply')),
|
||||||
|
unrealized: createUnrealizedPattern(client, acc),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} PeriodCagrPattern
|
||||||
|
* @property {MetricPattern4<StoredF32>} _10y
|
||||||
|
* @property {MetricPattern4<StoredF32>} _2y
|
||||||
|
* @property {MetricPattern4<StoredF32>} _3y
|
||||||
|
* @property {MetricPattern4<StoredF32>} _4y
|
||||||
|
* @property {MetricPattern4<StoredF32>} _5y
|
||||||
|
* @property {MetricPattern4<StoredF32>} _6y
|
||||||
|
* @property {MetricPattern4<StoredF32>} _8y
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a PeriodCagrPattern pattern node
|
||||||
|
* @param {BrkClientBase} client
|
||||||
|
* @param {string} acc - Accumulated metric name
|
||||||
|
* @returns {PeriodCagrPattern}
|
||||||
|
*/
|
||||||
|
function createPeriodCagrPattern(client, acc) {
|
||||||
|
return {
|
||||||
|
_10y: createMetricPattern4(client, _p('10y', acc)),
|
||||||
|
_2y: createMetricPattern4(client, _p('2y', acc)),
|
||||||
|
_3y: createMetricPattern4(client, _p('3y', acc)),
|
||||||
|
_4y: createMetricPattern4(client, _p('4y', acc)),
|
||||||
|
_5y: createMetricPattern4(client, _p('5y', acc)),
|
||||||
|
_6y: createMetricPattern4(client, _p('6y', acc)),
|
||||||
|
_8y: createMetricPattern4(client, _p('8y', acc)),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} _10yTo12yPattern
|
||||||
|
* @property {ActivityPattern2} activity
|
||||||
|
* @property {CostBasisPattern2} costBasis
|
||||||
|
* @property {OutputsPattern} outputs
|
||||||
|
* @property {RealizedPattern2} realized
|
||||||
|
* @property {RelativePattern2} relative
|
||||||
|
* @property {SupplyPattern2} supply
|
||||||
|
* @property {UnrealizedPattern} unrealized
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a _10yTo12yPattern pattern node
|
||||||
|
* @param {BrkClientBase} client
|
||||||
|
* @param {string} acc - Accumulated metric name
|
||||||
|
* @returns {_10yTo12yPattern}
|
||||||
|
*/
|
||||||
|
function create_10yTo12yPattern(client, acc) {
|
||||||
|
return {
|
||||||
|
activity: createActivityPattern2(client, acc),
|
||||||
|
costBasis: createCostBasisPattern2(client, acc),
|
||||||
|
outputs: createOutputsPattern(client, _m(acc, 'utxo_count')),
|
||||||
|
realized: createRealizedPattern2(client, acc),
|
||||||
|
relative: createRelativePattern2(client, acc),
|
||||||
|
supply: createSupplyPattern2(client, _m(acc, 'supply')),
|
||||||
|
unrealized: createUnrealizedPattern(client, acc),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} _0satsPattern2
|
||||||
|
* @property {ActivityPattern2} activity
|
||||||
|
* @property {CostBasisPattern} costBasis
|
||||||
|
* @property {OutputsPattern} outputs
|
||||||
|
* @property {RealizedPattern} realized
|
||||||
|
* @property {RelativePattern4} relative
|
||||||
|
* @property {SupplyPattern2} supply
|
||||||
|
* @property {UnrealizedPattern} unrealized
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a _0satsPattern2 pattern node
|
||||||
|
* @param {BrkClientBase} client
|
||||||
|
* @param {string} acc - Accumulated metric name
|
||||||
|
* @returns {_0satsPattern2}
|
||||||
|
*/
|
||||||
|
function create_0satsPattern2(client, acc) {
|
||||||
|
return {
|
||||||
|
activity: createActivityPattern2(client, acc),
|
||||||
|
costBasis: createCostBasisPattern(client, acc),
|
||||||
|
outputs: createOutputsPattern(client, _m(acc, 'utxo_count')),
|
||||||
|
realized: createRealizedPattern(client, acc),
|
||||||
|
relative: createRelativePattern4(client, _m(acc, 'supply_in')),
|
||||||
|
supply: createSupplyPattern2(client, _m(acc, 'supply')),
|
||||||
|
unrealized: createUnrealizedPattern(client, acc),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} UnrealizedPattern
|
* @typedef {Object} UnrealizedPattern
|
||||||
* @property {MetricPattern1<Dollars>} negUnrealizedLoss
|
* @property {MetricPattern1<Dollars>} negUnrealizedLoss
|
||||||
@@ -2415,122 +2531,6 @@ function create_100btcPattern(client, acc) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {Object} _0satsPattern2
|
|
||||||
* @property {ActivityPattern2} activity
|
|
||||||
* @property {CostBasisPattern} costBasis
|
|
||||||
* @property {OutputsPattern} outputs
|
|
||||||
* @property {RealizedPattern} realized
|
|
||||||
* @property {RelativePattern4} relative
|
|
||||||
* @property {SupplyPattern2} supply
|
|
||||||
* @property {UnrealizedPattern} unrealized
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a _0satsPattern2 pattern node
|
|
||||||
* @param {BrkClientBase} client
|
|
||||||
* @param {string} acc - Accumulated metric name
|
|
||||||
* @returns {_0satsPattern2}
|
|
||||||
*/
|
|
||||||
function create_0satsPattern2(client, acc) {
|
|
||||||
return {
|
|
||||||
activity: createActivityPattern2(client, acc),
|
|
||||||
costBasis: createCostBasisPattern(client, acc),
|
|
||||||
outputs: createOutputsPattern(client, _m(acc, 'utxo_count')),
|
|
||||||
realized: createRealizedPattern(client, acc),
|
|
||||||
relative: createRelativePattern4(client, _m(acc, 'supply_in')),
|
|
||||||
supply: createSupplyPattern2(client, _m(acc, 'supply')),
|
|
||||||
unrealized: createUnrealizedPattern(client, acc),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {Object} _10yPattern
|
|
||||||
* @property {ActivityPattern2} activity
|
|
||||||
* @property {CostBasisPattern} costBasis
|
|
||||||
* @property {OutputsPattern} outputs
|
|
||||||
* @property {RealizedPattern4} realized
|
|
||||||
* @property {RelativePattern} relative
|
|
||||||
* @property {SupplyPattern2} supply
|
|
||||||
* @property {UnrealizedPattern} unrealized
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a _10yPattern pattern node
|
|
||||||
* @param {BrkClientBase} client
|
|
||||||
* @param {string} acc - Accumulated metric name
|
|
||||||
* @returns {_10yPattern}
|
|
||||||
*/
|
|
||||||
function create_10yPattern(client, acc) {
|
|
||||||
return {
|
|
||||||
activity: createActivityPattern2(client, acc),
|
|
||||||
costBasis: createCostBasisPattern(client, acc),
|
|
||||||
outputs: createOutputsPattern(client, _m(acc, 'utxo_count')),
|
|
||||||
realized: createRealizedPattern4(client, acc),
|
|
||||||
relative: createRelativePattern(client, acc),
|
|
||||||
supply: createSupplyPattern2(client, _m(acc, 'supply')),
|
|
||||||
unrealized: createUnrealizedPattern(client, acc),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {Object} _10yTo12yPattern
|
|
||||||
* @property {ActivityPattern2} activity
|
|
||||||
* @property {CostBasisPattern2} costBasis
|
|
||||||
* @property {OutputsPattern} outputs
|
|
||||||
* @property {RealizedPattern2} realized
|
|
||||||
* @property {RelativePattern2} relative
|
|
||||||
* @property {SupplyPattern2} supply
|
|
||||||
* @property {UnrealizedPattern} unrealized
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a _10yTo12yPattern pattern node
|
|
||||||
* @param {BrkClientBase} client
|
|
||||||
* @param {string} acc - Accumulated metric name
|
|
||||||
* @returns {_10yTo12yPattern}
|
|
||||||
*/
|
|
||||||
function create_10yTo12yPattern(client, acc) {
|
|
||||||
return {
|
|
||||||
activity: createActivityPattern2(client, acc),
|
|
||||||
costBasis: createCostBasisPattern2(client, acc),
|
|
||||||
outputs: createOutputsPattern(client, _m(acc, 'utxo_count')),
|
|
||||||
realized: createRealizedPattern2(client, acc),
|
|
||||||
relative: createRelativePattern2(client, acc),
|
|
||||||
supply: createSupplyPattern2(client, _m(acc, 'supply')),
|
|
||||||
unrealized: createUnrealizedPattern(client, acc),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {Object} PeriodCagrPattern
|
|
||||||
* @property {MetricPattern4<StoredF32>} _10y
|
|
||||||
* @property {MetricPattern4<StoredF32>} _2y
|
|
||||||
* @property {MetricPattern4<StoredF32>} _3y
|
|
||||||
* @property {MetricPattern4<StoredF32>} _4y
|
|
||||||
* @property {MetricPattern4<StoredF32>} _5y
|
|
||||||
* @property {MetricPattern4<StoredF32>} _6y
|
|
||||||
* @property {MetricPattern4<StoredF32>} _8y
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a PeriodCagrPattern pattern node
|
|
||||||
* @param {BrkClientBase} client
|
|
||||||
* @param {string} acc - Accumulated metric name
|
|
||||||
* @returns {PeriodCagrPattern}
|
|
||||||
*/
|
|
||||||
function createPeriodCagrPattern(client, acc) {
|
|
||||||
return {
|
|
||||||
_10y: createMetricPattern4(client, _p('10y', acc)),
|
|
||||||
_2y: createMetricPattern4(client, _p('2y', acc)),
|
|
||||||
_3y: createMetricPattern4(client, _p('3y', acc)),
|
|
||||||
_4y: createMetricPattern4(client, _p('4y', acc)),
|
|
||||||
_5y: createMetricPattern4(client, _p('5y', acc)),
|
|
||||||
_6y: createMetricPattern4(client, _p('6y', acc)),
|
|
||||||
_8y: createMetricPattern4(client, _p('8y', acc)),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} ActivityPattern2
|
* @typedef {Object} ActivityPattern2
|
||||||
* @property {BlockCountPattern<StoredF64>} coinblocksDestroyed
|
* @property {BlockCountPattern<StoredF64>} coinblocksDestroyed
|
||||||
@@ -2582,21 +2582,105 @@ function createSplitPattern2(client, acc) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} UnclaimedRewardsPattern
|
* @typedef {Object} SegwitAdoptionPattern
|
||||||
* @property {BitcoinPattern2<Bitcoin>} bitcoin
|
* @property {MetricPattern11<StoredF32>} base
|
||||||
|
* @property {MetricPattern2<StoredF32>} cumulative
|
||||||
|
* @property {MetricPattern2<StoredF32>} sum
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a SegwitAdoptionPattern pattern node
|
||||||
|
* @param {BrkClientBase} client
|
||||||
|
* @param {string} acc - Accumulated metric name
|
||||||
|
* @returns {SegwitAdoptionPattern}
|
||||||
|
*/
|
||||||
|
function createSegwitAdoptionPattern(client, acc) {
|
||||||
|
return {
|
||||||
|
base: createMetricPattern11(client, acc),
|
||||||
|
cumulative: createMetricPattern2(client, _m(acc, 'cumulative')),
|
||||||
|
sum: createMetricPattern2(client, _m(acc, 'sum')),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} ActiveSupplyPattern
|
||||||
|
* @property {MetricPattern1<Bitcoin>} bitcoin
|
||||||
|
* @property {MetricPattern1<Dollars>} dollars
|
||||||
|
* @property {MetricPattern1<Sats>} sats
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a ActiveSupplyPattern pattern node
|
||||||
|
* @param {BrkClientBase} client
|
||||||
|
* @param {string} acc - Accumulated metric name
|
||||||
|
* @returns {ActiveSupplyPattern}
|
||||||
|
*/
|
||||||
|
function createActiveSupplyPattern(client, acc) {
|
||||||
|
return {
|
||||||
|
bitcoin: createMetricPattern1(client, _m(acc, 'btc')),
|
||||||
|
dollars: createMetricPattern1(client, _m(acc, 'usd')),
|
||||||
|
sats: createMetricPattern1(client, acc),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} _2015Pattern
|
||||||
|
* @property {MetricPattern4<Bitcoin>} bitcoin
|
||||||
|
* @property {MetricPattern4<Dollars>} dollars
|
||||||
|
* @property {MetricPattern4<Sats>} sats
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a _2015Pattern pattern node
|
||||||
|
* @param {BrkClientBase} client
|
||||||
|
* @param {string} acc - Accumulated metric name
|
||||||
|
* @returns {_2015Pattern}
|
||||||
|
*/
|
||||||
|
function create_2015Pattern(client, acc) {
|
||||||
|
return {
|
||||||
|
bitcoin: createMetricPattern4(client, _m(acc, 'btc')),
|
||||||
|
dollars: createMetricPattern4(client, _m(acc, 'usd')),
|
||||||
|
sats: createMetricPattern4(client, acc),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} CostBasisPattern2
|
||||||
|
* @property {MetricPattern1<Dollars>} max
|
||||||
|
* @property {MetricPattern1<Dollars>} min
|
||||||
|
* @property {PercentilesPattern} percentiles
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a CostBasisPattern2 pattern node
|
||||||
|
* @param {BrkClientBase} client
|
||||||
|
* @param {string} acc - Accumulated metric name
|
||||||
|
* @returns {CostBasisPattern2}
|
||||||
|
*/
|
||||||
|
function createCostBasisPattern2(client, acc) {
|
||||||
|
return {
|
||||||
|
max: createMetricPattern1(client, _m(acc, 'max_cost_basis')),
|
||||||
|
min: createMetricPattern1(client, _m(acc, 'min_cost_basis')),
|
||||||
|
percentiles: createPercentilesPattern(client, _m(acc, 'cost_basis')),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} CoinbasePattern2
|
||||||
|
* @property {BlockCountPattern<Bitcoin>} bitcoin
|
||||||
* @property {BlockCountPattern<Dollars>} dollars
|
* @property {BlockCountPattern<Dollars>} dollars
|
||||||
* @property {BlockCountPattern<Sats>} sats
|
* @property {BlockCountPattern<Sats>} sats
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a UnclaimedRewardsPattern pattern node
|
* Create a CoinbasePattern2 pattern node
|
||||||
* @param {BrkClientBase} client
|
* @param {BrkClientBase} client
|
||||||
* @param {string} acc - Accumulated metric name
|
* @param {string} acc - Accumulated metric name
|
||||||
* @returns {UnclaimedRewardsPattern}
|
* @returns {CoinbasePattern2}
|
||||||
*/
|
*/
|
||||||
function createUnclaimedRewardsPattern(client, acc) {
|
function createCoinbasePattern2(client, acc) {
|
||||||
return {
|
return {
|
||||||
bitcoin: createBitcoinPattern2(client, _m(acc, 'btc')),
|
bitcoin: createBlockCountPattern(client, _m(acc, 'btc')),
|
||||||
dollars: createBlockCountPattern(client, _m(acc, 'usd')),
|
dollars: createBlockCountPattern(client, _m(acc, 'usd')),
|
||||||
sats: createBlockCountPattern(client, acc),
|
sats: createBlockCountPattern(client, acc),
|
||||||
};
|
};
|
||||||
@@ -2624,126 +2708,42 @@ function createCoinbasePattern(client, acc) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} SegwitAdoptionPattern
|
* @typedef {Object} UnclaimedRewardsPattern
|
||||||
* @property {MetricPattern11<StoredF32>} base
|
* @property {BitcoinPattern2<Bitcoin>} bitcoin
|
||||||
* @property {MetricPattern2<StoredF32>} cumulative
|
|
||||||
* @property {MetricPattern2<StoredF32>} sum
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a SegwitAdoptionPattern pattern node
|
|
||||||
* @param {BrkClientBase} client
|
|
||||||
* @param {string} acc - Accumulated metric name
|
|
||||||
* @returns {SegwitAdoptionPattern}
|
|
||||||
*/
|
|
||||||
function createSegwitAdoptionPattern(client, acc) {
|
|
||||||
return {
|
|
||||||
base: createMetricPattern11(client, acc),
|
|
||||||
cumulative: createMetricPattern2(client, _m(acc, 'cumulative')),
|
|
||||||
sum: createMetricPattern2(client, _m(acc, 'sum')),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {Object} _2015Pattern
|
|
||||||
* @property {MetricPattern4<Bitcoin>} bitcoin
|
|
||||||
* @property {MetricPattern4<Dollars>} dollars
|
|
||||||
* @property {MetricPattern4<Sats>} sats
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a _2015Pattern pattern node
|
|
||||||
* @param {BrkClientBase} client
|
|
||||||
* @param {string} acc - Accumulated metric name
|
|
||||||
* @returns {_2015Pattern}
|
|
||||||
*/
|
|
||||||
function create_2015Pattern(client, acc) {
|
|
||||||
return {
|
|
||||||
bitcoin: createMetricPattern4(client, _m(acc, 'btc')),
|
|
||||||
dollars: createMetricPattern4(client, _m(acc, 'usd')),
|
|
||||||
sats: createMetricPattern4(client, acc),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {Object} ActiveSupplyPattern
|
|
||||||
* @property {MetricPattern1<Bitcoin>} bitcoin
|
|
||||||
* @property {MetricPattern1<Dollars>} dollars
|
|
||||||
* @property {MetricPattern1<Sats>} sats
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a ActiveSupplyPattern pattern node
|
|
||||||
* @param {BrkClientBase} client
|
|
||||||
* @param {string} acc - Accumulated metric name
|
|
||||||
* @returns {ActiveSupplyPattern}
|
|
||||||
*/
|
|
||||||
function createActiveSupplyPattern(client, acc) {
|
|
||||||
return {
|
|
||||||
bitcoin: createMetricPattern1(client, _m(acc, 'btc')),
|
|
||||||
dollars: createMetricPattern1(client, _m(acc, 'usd')),
|
|
||||||
sats: createMetricPattern1(client, acc),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {Object} CoinbasePattern2
|
|
||||||
* @property {BlockCountPattern<Bitcoin>} bitcoin
|
|
||||||
* @property {BlockCountPattern<Dollars>} dollars
|
* @property {BlockCountPattern<Dollars>} dollars
|
||||||
* @property {BlockCountPattern<Sats>} sats
|
* @property {BlockCountPattern<Sats>} sats
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a CoinbasePattern2 pattern node
|
* Create a UnclaimedRewardsPattern pattern node
|
||||||
* @param {BrkClientBase} client
|
* @param {BrkClientBase} client
|
||||||
* @param {string} acc - Accumulated metric name
|
* @param {string} acc - Accumulated metric name
|
||||||
* @returns {CoinbasePattern2}
|
* @returns {UnclaimedRewardsPattern}
|
||||||
*/
|
*/
|
||||||
function createCoinbasePattern2(client, acc) {
|
function createUnclaimedRewardsPattern(client, acc) {
|
||||||
return {
|
return {
|
||||||
bitcoin: createBlockCountPattern(client, _m(acc, 'btc')),
|
bitcoin: createBitcoinPattern2(client, _m(acc, 'btc')),
|
||||||
dollars: createBlockCountPattern(client, _m(acc, 'usd')),
|
dollars: createBlockCountPattern(client, _m(acc, 'usd')),
|
||||||
sats: createBlockCountPattern(client, acc),
|
sats: createBlockCountPattern(client, acc),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} CostBasisPattern2
|
* @typedef {Object} _1dReturns1mSdPattern
|
||||||
* @property {MetricPattern1<Dollars>} max
|
* @property {MetricPattern4<StoredF32>} sd
|
||||||
* @property {MetricPattern1<Dollars>} min
|
* @property {MetricPattern4<StoredF32>} sma
|
||||||
* @property {PercentilesPattern} percentiles
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a CostBasisPattern2 pattern node
|
* Create a _1dReturns1mSdPattern pattern node
|
||||||
* @param {BrkClientBase} client
|
* @param {BrkClientBase} client
|
||||||
* @param {string} acc - Accumulated metric name
|
* @param {string} acc - Accumulated metric name
|
||||||
* @returns {CostBasisPattern2}
|
* @returns {_1dReturns1mSdPattern}
|
||||||
*/
|
*/
|
||||||
function createCostBasisPattern2(client, acc) {
|
function create_1dReturns1mSdPattern(client, acc) {
|
||||||
return {
|
return {
|
||||||
max: createMetricPattern1(client, _m(acc, 'max_cost_basis')),
|
sd: createMetricPattern4(client, _m(acc, 'sd')),
|
||||||
min: createMetricPattern1(client, _m(acc, 'min_cost_basis')),
|
sma: createMetricPattern4(client, _m(acc, 'sma')),
|
||||||
percentiles: createPercentilesPattern(client, _m(acc, 'cost_basis')),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {Object} CostBasisPattern
|
|
||||||
* @property {MetricPattern1<Dollars>} max
|
|
||||||
* @property {MetricPattern1<Dollars>} min
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a CostBasisPattern pattern node
|
|
||||||
* @param {BrkClientBase} client
|
|
||||||
* @param {string} acc - Accumulated metric name
|
|
||||||
* @returns {CostBasisPattern}
|
|
||||||
*/
|
|
||||||
function createCostBasisPattern(client, acc) {
|
|
||||||
return {
|
|
||||||
max: createMetricPattern1(client, _m(acc, 'max_cost_basis')),
|
|
||||||
min: createMetricPattern1(client, _m(acc, 'min_cost_basis')),
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2767,21 +2767,21 @@ function createRelativePattern4(client, acc) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} _1dReturns1mSdPattern
|
* @typedef {Object} CostBasisPattern
|
||||||
* @property {MetricPattern4<StoredF32>} sd
|
* @property {MetricPattern1<Dollars>} max
|
||||||
* @property {MetricPattern4<StoredF32>} sma
|
* @property {MetricPattern1<Dollars>} min
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a _1dReturns1mSdPattern pattern node
|
* Create a CostBasisPattern pattern node
|
||||||
* @param {BrkClientBase} client
|
* @param {BrkClientBase} client
|
||||||
* @param {string} acc - Accumulated metric name
|
* @param {string} acc - Accumulated metric name
|
||||||
* @returns {_1dReturns1mSdPattern}
|
* @returns {CostBasisPattern}
|
||||||
*/
|
*/
|
||||||
function create_1dReturns1mSdPattern(client, acc) {
|
function createCostBasisPattern(client, acc) {
|
||||||
return {
|
return {
|
||||||
sd: createMetricPattern4(client, _m(acc, 'sd')),
|
max: createMetricPattern1(client, _m(acc, 'max_cost_basis')),
|
||||||
sma: createMetricPattern4(client, _m(acc, 'sma')),
|
min: createMetricPattern1(client, _m(acc, 'min_cost_basis')),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2806,22 +2806,22 @@ function createSupplyPattern2(client, acc) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @template T
|
* @template T
|
||||||
* @typedef {Object} SatsPattern
|
* @typedef {Object} BlockCountPattern
|
||||||
* @property {MetricPattern1<T>} ohlc
|
* @property {MetricPattern1<T>} cumulative
|
||||||
* @property {SplitPattern2<T>} split
|
* @property {MetricPattern1<T>} sum
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a SatsPattern pattern node
|
* Create a BlockCountPattern pattern node
|
||||||
* @template T
|
* @template T
|
||||||
* @param {BrkClientBase} client
|
* @param {BrkClientBase} client
|
||||||
* @param {string} acc - Accumulated metric name
|
* @param {string} acc - Accumulated metric name
|
||||||
* @returns {SatsPattern<T>}
|
* @returns {BlockCountPattern<T>}
|
||||||
*/
|
*/
|
||||||
function createSatsPattern(client, acc) {
|
function createBlockCountPattern(client, acc) {
|
||||||
return {
|
return {
|
||||||
ohlc: createMetricPattern1(client, _m(acc, 'ohlc')),
|
cumulative: createMetricPattern1(client, _m(acc, 'cumulative')),
|
||||||
split: createSplitPattern2(client, acc),
|
sum: createMetricPattern1(client, acc),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2848,39 +2848,22 @@ function createBitcoinPattern2(client, acc) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @template T
|
* @template T
|
||||||
* @typedef {Object} BlockCountPattern
|
* @typedef {Object} SatsPattern
|
||||||
* @property {MetricPattern1<T>} cumulative
|
* @property {MetricPattern1<T>} ohlc
|
||||||
* @property {MetricPattern1<T>} sum
|
* @property {SplitPattern2<T>} split
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a BlockCountPattern pattern node
|
* Create a SatsPattern pattern node
|
||||||
* @template T
|
* @template T
|
||||||
* @param {BrkClientBase} client
|
* @param {BrkClientBase} client
|
||||||
* @param {string} acc - Accumulated metric name
|
* @param {string} acc - Accumulated metric name
|
||||||
* @returns {BlockCountPattern<T>}
|
* @returns {SatsPattern<T>}
|
||||||
*/
|
*/
|
||||||
function createBlockCountPattern(client, acc) {
|
function createSatsPattern(client, acc) {
|
||||||
return {
|
return {
|
||||||
cumulative: createMetricPattern1(client, _m(acc, 'cumulative')),
|
ohlc: createMetricPattern1(client, _m(acc, 'ohlc')),
|
||||||
sum: createMetricPattern1(client, acc),
|
split: createSplitPattern2(client, acc),
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {Object} OutputsPattern
|
|
||||||
* @property {MetricPattern1<StoredU64>} utxoCount
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a OutputsPattern pattern node
|
|
||||||
* @param {BrkClientBase} client
|
|
||||||
* @param {string} acc - Accumulated metric name
|
|
||||||
* @returns {OutputsPattern}
|
|
||||||
*/
|
|
||||||
function createOutputsPattern(client, acc) {
|
|
||||||
return {
|
|
||||||
utxoCount: createMetricPattern1(client, acc),
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2901,6 +2884,23 @@ function createRealizedPriceExtraPattern(client, acc) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} OutputsPattern
|
||||||
|
* @property {MetricPattern1<StoredU64>} utxoCount
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a OutputsPattern pattern node
|
||||||
|
* @param {BrkClientBase} client
|
||||||
|
* @param {string} acc - Accumulated metric name
|
||||||
|
* @returns {OutputsPattern}
|
||||||
|
*/
|
||||||
|
function createOutputsPattern(client, acc) {
|
||||||
|
return {
|
||||||
|
utxoCount: createMetricPattern1(client, acc),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// Catalog tree typedefs
|
// Catalog tree typedefs
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -3696,8 +3696,8 @@ function createRealizedPriceExtraPattern(client, acc) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} MetricsTree_Market_Dca
|
* @typedef {Object} MetricsTree_Market_Dca
|
||||||
* @property {ClassAveragePricePattern<Dollars>} classAveragePrice
|
* @property {MetricsTree_Market_Dca_ClassAveragePrice} classAveragePrice
|
||||||
* @property {MetricsTree_Market_Dca_ClassReturns} classReturns
|
* @property {ClassAveragePricePattern<StoredF32>} classReturns
|
||||||
* @property {MetricsTree_Market_Dca_ClassStack} classStack
|
* @property {MetricsTree_Market_Dca_ClassStack} classStack
|
||||||
* @property {PeriodAveragePricePattern<Dollars>} periodAveragePrice
|
* @property {PeriodAveragePricePattern<Dollars>} periodAveragePrice
|
||||||
* @property {PeriodCagrPattern} periodCagr
|
* @property {PeriodCagrPattern} periodCagr
|
||||||
@@ -3707,18 +3707,18 @@ function createRealizedPriceExtraPattern(client, acc) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} MetricsTree_Market_Dca_ClassReturns
|
* @typedef {Object} MetricsTree_Market_Dca_ClassAveragePrice
|
||||||
* @property {MetricPattern4<StoredF32>} _2015
|
* @property {MetricPattern4<Dollars>} _2015
|
||||||
* @property {MetricPattern4<StoredF32>} _2016
|
* @property {MetricPattern4<Dollars>} _2016
|
||||||
* @property {MetricPattern4<StoredF32>} _2017
|
* @property {MetricPattern4<Dollars>} _2017
|
||||||
* @property {MetricPattern4<StoredF32>} _2018
|
* @property {MetricPattern4<Dollars>} _2018
|
||||||
* @property {MetricPattern4<StoredF32>} _2019
|
* @property {MetricPattern4<Dollars>} _2019
|
||||||
* @property {MetricPattern4<StoredF32>} _2020
|
* @property {MetricPattern4<Dollars>} _2020
|
||||||
* @property {MetricPattern4<StoredF32>} _2021
|
* @property {MetricPattern4<Dollars>} _2021
|
||||||
* @property {MetricPattern4<StoredF32>} _2022
|
* @property {MetricPattern4<Dollars>} _2022
|
||||||
* @property {MetricPattern4<StoredF32>} _2023
|
* @property {MetricPattern4<Dollars>} _2023
|
||||||
* @property {MetricPattern4<StoredF32>} _2024
|
* @property {MetricPattern4<Dollars>} _2024
|
||||||
* @property {MetricPattern4<StoredF32>} _2025
|
* @property {MetricPattern4<Dollars>} _2025
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -5726,20 +5726,20 @@ class BrkClient extends BrkClientBase {
|
|||||||
yearsSincePriceAth: createMetricPattern4(this, 'years_since_price_ath'),
|
yearsSincePriceAth: createMetricPattern4(this, 'years_since_price_ath'),
|
||||||
},
|
},
|
||||||
dca: {
|
dca: {
|
||||||
classAveragePrice: createClassAveragePricePattern(this, 'dca_class'),
|
classAveragePrice: {
|
||||||
classReturns: {
|
_2015: createMetricPattern4(this, 'dca_class_2015_average_price'),
|
||||||
_2015: createMetricPattern4(this, 'dca_class_2015_returns'),
|
_2016: createMetricPattern4(this, 'dca_class_2016_average_price'),
|
||||||
_2016: createMetricPattern4(this, 'dca_class_2016_returns'),
|
_2017: createMetricPattern4(this, 'dca_class_2017_average_price'),
|
||||||
_2017: createMetricPattern4(this, 'dca_class_2017_returns'),
|
_2018: createMetricPattern4(this, 'dca_class_2018_average_price'),
|
||||||
_2018: createMetricPattern4(this, 'dca_class_2018_returns'),
|
_2019: createMetricPattern4(this, 'dca_class_2019_average_price'),
|
||||||
_2019: createMetricPattern4(this, 'dca_class_2019_returns'),
|
_2020: createMetricPattern4(this, 'dca_class_2020_average_price'),
|
||||||
_2020: createMetricPattern4(this, 'dca_class_2020_returns'),
|
_2021: createMetricPattern4(this, 'dca_class_2021_average_price'),
|
||||||
_2021: createMetricPattern4(this, 'dca_class_2021_returns'),
|
_2022: createMetricPattern4(this, 'dca_class_2022_average_price'),
|
||||||
_2022: createMetricPattern4(this, 'dca_class_2022_returns'),
|
_2023: createMetricPattern4(this, 'dca_class_2023_average_price'),
|
||||||
_2023: createMetricPattern4(this, 'dca_class_2023_returns'),
|
_2024: createMetricPattern4(this, 'dca_class_2024_average_price'),
|
||||||
_2024: createMetricPattern4(this, 'dca_class_2024_returns'),
|
_2025: createMetricPattern4(this, 'dca_class_2025_average_price'),
|
||||||
_2025: createMetricPattern4(this, 'dca_class_2025_returns'),
|
|
||||||
},
|
},
|
||||||
|
classReturns: createClassAveragePricePattern(this, 'dca_class'),
|
||||||
classStack: {
|
classStack: {
|
||||||
_2015: create_2015Pattern(this, 'dca_class_2015_stack'),
|
_2015: create_2015Pattern(this, 'dca_class_2015_stack'),
|
||||||
_2016: create_2015Pattern(this, 'dca_class_2016_stack'),
|
_2016: create_2015Pattern(this, 'dca_class_2016_stack'),
|
||||||
|
|||||||
@@ -2049,6 +2049,23 @@ class BitcoinPattern:
|
|||||||
self.pct90: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, 'pct90'))
|
self.pct90: MetricPattern6[Bitcoin] = MetricPattern6(client, _m(acc, 'pct90'))
|
||||||
self.sum: MetricPattern2[Bitcoin] = MetricPattern2(client, _m(acc, 'sum'))
|
self.sum: MetricPattern2[Bitcoin] = MetricPattern2(client, _m(acc, 'sum'))
|
||||||
|
|
||||||
|
class ClassAveragePricePattern(Generic[T]):
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self._2015: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2015_returns'))
|
||||||
|
self._2016: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2016_returns'))
|
||||||
|
self._2017: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2017_returns'))
|
||||||
|
self._2018: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2018_returns'))
|
||||||
|
self._2019: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2019_returns'))
|
||||||
|
self._2020: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2020_returns'))
|
||||||
|
self._2021: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2021_returns'))
|
||||||
|
self._2022: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2022_returns'))
|
||||||
|
self._2023: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2023_returns'))
|
||||||
|
self._2024: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2024_returns'))
|
||||||
|
self._2025: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2025_returns'))
|
||||||
|
|
||||||
class DollarsPattern(Generic[T]):
|
class DollarsPattern(Generic[T]):
|
||||||
"""Pattern struct for repeated tree structure."""
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
@@ -2066,23 +2083,6 @@ class DollarsPattern(Generic[T]):
|
|||||||
self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct90'))
|
self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct90'))
|
||||||
self.sum: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'sum'))
|
self.sum: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'sum'))
|
||||||
|
|
||||||
class ClassAveragePricePattern(Generic[T]):
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self._2015: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2015_average_price'))
|
|
||||||
self._2016: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2016_average_price'))
|
|
||||||
self._2017: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2017_average_price'))
|
|
||||||
self._2018: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2018_average_price'))
|
|
||||||
self._2019: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2019_average_price'))
|
|
||||||
self._2020: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2020_average_price'))
|
|
||||||
self._2021: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2021_average_price'))
|
|
||||||
self._2022: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2022_average_price'))
|
|
||||||
self._2023: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2023_average_price'))
|
|
||||||
self._2024: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2024_average_price'))
|
|
||||||
self._2025: MetricPattern4[T] = MetricPattern4(client, _m(acc, '2025_average_price'))
|
|
||||||
|
|
||||||
class RelativePattern2:
|
class RelativePattern2:
|
||||||
"""Pattern struct for repeated tree structure."""
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
@@ -2204,6 +2204,58 @@ class PhaseDailyCentsPattern(Generic[T]):
|
|||||||
self.pct75: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct75'))
|
self.pct75: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct75'))
|
||||||
self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct90'))
|
self.pct90: MetricPattern6[T] = MetricPattern6(client, _m(acc, 'pct90'))
|
||||||
|
|
||||||
|
class _10yPattern:
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self.activity: ActivityPattern2 = ActivityPattern2(client, acc)
|
||||||
|
self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc)
|
||||||
|
self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count'))
|
||||||
|
self.realized: RealizedPattern4 = RealizedPattern4(client, acc)
|
||||||
|
self.relative: RelativePattern = RelativePattern(client, acc)
|
||||||
|
self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply'))
|
||||||
|
self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc)
|
||||||
|
|
||||||
|
class PeriodCagrPattern:
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self._10y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('10y', acc))
|
||||||
|
self._2y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('2y', acc))
|
||||||
|
self._3y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('3y', acc))
|
||||||
|
self._4y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('4y', acc))
|
||||||
|
self._5y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('5y', acc))
|
||||||
|
self._6y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('6y', acc))
|
||||||
|
self._8y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('8y', acc))
|
||||||
|
|
||||||
|
class _10yTo12yPattern:
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self.activity: ActivityPattern2 = ActivityPattern2(client, acc)
|
||||||
|
self.cost_basis: CostBasisPattern2 = CostBasisPattern2(client, acc)
|
||||||
|
self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count'))
|
||||||
|
self.realized: RealizedPattern2 = RealizedPattern2(client, acc)
|
||||||
|
self.relative: RelativePattern2 = RelativePattern2(client, acc)
|
||||||
|
self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply'))
|
||||||
|
self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc)
|
||||||
|
|
||||||
|
class _0satsPattern2:
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self.activity: ActivityPattern2 = ActivityPattern2(client, acc)
|
||||||
|
self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc)
|
||||||
|
self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count'))
|
||||||
|
self.realized: RealizedPattern = RealizedPattern(client, acc)
|
||||||
|
self.relative: RelativePattern4 = RelativePattern4(client, _m(acc, 'supply_in'))
|
||||||
|
self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply'))
|
||||||
|
self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc)
|
||||||
|
|
||||||
class UnrealizedPattern:
|
class UnrealizedPattern:
|
||||||
"""Pattern struct for repeated tree structure."""
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
@@ -2230,58 +2282,6 @@ class _100btcPattern:
|
|||||||
self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply'))
|
self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply'))
|
||||||
self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc)
|
self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc)
|
||||||
|
|
||||||
class _0satsPattern2:
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self.activity: ActivityPattern2 = ActivityPattern2(client, acc)
|
|
||||||
self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc)
|
|
||||||
self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count'))
|
|
||||||
self.realized: RealizedPattern = RealizedPattern(client, acc)
|
|
||||||
self.relative: RelativePattern4 = RelativePattern4(client, _m(acc, 'supply_in'))
|
|
||||||
self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply'))
|
|
||||||
self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc)
|
|
||||||
|
|
||||||
class _10yPattern:
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self.activity: ActivityPattern2 = ActivityPattern2(client, acc)
|
|
||||||
self.cost_basis: CostBasisPattern = CostBasisPattern(client, acc)
|
|
||||||
self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count'))
|
|
||||||
self.realized: RealizedPattern4 = RealizedPattern4(client, acc)
|
|
||||||
self.relative: RelativePattern = RelativePattern(client, acc)
|
|
||||||
self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply'))
|
|
||||||
self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc)
|
|
||||||
|
|
||||||
class _10yTo12yPattern:
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self.activity: ActivityPattern2 = ActivityPattern2(client, acc)
|
|
||||||
self.cost_basis: CostBasisPattern2 = CostBasisPattern2(client, acc)
|
|
||||||
self.outputs: OutputsPattern = OutputsPattern(client, _m(acc, 'utxo_count'))
|
|
||||||
self.realized: RealizedPattern2 = RealizedPattern2(client, acc)
|
|
||||||
self.relative: RelativePattern2 = RelativePattern2(client, acc)
|
|
||||||
self.supply: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply'))
|
|
||||||
self.unrealized: UnrealizedPattern = UnrealizedPattern(client, acc)
|
|
||||||
|
|
||||||
class PeriodCagrPattern:
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self._10y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('10y', acc))
|
|
||||||
self._2y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('2y', acc))
|
|
||||||
self._3y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('3y', acc))
|
|
||||||
self._4y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('4y', acc))
|
|
||||||
self._5y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('5y', acc))
|
|
||||||
self._6y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('6y', acc))
|
|
||||||
self._8y: MetricPattern4[StoredF32] = MetricPattern4(client, _p('8y', acc))
|
|
||||||
|
|
||||||
class ActivityPattern2:
|
class ActivityPattern2:
|
||||||
"""Pattern struct for repeated tree structure."""
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
@@ -2303,12 +2303,48 @@ class SplitPattern2(Generic[T]):
|
|||||||
self.low: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'low'))
|
self.low: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'low'))
|
||||||
self.open: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'open'))
|
self.open: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'open'))
|
||||||
|
|
||||||
class UnclaimedRewardsPattern:
|
class SegwitAdoptionPattern:
|
||||||
"""Pattern struct for repeated tree structure."""
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
"""Create pattern node with accumulated metric name."""
|
"""Create pattern node with accumulated metric name."""
|
||||||
self.bitcoin: BitcoinPattern2[Bitcoin] = BitcoinPattern2(client, _m(acc, 'btc'))
|
self.base: MetricPattern11[StoredF32] = MetricPattern11(client, acc)
|
||||||
|
self.cumulative: MetricPattern2[StoredF32] = MetricPattern2(client, _m(acc, 'cumulative'))
|
||||||
|
self.sum: MetricPattern2[StoredF32] = MetricPattern2(client, _m(acc, 'sum'))
|
||||||
|
|
||||||
|
class ActiveSupplyPattern:
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self.bitcoin: MetricPattern1[Bitcoin] = MetricPattern1(client, _m(acc, 'btc'))
|
||||||
|
self.dollars: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'usd'))
|
||||||
|
self.sats: MetricPattern1[Sats] = MetricPattern1(client, acc)
|
||||||
|
|
||||||
|
class _2015Pattern:
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self.bitcoin: MetricPattern4[Bitcoin] = MetricPattern4(client, _m(acc, 'btc'))
|
||||||
|
self.dollars: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'usd'))
|
||||||
|
self.sats: MetricPattern4[Sats] = MetricPattern4(client, acc)
|
||||||
|
|
||||||
|
class CostBasisPattern2:
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self.max: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'max_cost_basis'))
|
||||||
|
self.min: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'min_cost_basis'))
|
||||||
|
self.percentiles: PercentilesPattern = PercentilesPattern(client, _m(acc, 'cost_basis'))
|
||||||
|
|
||||||
|
class CoinbasePattern2:
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self.bitcoin: BlockCountPattern[Bitcoin] = BlockCountPattern(client, _m(acc, 'btc'))
|
||||||
self.dollars: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'usd'))
|
self.dollars: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'usd'))
|
||||||
self.sats: BlockCountPattern[Sats] = BlockCountPattern(client, acc)
|
self.sats: BlockCountPattern[Sats] = BlockCountPattern(client, acc)
|
||||||
|
|
||||||
@@ -2321,67 +2357,15 @@ class CoinbasePattern:
|
|||||||
self.dollars: DollarsPattern[Dollars] = DollarsPattern(client, _m(acc, 'usd'))
|
self.dollars: DollarsPattern[Dollars] = DollarsPattern(client, _m(acc, 'usd'))
|
||||||
self.sats: DollarsPattern[Sats] = DollarsPattern(client, acc)
|
self.sats: DollarsPattern[Sats] = DollarsPattern(client, acc)
|
||||||
|
|
||||||
class SegwitAdoptionPattern:
|
class UnclaimedRewardsPattern:
|
||||||
"""Pattern struct for repeated tree structure."""
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
"""Create pattern node with accumulated metric name."""
|
"""Create pattern node with accumulated metric name."""
|
||||||
self.base: MetricPattern11[StoredF32] = MetricPattern11(client, acc)
|
self.bitcoin: BitcoinPattern2[Bitcoin] = BitcoinPattern2(client, _m(acc, 'btc'))
|
||||||
self.cumulative: MetricPattern2[StoredF32] = MetricPattern2(client, _m(acc, 'cumulative'))
|
|
||||||
self.sum: MetricPattern2[StoredF32] = MetricPattern2(client, _m(acc, 'sum'))
|
|
||||||
|
|
||||||
class _2015Pattern:
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self.bitcoin: MetricPattern4[Bitcoin] = MetricPattern4(client, _m(acc, 'btc'))
|
|
||||||
self.dollars: MetricPattern4[Dollars] = MetricPattern4(client, _m(acc, 'usd'))
|
|
||||||
self.sats: MetricPattern4[Sats] = MetricPattern4(client, acc)
|
|
||||||
|
|
||||||
class ActiveSupplyPattern:
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self.bitcoin: MetricPattern1[Bitcoin] = MetricPattern1(client, _m(acc, 'btc'))
|
|
||||||
self.dollars: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'usd'))
|
|
||||||
self.sats: MetricPattern1[Sats] = MetricPattern1(client, acc)
|
|
||||||
|
|
||||||
class CoinbasePattern2:
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self.bitcoin: BlockCountPattern[Bitcoin] = BlockCountPattern(client, _m(acc, 'btc'))
|
|
||||||
self.dollars: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'usd'))
|
self.dollars: BlockCountPattern[Dollars] = BlockCountPattern(client, _m(acc, 'usd'))
|
||||||
self.sats: BlockCountPattern[Sats] = BlockCountPattern(client, acc)
|
self.sats: BlockCountPattern[Sats] = BlockCountPattern(client, acc)
|
||||||
|
|
||||||
class CostBasisPattern2:
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self.max: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'max_cost_basis'))
|
|
||||||
self.min: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'min_cost_basis'))
|
|
||||||
self.percentiles: PercentilesPattern = PercentilesPattern(client, _m(acc, 'cost_basis'))
|
|
||||||
|
|
||||||
class CostBasisPattern:
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self.max: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'max_cost_basis'))
|
|
||||||
self.min: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'min_cost_basis'))
|
|
||||||
|
|
||||||
class RelativePattern4:
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'loss_rel_to_own_supply'))
|
|
||||||
self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'profit_rel_to_own_supply'))
|
|
||||||
|
|
||||||
class _1dReturns1mSdPattern:
|
class _1dReturns1mSdPattern:
|
||||||
"""Pattern struct for repeated tree structure."""
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
@@ -2390,6 +2374,22 @@ class _1dReturns1mSdPattern:
|
|||||||
self.sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sd'))
|
self.sd: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sd'))
|
||||||
self.sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sma'))
|
self.sma: MetricPattern4[StoredF32] = MetricPattern4(client, _m(acc, 'sma'))
|
||||||
|
|
||||||
|
class RelativePattern4:
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self.supply_in_loss_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'loss_rel_to_own_supply'))
|
||||||
|
self.supply_in_profit_rel_to_own_supply: MetricPattern1[StoredF64] = MetricPattern1(client, _m(acc, 'profit_rel_to_own_supply'))
|
||||||
|
|
||||||
|
class CostBasisPattern:
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self.max: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'max_cost_basis'))
|
||||||
|
self.min: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'min_cost_basis'))
|
||||||
|
|
||||||
class SupplyPattern2:
|
class SupplyPattern2:
|
||||||
"""Pattern struct for repeated tree structure."""
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
@@ -2398,22 +2398,6 @@ class SupplyPattern2:
|
|||||||
self.halved: ActiveSupplyPattern = ActiveSupplyPattern(client, _m(acc, 'halved'))
|
self.halved: ActiveSupplyPattern = ActiveSupplyPattern(client, _m(acc, 'halved'))
|
||||||
self.total: ActiveSupplyPattern = ActiveSupplyPattern(client, acc)
|
self.total: ActiveSupplyPattern = ActiveSupplyPattern(client, acc)
|
||||||
|
|
||||||
class SatsPattern(Generic[T]):
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self.ohlc: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'ohlc'))
|
|
||||||
self.split: SplitPattern2[T] = SplitPattern2(client, acc)
|
|
||||||
|
|
||||||
class BitcoinPattern2(Generic[T]):
|
|
||||||
"""Pattern struct for repeated tree structure."""
|
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
|
||||||
"""Create pattern node with accumulated metric name."""
|
|
||||||
self.cumulative: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'cumulative'))
|
|
||||||
self.sum: MetricPattern1[T] = MetricPattern1(client, acc)
|
|
||||||
|
|
||||||
class BlockCountPattern(Generic[T]):
|
class BlockCountPattern(Generic[T]):
|
||||||
"""Pattern struct for repeated tree structure."""
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
@@ -2422,12 +2406,21 @@ class BlockCountPattern(Generic[T]):
|
|||||||
self.cumulative: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'cumulative'))
|
self.cumulative: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'cumulative'))
|
||||||
self.sum: MetricPattern1[T] = MetricPattern1(client, acc)
|
self.sum: MetricPattern1[T] = MetricPattern1(client, acc)
|
||||||
|
|
||||||
class OutputsPattern:
|
class BitcoinPattern2(Generic[T]):
|
||||||
"""Pattern struct for repeated tree structure."""
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, acc: str):
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
"""Create pattern node with accumulated metric name."""
|
"""Create pattern node with accumulated metric name."""
|
||||||
self.utxo_count: MetricPattern1[StoredU64] = MetricPattern1(client, acc)
|
self.cumulative: MetricPattern2[T] = MetricPattern2(client, _m(acc, 'cumulative'))
|
||||||
|
self.sum: MetricPattern1[T] = MetricPattern1(client, acc)
|
||||||
|
|
||||||
|
class SatsPattern(Generic[T]):
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self.ohlc: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'ohlc'))
|
||||||
|
self.split: SplitPattern2[T] = SplitPattern2(client, acc)
|
||||||
|
|
||||||
class RealizedPriceExtraPattern:
|
class RealizedPriceExtraPattern:
|
||||||
"""Pattern struct for repeated tree structure."""
|
"""Pattern struct for repeated tree structure."""
|
||||||
@@ -2436,6 +2429,13 @@ class RealizedPriceExtraPattern:
|
|||||||
"""Create pattern node with accumulated metric name."""
|
"""Create pattern node with accumulated metric name."""
|
||||||
self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, acc)
|
self.ratio: MetricPattern4[StoredF32] = MetricPattern4(client, acc)
|
||||||
|
|
||||||
|
class OutputsPattern:
|
||||||
|
"""Pattern struct for repeated tree structure."""
|
||||||
|
|
||||||
|
def __init__(self, client: BrkClientBase, acc: str):
|
||||||
|
"""Create pattern node with accumulated metric name."""
|
||||||
|
self.utxo_count: MetricPattern1[StoredU64] = MetricPattern1(client, acc)
|
||||||
|
|
||||||
# Metrics tree classes
|
# Metrics tree classes
|
||||||
|
|
||||||
class MetricsTree_Addresses:
|
class MetricsTree_Addresses:
|
||||||
@@ -3269,21 +3269,21 @@ class MetricsTree_Market_Ath:
|
|||||||
self.price_drawdown: MetricPattern3[StoredF32] = MetricPattern3(client, 'price_drawdown')
|
self.price_drawdown: MetricPattern3[StoredF32] = MetricPattern3(client, 'price_drawdown')
|
||||||
self.years_since_price_ath: MetricPattern4[StoredF32] = MetricPattern4(client, 'years_since_price_ath')
|
self.years_since_price_ath: MetricPattern4[StoredF32] = MetricPattern4(client, 'years_since_price_ath')
|
||||||
|
|
||||||
class MetricsTree_Market_Dca_ClassReturns:
|
class MetricsTree_Market_Dca_ClassAveragePrice:
|
||||||
"""Metrics tree node."""
|
"""Metrics tree node."""
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, base_path: str = ''):
|
def __init__(self, client: BrkClientBase, base_path: str = ''):
|
||||||
self._2015: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2015_returns')
|
self._2015: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2015_average_price')
|
||||||
self._2016: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2016_returns')
|
self._2016: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2016_average_price')
|
||||||
self._2017: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2017_returns')
|
self._2017: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2017_average_price')
|
||||||
self._2018: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2018_returns')
|
self._2018: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2018_average_price')
|
||||||
self._2019: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2019_returns')
|
self._2019: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2019_average_price')
|
||||||
self._2020: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2020_returns')
|
self._2020: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2020_average_price')
|
||||||
self._2021: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2021_returns')
|
self._2021: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2021_average_price')
|
||||||
self._2022: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2022_returns')
|
self._2022: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2022_average_price')
|
||||||
self._2023: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2023_returns')
|
self._2023: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2023_average_price')
|
||||||
self._2024: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2024_returns')
|
self._2024: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2024_average_price')
|
||||||
self._2025: MetricPattern4[StoredF32] = MetricPattern4(client, 'dca_class_2025_returns')
|
self._2025: MetricPattern4[Dollars] = MetricPattern4(client, 'dca_class_2025_average_price')
|
||||||
|
|
||||||
class MetricsTree_Market_Dca_ClassStack:
|
class MetricsTree_Market_Dca_ClassStack:
|
||||||
"""Metrics tree node."""
|
"""Metrics tree node."""
|
||||||
@@ -3305,8 +3305,8 @@ class MetricsTree_Market_Dca:
|
|||||||
"""Metrics tree node."""
|
"""Metrics tree node."""
|
||||||
|
|
||||||
def __init__(self, client: BrkClientBase, base_path: str = ''):
|
def __init__(self, client: BrkClientBase, base_path: str = ''):
|
||||||
self.class_average_price: ClassAveragePricePattern[Dollars] = ClassAveragePricePattern(client, 'dca_class')
|
self.class_average_price: MetricsTree_Market_Dca_ClassAveragePrice = MetricsTree_Market_Dca_ClassAveragePrice(client)
|
||||||
self.class_returns: MetricsTree_Market_Dca_ClassReturns = MetricsTree_Market_Dca_ClassReturns(client)
|
self.class_returns: ClassAveragePricePattern[StoredF32] = ClassAveragePricePattern(client, 'dca_class')
|
||||||
self.class_stack: MetricsTree_Market_Dca_ClassStack = MetricsTree_Market_Dca_ClassStack(client)
|
self.class_stack: MetricsTree_Market_Dca_ClassStack = MetricsTree_Market_Dca_ClassStack(client)
|
||||||
self.period_average_price: PeriodAveragePricePattern[Dollars] = PeriodAveragePricePattern(client, 'dca_average_price')
|
self.period_average_price: PeriodAveragePricePattern[Dollars] = PeriodAveragePricePattern(client, 'dca_average_price')
|
||||||
self.period_cagr: PeriodCagrPattern = PeriodCagrPattern(client, 'dca_cagr')
|
self.period_cagr: PeriodCagrPattern = PeriodCagrPattern(client, 'dca_cagr')
|
||||||
|
|||||||
Reference in New Issue
Block a user