mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-06-30 22:09:00 -07:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2377f51718 | |||
| ff2c29c34f | |||
| 4a06caec67 | |||
| 2a79211aee | |||
| cd5334215a | |||
| dfcb04484b | |||
| d18c872072 | |||
| 80b2c636b0 | |||
| b779edc0d6 | |||
| 3bc20a0a46 | |||
| 121928bc57 | |||
| 1d63b8901d | |||
| 474c430ad1 | |||
| f968ae4fd4 |
Generated
+257
-69
@@ -86,9 +86,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "anyhow"
|
name = "anyhow"
|
||||||
version = "1.0.100"
|
version = "1.0.101"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
|
checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "arrayvec"
|
name = "arrayvec"
|
||||||
@@ -98,9 +98,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-compression"
|
name = "async-compression"
|
||||||
version = "0.4.37"
|
version = "0.4.39"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40"
|
checksum = "68650b7df54f0293fd061972a0fb05aaf4fc0879d3b3d21a638a182c5c543b9f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"compression-codecs",
|
"compression-codecs",
|
||||||
"compression-core",
|
"compression-core",
|
||||||
@@ -334,7 +334,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk"
|
name = "brk"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_bencher",
|
"brk_bencher",
|
||||||
"brk_bindgen",
|
"brk_bindgen",
|
||||||
@@ -347,6 +347,7 @@ dependencies = [
|
|||||||
"brk_iterator",
|
"brk_iterator",
|
||||||
"brk_logger",
|
"brk_logger",
|
||||||
"brk_mempool",
|
"brk_mempool",
|
||||||
|
"brk_oracle",
|
||||||
"brk_query",
|
"brk_query",
|
||||||
"brk_reader",
|
"brk_reader",
|
||||||
"brk_rpc",
|
"brk_rpc",
|
||||||
@@ -358,7 +359,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_alloc"
|
name = "brk_alloc"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libmimalloc-sys",
|
"libmimalloc-sys",
|
||||||
"mimalloc",
|
"mimalloc",
|
||||||
@@ -366,7 +367,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_bencher"
|
name = "brk_bencher"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_error",
|
"brk_error",
|
||||||
"brk_logger",
|
"brk_logger",
|
||||||
@@ -376,14 +377,14 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_bencher_visualizer"
|
name = "brk_bencher_visualizer"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"plotters",
|
"plotters",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_bindgen"
|
name = "brk_bindgen"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_cohort",
|
"brk_cohort",
|
||||||
"brk_query",
|
"brk_query",
|
||||||
@@ -396,7 +397,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_cli"
|
name = "brk_cli"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"brk_alloc",
|
"brk_alloc",
|
||||||
@@ -423,7 +424,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_client"
|
name = "brk_client"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_cohort",
|
"brk_cohort",
|
||||||
"brk_types",
|
"brk_types",
|
||||||
@@ -434,7 +435,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_cohort"
|
name = "brk_cohort"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_error",
|
"brk_error",
|
||||||
"brk_traversable",
|
"brk_traversable",
|
||||||
@@ -446,7 +447,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_computer"
|
name = "brk_computer"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitcoin",
|
"bitcoin",
|
||||||
"brk_alloc",
|
"brk_alloc",
|
||||||
@@ -457,6 +458,7 @@ dependencies = [
|
|||||||
"brk_indexer",
|
"brk_indexer",
|
||||||
"brk_iterator",
|
"brk_iterator",
|
||||||
"brk_logger",
|
"brk_logger",
|
||||||
|
"brk_oracle",
|
||||||
"brk_reader",
|
"brk_reader",
|
||||||
"brk_rpc",
|
"brk_rpc",
|
||||||
"brk_store",
|
"brk_store",
|
||||||
@@ -464,6 +466,7 @@ dependencies = [
|
|||||||
"brk_types",
|
"brk_types",
|
||||||
"color-eyre",
|
"color-eyre",
|
||||||
"derive_more",
|
"derive_more",
|
||||||
|
"pco",
|
||||||
"rayon",
|
"rayon",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
"schemars",
|
"schemars",
|
||||||
@@ -475,7 +478,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_error"
|
name = "brk_error"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitcoin",
|
"bitcoin",
|
||||||
"bitcoincore-rpc",
|
"bitcoincore-rpc",
|
||||||
@@ -491,7 +494,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_fetcher"
|
name = "brk_fetcher"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_error",
|
"brk_error",
|
||||||
"brk_logger",
|
"brk_logger",
|
||||||
@@ -503,7 +506,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_indexer"
|
name = "brk_indexer"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitcoin",
|
"bitcoin",
|
||||||
"brk_alloc",
|
"brk_alloc",
|
||||||
@@ -528,7 +531,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_iterator"
|
name = "brk_iterator"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_error",
|
"brk_error",
|
||||||
"brk_reader",
|
"brk_reader",
|
||||||
@@ -538,7 +541,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_logger"
|
name = "brk_logger"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"jiff",
|
"jiff",
|
||||||
"owo-colors",
|
"owo-colors",
|
||||||
@@ -549,7 +552,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_mempool"
|
name = "brk_mempool"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_error",
|
"brk_error",
|
||||||
"brk_logger",
|
"brk_logger",
|
||||||
@@ -562,9 +565,19 @@ dependencies = [
|
|||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "brk_oracle"
|
||||||
|
version = "0.1.9"
|
||||||
|
dependencies = [
|
||||||
|
"brk_indexer",
|
||||||
|
"brk_types",
|
||||||
|
"serde_json",
|
||||||
|
"vecdb",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_query"
|
name = "brk_query"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitcoin",
|
"bitcoin",
|
||||||
"brk_computer",
|
"brk_computer",
|
||||||
@@ -584,7 +597,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_reader"
|
name = "brk_reader"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitcoin",
|
"bitcoin",
|
||||||
"brk_error",
|
"brk_error",
|
||||||
@@ -599,7 +612,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rpc"
|
name = "brk_rpc"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitcoin",
|
"bitcoin",
|
||||||
"bitcoincore-rpc",
|
"bitcoincore-rpc",
|
||||||
@@ -612,7 +625,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_server"
|
name = "brk_server"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aide",
|
"aide",
|
||||||
"axum",
|
"axum",
|
||||||
@@ -644,7 +657,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_store"
|
name = "brk_store"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_error",
|
"brk_error",
|
||||||
"brk_types",
|
"brk_types",
|
||||||
@@ -655,7 +668,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_traversable"
|
name = "brk_traversable"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_traversable_derive",
|
"brk_traversable_derive",
|
||||||
"brk_types",
|
"brk_types",
|
||||||
@@ -668,7 +681,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_traversable_derive"
|
name = "brk_traversable_derive"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -677,7 +690,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_types"
|
name = "brk_types"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitcoin",
|
"bitcoin",
|
||||||
"brk_error",
|
"brk_error",
|
||||||
@@ -700,7 +713,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_website"
|
name = "brk_website"
|
||||||
version = "0.1.7"
|
version = "0.1.9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"axum",
|
"axum",
|
||||||
"brk_logger",
|
"brk_logger",
|
||||||
@@ -766,15 +779,15 @@ checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "byteview"
|
name = "byteview"
|
||||||
version = "0.10.0"
|
version = "0.10.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dda4398f387cc6395a3e93b3867cd9abda914c97a0b344d1eefb2e5c51785fca"
|
checksum = "1c53ba0f290bfc610084c05582d9c5d421662128fc69f4bf236707af6fd321b9"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.2.55"
|
version = "1.2.56"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29"
|
checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"find-msvc-tools",
|
"find-msvc-tools",
|
||||||
"jobserver",
|
"jobserver",
|
||||||
@@ -1030,9 +1043,9 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ctrlc"
|
name = "ctrlc"
|
||||||
version = "3.5.1"
|
version = "3.5.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "73736a89c4aff73035ba2ed2e565061954da00d4970fc9ac25dcc85a2a20d790"
|
checksum = "e0b1fab2ae45819af2d0731d60f2afe17227ebb1a1538a236da84c93e9a60162"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dispatch2",
|
"dispatch2",
|
||||||
"nix",
|
"nix",
|
||||||
@@ -1137,9 +1150,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dtype_dispatch"
|
name = "dtype_dispatch"
|
||||||
version = "0.2.0"
|
version = "0.2.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "63cb69518c750a905135325cb009ffb24e1dff48cfc7bee026cd8e7e90d14f26"
|
checksum = "ab23e69df104e2fd85ee63a533a22d2132ef5975dc6b36f9f3e5a7305e4a8ed7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dwrote"
|
name = "dwrote"
|
||||||
@@ -1266,6 +1279,12 @@ dependencies = [
|
|||||||
"spin",
|
"spin",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "foldhash"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "font-kit"
|
name = "font-kit"
|
||||||
version = "0.14.3"
|
version = "0.14.3"
|
||||||
@@ -1450,6 +1469,19 @@ dependencies = [
|
|||||||
"wasip2",
|
"wasip2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "getrandom"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"r-efi",
|
||||||
|
"wasip2",
|
||||||
|
"wasip3",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gif"
|
name = "gif"
|
||||||
version = "0.12.0"
|
version = "0.12.0"
|
||||||
@@ -1489,6 +1521,15 @@ version = "0.14.5"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
|
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hashbrown"
|
||||||
|
version = "0.15.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
|
||||||
|
dependencies = [
|
||||||
|
"foldhash",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hashbrown"
|
name = "hashbrown"
|
||||||
version = "0.16.1"
|
version = "0.16.1"
|
||||||
@@ -1702,6 +1743,12 @@ dependencies = [
|
|||||||
"zerovec",
|
"zerovec",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "id-arena"
|
||||||
|
version = "2.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "1.1.0"
|
version = "1.1.0"
|
||||||
@@ -1811,9 +1858,9 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jiff"
|
name = "jiff"
|
||||||
version = "0.2.18"
|
version = "0.2.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e67e8da4c49d6d9909fe03361f9b620f58898859f5c7aded68351e85e71ecf50"
|
checksum = "c867c356cc096b33f4981825ab281ecba3db0acefe60329f044c1789d94c6543"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"jiff-static",
|
"jiff-static",
|
||||||
"log",
|
"log",
|
||||||
@@ -1825,9 +1872,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jiff-static"
|
name = "jiff-static"
|
||||||
version = "0.2.18"
|
version = "0.2.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78"
|
checksum = "f7946b4325269738f270bb55b3c19ab5c5040525f83fd625259422a9d25d9be5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -1878,6 +1925,12 @@ version = "1.5.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "leb128fmt"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lexopt"
|
name = "lexopt"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
@@ -2013,9 +2066,9 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.7.6"
|
version = "2.8.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
|
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memmap2"
|
name = "memmap2"
|
||||||
@@ -2083,9 +2136,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nix"
|
name = "nix"
|
||||||
version = "0.30.1"
|
version = "0.31.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
|
checksum = "225e7cfe711e0ba79a68baeddb2982723e4235247aefce1482f2f16c27865b66"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.10.0",
|
"bitflags 2.10.0",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
@@ -2215,9 +2268,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pco"
|
name = "pco"
|
||||||
version = "1.0.0"
|
version = "1.0.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4acf50a078a796b341d327c18a0d3b2d2ca7dd630f04958558608169e2686e87"
|
checksum = "e89d71ab3c07ed898defa4915bdc2a963131d811a1eab0eeacfac65c94cdeae8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"better_io",
|
"better_io",
|
||||||
"dtype_dispatch",
|
"dtype_dispatch",
|
||||||
@@ -2341,6 +2394,16 @@ dependencies = [
|
|||||||
"zerocopy",
|
"zerocopy",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "prettyplease"
|
||||||
|
version = "0.2.37"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.106"
|
version = "1.0.106"
|
||||||
@@ -2427,9 +2490,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rapidhash"
|
name = "rapidhash"
|
||||||
version = "4.2.1"
|
version = "4.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5d8b5b858a440a0bc02625b62dd95131b9201aa9f69f411195dd4a7cfb1de3d7"
|
checksum = "84816e4c99c467e92cf984ee6328caa976dfecd33a673544489d79ca2caaefe5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rustversion",
|
"rustversion",
|
||||||
]
|
]
|
||||||
@@ -2625,9 +2688,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ryu"
|
name = "ryu"
|
||||||
version = "1.0.22"
|
version = "1.0.23"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984"
|
checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "same-file"
|
name = "same-file"
|
||||||
@@ -2915,9 +2978,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.114"
|
version = "2.0.115"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
|
checksum = "6e614ed320ac28113fa64972c4262d5dbc89deacdfd00c34a3e4cea073243c12"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -2943,12 +3006,12 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tempfile"
|
name = "tempfile"
|
||||||
version = "3.24.0"
|
version = "3.25.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c"
|
checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fastrand",
|
"fastrand",
|
||||||
"getrandom 0.3.4",
|
"getrandom 0.4.1",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"rustix",
|
"rustix",
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.61.2",
|
||||||
@@ -3033,9 +3096,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml"
|
name = "toml"
|
||||||
version = "0.9.11+spec-1.1.0"
|
version = "1.0.1+spec-1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46"
|
checksum = "bbe30f93627849fa362d4a602212d41bb237dc2bd0f8ba0b2ce785012e124220"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"serde_core",
|
"serde_core",
|
||||||
@@ -3048,18 +3111,18 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml_datetime"
|
name = "toml_datetime"
|
||||||
version = "0.7.5+spec-1.1.0"
|
version = "1.0.0+spec-1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347"
|
checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde_core",
|
"serde_core",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml_parser"
|
name = "toml_parser"
|
||||||
version = "1.0.6+spec-1.1.0"
|
version = "1.0.8+spec-1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44"
|
checksum = "0742ff5ff03ea7e67c8ae6c93cac239e0d9784833362da3f9a9c1da8dfefcbdc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"winnow",
|
"winnow",
|
||||||
]
|
]
|
||||||
@@ -3201,9 +3264,9 @@ checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.22"
|
version = "1.0.23"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
|
checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-segmentation"
|
name = "unicode-segmentation"
|
||||||
@@ -3316,6 +3379,15 @@ dependencies = [
|
|||||||
"wit-bindgen",
|
"wit-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasip3"
|
||||||
|
version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
|
||||||
|
dependencies = [
|
||||||
|
"wit-bindgen",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen"
|
name = "wasm-bindgen"
|
||||||
version = "0.2.108"
|
version = "0.2.108"
|
||||||
@@ -3361,6 +3433,40 @@ dependencies = [
|
|||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-encoder"
|
||||||
|
version = "0.244.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
|
||||||
|
dependencies = [
|
||||||
|
"leb128fmt",
|
||||||
|
"wasmparser",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-metadata"
|
||||||
|
version = "0.244.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"indexmap",
|
||||||
|
"wasm-encoder",
|
||||||
|
"wasmparser",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasmparser"
|
||||||
|
version = "0.244.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.10.0",
|
||||||
|
"hashbrown 0.15.5",
|
||||||
|
"indexmap",
|
||||||
|
"semver",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "web-sys"
|
name = "web-sys"
|
||||||
version = "0.3.85"
|
version = "0.3.85"
|
||||||
@@ -3649,6 +3755,88 @@ name = "wit-bindgen"
|
|||||||
version = "0.51.0"
|
version = "0.51.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
|
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
|
||||||
|
dependencies = [
|
||||||
|
"wit-bindgen-rust-macro",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-bindgen-core"
|
||||||
|
version = "0.51.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"heck",
|
||||||
|
"wit-parser",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-bindgen-rust"
|
||||||
|
version = "0.51.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"heck",
|
||||||
|
"indexmap",
|
||||||
|
"prettyplease",
|
||||||
|
"syn",
|
||||||
|
"wasm-metadata",
|
||||||
|
"wit-bindgen-core",
|
||||||
|
"wit-component",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-bindgen-rust-macro"
|
||||||
|
version = "0.51.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"prettyplease",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
"wit-bindgen-core",
|
||||||
|
"wit-bindgen-rust",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-component"
|
||||||
|
version = "0.244.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"bitflags 2.10.0",
|
||||||
|
"indexmap",
|
||||||
|
"log",
|
||||||
|
"serde",
|
||||||
|
"serde_derive",
|
||||||
|
"serde_json",
|
||||||
|
"wasm-encoder",
|
||||||
|
"wasm-metadata",
|
||||||
|
"wasmparser",
|
||||||
|
"wit-parser",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-parser"
|
||||||
|
version = "0.244.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"id-arena",
|
||||||
|
"indexmap",
|
||||||
|
"log",
|
||||||
|
"semver",
|
||||||
|
"serde",
|
||||||
|
"serde_derive",
|
||||||
|
"serde_json",
|
||||||
|
"unicode-xid",
|
||||||
|
"wasmparser",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "writeable"
|
name = "writeable"
|
||||||
@@ -3698,18 +3886,18 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zerocopy"
|
name = "zerocopy"
|
||||||
version = "0.8.38"
|
version = "0.8.39"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "57cf3aa6855b23711ee9852dfc97dfaa51c45feaba5b645d0c777414d494a961"
|
checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"zerocopy-derive",
|
"zerocopy-derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zerocopy-derive"
|
name = "zerocopy-derive"
|
||||||
version = "0.8.38"
|
version = "0.8.39"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8a616990af1a287837c4fe6596ad77ef57948f787e46ce28e166facc0cc1cb75"
|
checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -3772,9 +3960,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zmij"
|
name = "zmij"
|
||||||
version = "1.0.19"
|
version = "1.0.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3ff05f8caa9038894637571ae6b9e29466c1f4f829d26c9b28f869a29cbe3445"
|
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zstd"
|
name = "zstd"
|
||||||
|
|||||||
+27
-26
@@ -4,7 +4,7 @@ members = ["crates/*"]
|
|||||||
package.description = "The Bitcoin Research Kit is a suite of tools designed to extract, compute and display data stored on a Bitcoin Core node"
|
package.description = "The Bitcoin Research Kit is a suite of tools designed to extract, compute and display data stored on a Bitcoin Core node"
|
||||||
package.license = "MIT"
|
package.license = "MIT"
|
||||||
package.edition = "2024"
|
package.edition = "2024"
|
||||||
package.version = "0.1.7"
|
package.version = "0.1.9"
|
||||||
package.homepage = "https://bitcoinresearchkit.org"
|
package.homepage = "https://bitcoinresearchkit.org"
|
||||||
package.repository = "https://github.com/bitcoinresearchkit/brk"
|
package.repository = "https://github.com/bitcoinresearchkit/brk"
|
||||||
package.readme = "README.md"
|
package.readme = "README.md"
|
||||||
@@ -40,38 +40,39 @@ aide = { version = "0.16.0-alpha.2", features = ["axum-json", "axum-query"] }
|
|||||||
axum = { version = "0.8.8", default-features = false, features = ["http1", "json", "query", "tokio", "tracing"] }
|
axum = { version = "0.8.8", default-features = false, features = ["http1", "json", "query", "tokio", "tracing"] }
|
||||||
bitcoin = { version = "0.32.8", features = ["serde"] }
|
bitcoin = { version = "0.32.8", features = ["serde"] }
|
||||||
bitcoincore-rpc = "0.19.0"
|
bitcoincore-rpc = "0.19.0"
|
||||||
brk_alloc = { version = "0.1.7", path = "crates/brk_alloc" }
|
brk_alloc = { version = "0.1.9", path = "crates/brk_alloc" }
|
||||||
brk_bencher = { version = "0.1.7", path = "crates/brk_bencher" }
|
brk_bencher = { version = "0.1.9", path = "crates/brk_bencher" }
|
||||||
brk_bindgen = { version = "0.1.7", path = "crates/brk_bindgen" }
|
brk_bindgen = { version = "0.1.9", path = "crates/brk_bindgen" }
|
||||||
brk_cli = { version = "0.1.7", path = "crates/brk_cli" }
|
brk_cli = { version = "0.1.9", path = "crates/brk_cli" }
|
||||||
brk_client = { version = "0.1.7", path = "crates/brk_client" }
|
brk_client = { version = "0.1.9", path = "crates/brk_client" }
|
||||||
brk_cohort = { version = "0.1.7", path = "crates/brk_cohort" }
|
brk_cohort = { version = "0.1.9", path = "crates/brk_cohort" }
|
||||||
brk_computer = { version = "0.1.7", path = "crates/brk_computer" }
|
brk_computer = { version = "0.1.9", path = "crates/brk_computer" }
|
||||||
brk_error = { version = "0.1.7", path = "crates/brk_error" }
|
brk_error = { version = "0.1.9", path = "crates/brk_error" }
|
||||||
brk_fetcher = { version = "0.1.7", path = "crates/brk_fetcher" }
|
brk_fetcher = { version = "0.1.9", path = "crates/brk_fetcher" }
|
||||||
brk_indexer = { version = "0.1.7", path = "crates/brk_indexer" }
|
brk_indexer = { version = "0.1.9", path = "crates/brk_indexer" }
|
||||||
brk_iterator = { version = "0.1.7", path = "crates/brk_iterator" }
|
brk_iterator = { version = "0.1.9", path = "crates/brk_iterator" }
|
||||||
brk_logger = { version = "0.1.7", path = "crates/brk_logger" }
|
brk_logger = { version = "0.1.9", path = "crates/brk_logger" }
|
||||||
brk_mempool = { version = "0.1.7", path = "crates/brk_mempool" }
|
brk_oracle = { version = "0.1.9", path = "crates/brk_oracle" }
|
||||||
brk_query = { version = "0.1.7", path = "crates/brk_query", features = ["tokio"] }
|
brk_mempool = { version = "0.1.9", path = "crates/brk_mempool" }
|
||||||
brk_reader = { version = "0.1.7", path = "crates/brk_reader" }
|
brk_query = { version = "0.1.9", path = "crates/brk_query", features = ["tokio"] }
|
||||||
brk_rpc = { version = "0.1.7", path = "crates/brk_rpc" }
|
brk_reader = { version = "0.1.9", path = "crates/brk_reader" }
|
||||||
brk_server = { version = "0.1.7", path = "crates/brk_server" }
|
brk_rpc = { version = "0.1.9", path = "crates/brk_rpc" }
|
||||||
brk_store = { version = "0.1.7", path = "crates/brk_store" }
|
brk_server = { version = "0.1.9", path = "crates/brk_server" }
|
||||||
brk_traversable = { version = "0.1.7", path = "crates/brk_traversable", features = ["pco", "derive"] }
|
brk_store = { version = "0.1.9", path = "crates/brk_store" }
|
||||||
brk_traversable_derive = { version = "0.1.7", path = "crates/brk_traversable_derive" }
|
brk_traversable = { version = "0.1.9", path = "crates/brk_traversable", features = ["pco", "derive"] }
|
||||||
brk_types = { version = "0.1.7", path = "crates/brk_types" }
|
brk_traversable_derive = { version = "0.1.9", path = "crates/brk_traversable_derive" }
|
||||||
brk_website = { version = "0.1.7", path = "crates/brk_website" }
|
brk_types = { version = "0.1.9", path = "crates/brk_types" }
|
||||||
byteview = "0.10.0"
|
brk_website = { version = "0.1.9", path = "crates/brk_website" }
|
||||||
|
byteview = "0.10.1"
|
||||||
color-eyre = "0.6.5"
|
color-eyre = "0.6.5"
|
||||||
derive_more = { version = "2.1.1", features = ["deref", "deref_mut"] }
|
derive_more = { version = "2.1.1", features = ["deref", "deref_mut"] }
|
||||||
fjall = "3.0.1"
|
fjall = "3.0.1"
|
||||||
indexmap = { version = "2.13.0", features = ["serde"] }
|
indexmap = { version = "2.13.0", features = ["serde"] }
|
||||||
jiff = { version = "0.2.18", features = ["perf-inline", "tz-system"], default-features = false }
|
jiff = { version = "0.2.20", features = ["perf-inline", "tz-system"], default-features = false }
|
||||||
minreq = { version = "2.14.1", features = ["https", "json-using-serde"] }
|
minreq = { version = "2.14.1", features = ["https", "json-using-serde"] }
|
||||||
owo-colors = "4.2.3"
|
owo-colors = "4.2.3"
|
||||||
parking_lot = "0.12.5"
|
parking_lot = "0.12.5"
|
||||||
pco = "1.0.0"
|
pco = "1.0.1"
|
||||||
rayon = "1.11.0"
|
rayon = "1.11.0"
|
||||||
rustc-hash = "2.1.1"
|
rustc-hash = "2.1.1"
|
||||||
schemars = { version = "1.2.1", features = ["indexmap2"] }
|
schemars = { version = "1.2.1", features = ["indexmap2"] }
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ full = [
|
|||||||
"iterator",
|
"iterator",
|
||||||
"logger",
|
"logger",
|
||||||
"mempool",
|
"mempool",
|
||||||
|
"oracle",
|
||||||
"query",
|
"query",
|
||||||
"reader",
|
"reader",
|
||||||
"rpc",
|
"rpc",
|
||||||
@@ -39,6 +40,7 @@ indexer = ["brk_indexer"]
|
|||||||
iterator = ["brk_iterator"]
|
iterator = ["brk_iterator"]
|
||||||
logger = ["brk_logger"]
|
logger = ["brk_logger"]
|
||||||
mempool = ["brk_mempool"]
|
mempool = ["brk_mempool"]
|
||||||
|
oracle = ["brk_oracle"]
|
||||||
query = ["brk_query"]
|
query = ["brk_query"]
|
||||||
reader = ["brk_reader"]
|
reader = ["brk_reader"]
|
||||||
rpc = ["brk_rpc"]
|
rpc = ["brk_rpc"]
|
||||||
@@ -59,6 +61,7 @@ brk_indexer = { workspace = true, optional = true }
|
|||||||
brk_iterator = { workspace = true, optional = true }
|
brk_iterator = { workspace = true, optional = true }
|
||||||
brk_logger = { workspace = true, optional = true }
|
brk_logger = { workspace = true, optional = true }
|
||||||
brk_mempool = { workspace = true, optional = true }
|
brk_mempool = { workspace = true, optional = true }
|
||||||
|
brk_oracle = { workspace = true, optional = true }
|
||||||
brk_query = { workspace = true, optional = true }
|
brk_query = { workspace = true, optional = true }
|
||||||
brk_reader = { workspace = true, optional = true }
|
brk_reader = { workspace = true, optional = true }
|
||||||
brk_rpc = { workspace = true, optional = true }
|
brk_rpc = { workspace = true, optional = true }
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ Feature flags match crate names without the `brk_` prefix. Use `full` to enable
|
|||||||
| [brk_indexer](https://docs.rs/brk_indexer) | Index transactions, addresses, and UTXOs |
|
| [brk_indexer](https://docs.rs/brk_indexer) | Index transactions, addresses, and UTXOs |
|
||||||
| [brk_computer](https://docs.rs/brk_computer) | Compute derived metrics (realized cap, MVRV, SOPR, cohorts, etc.) |
|
| [brk_computer](https://docs.rs/brk_computer) | Compute derived metrics (realized cap, MVRV, SOPR, cohorts, etc.) |
|
||||||
| [brk_mempool](https://docs.rs/brk_mempool) | Monitor mempool, estimate fees, project upcoming blocks |
|
| [brk_mempool](https://docs.rs/brk_mempool) | Monitor mempool, estimate fees, project upcoming blocks |
|
||||||
|
| [brk_oracle](https://docs.rs/brk_oracle) | Pure on-chain BTC/USD price oracle |
|
||||||
| [brk_query](https://docs.rs/brk_query) | Query interface for indexed and computed data |
|
| [brk_query](https://docs.rs/brk_query) | Query interface for indexed and computed data |
|
||||||
| [brk_server](https://docs.rs/brk_server) | REST API with OpenAPI docs |
|
| [brk_server](https://docs.rs/brk_server) | REST API with OpenAPI docs |
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,10 @@ pub use brk_logger as logger;
|
|||||||
#[doc(inline)]
|
#[doc(inline)]
|
||||||
pub use brk_mempool as mempool;
|
pub use brk_mempool as mempool;
|
||||||
|
|
||||||
|
#[cfg(feature = "oracle")]
|
||||||
|
#[doc(inline)]
|
||||||
|
pub use brk_oracle as oracle;
|
||||||
|
|
||||||
#[cfg(feature = "query")]
|
#[cfg(feature = "query")]
|
||||||
#[doc(inline)]
|
#[doc(inline)]
|
||||||
pub use brk_query as query;
|
pub use brk_query as query;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ owo-colors = { workspace = true }
|
|||||||
tracing = { workspace = true }
|
tracing = { workspace = true }
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
tokio = { workspace = true }
|
tokio = { workspace = true }
|
||||||
toml = "0.9.11"
|
toml = "1.0.1"
|
||||||
vecdb = { workspace = true }
|
vecdb = { workspace = true }
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
|
|||||||
@@ -5078,6 +5078,7 @@ pub struct MetricsTree_Price {
|
|||||||
pub cents: MetricsTree_Price_Cents,
|
pub cents: MetricsTree_Price_Cents,
|
||||||
pub usd: MetricsTree_Price_Usd,
|
pub usd: MetricsTree_Price_Usd,
|
||||||
pub sats: OhlcSplitPattern2<OHLCSats>,
|
pub sats: OhlcSplitPattern2<OHLCSats>,
|
||||||
|
pub oracle: MetricsTree_Price_Oracle,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MetricsTree_Price {
|
impl MetricsTree_Price {
|
||||||
@@ -5086,6 +5087,7 @@ impl MetricsTree_Price {
|
|||||||
cents: MetricsTree_Price_Cents::new(client.clone(), format!("{base_path}_cents")),
|
cents: MetricsTree_Price_Cents::new(client.clone(), format!("{base_path}_cents")),
|
||||||
usd: MetricsTree_Price_Usd::new(client.clone(), format!("{base_path}_usd")),
|
usd: MetricsTree_Price_Usd::new(client.clone(), format!("{base_path}_usd")),
|
||||||
sats: OhlcSplitPattern2::new(client.clone(), "price".to_string()),
|
sats: OhlcSplitPattern2::new(client.clone(), "price".to_string()),
|
||||||
|
oracle: MetricsTree_Price_Oracle::new(client.clone(), format!("{base_path}_oracle")),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5139,6 +5141,27 @@ impl MetricsTree_Price_Usd {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Metrics tree node.
|
||||||
|
pub struct MetricsTree_Price_Oracle {
|
||||||
|
pub price_cents: MetricPattern11<CentsUnsigned>,
|
||||||
|
pub ohlc_cents: MetricPattern6<OHLCCentsUnsigned>,
|
||||||
|
pub split: CloseHighLowOpenPattern2<CentsUnsigned>,
|
||||||
|
pub ohlc: MetricPattern1<OHLCCentsUnsigned>,
|
||||||
|
pub ohlc_dollars: MetricPattern1<OHLCDollars>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MetricsTree_Price_Oracle {
|
||||||
|
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
|
||||||
|
Self {
|
||||||
|
price_cents: MetricPattern11::new(client.clone(), "oracle_price_cents".to_string()),
|
||||||
|
ohlc_cents: MetricPattern6::new(client.clone(), "oracle_ohlc_cents".to_string()),
|
||||||
|
split: CloseHighLowOpenPattern2::new(client.clone(), "oracle_price".to_string()),
|
||||||
|
ohlc: MetricPattern1::new(client.clone(), "oracle_price_ohlc".to_string()),
|
||||||
|
ohlc_dollars: MetricPattern1::new(client.clone(), "oracle_ohlc_dollars".to_string()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Metrics tree node.
|
/// Metrics tree node.
|
||||||
pub struct MetricsTree_Distribution {
|
pub struct MetricsTree_Distribution {
|
||||||
pub supply_state: MetricPattern11<SupplyState>,
|
pub supply_state: MetricPattern11<SupplyState>,
|
||||||
@@ -5998,6 +6021,9 @@ pub struct MetricsTree_Supply {
|
|||||||
pub inflation: MetricPattern4<StoredF32>,
|
pub inflation: MetricPattern4<StoredF32>,
|
||||||
pub velocity: MetricsTree_Supply_Velocity,
|
pub velocity: MetricsTree_Supply_Velocity,
|
||||||
pub market_cap: MetricPattern1<Dollars>,
|
pub market_cap: MetricPattern1<Dollars>,
|
||||||
|
pub market_cap_growth_rate: MetricPattern4<StoredF32>,
|
||||||
|
pub realized_cap_growth_rate: MetricPattern4<StoredF32>,
|
||||||
|
pub cap_growth_rate_diff: MetricPattern6<StoredF32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MetricsTree_Supply {
|
impl MetricsTree_Supply {
|
||||||
@@ -6008,6 +6034,9 @@ impl MetricsTree_Supply {
|
|||||||
inflation: MetricPattern4::new(client.clone(), "inflation_rate".to_string()),
|
inflation: MetricPattern4::new(client.clone(), "inflation_rate".to_string()),
|
||||||
velocity: MetricsTree_Supply_Velocity::new(client.clone(), format!("{base_path}_velocity")),
|
velocity: MetricsTree_Supply_Velocity::new(client.clone(), format!("{base_path}_velocity")),
|
||||||
market_cap: MetricPattern1::new(client.clone(), "market_cap".to_string()),
|
market_cap: MetricPattern1::new(client.clone(), "market_cap".to_string()),
|
||||||
|
market_cap_growth_rate: MetricPattern4::new(client.clone(), "market_cap_growth_rate".to_string()),
|
||||||
|
realized_cap_growth_rate: MetricPattern4::new(client.clone(), "realized_cap_growth_rate".to_string()),
|
||||||
|
cap_growth_rate_diff: MetricPattern6::new(client.clone(), "cap_growth_rate_diff".to_string()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6067,7 +6096,7 @@ pub struct BrkClient {
|
|||||||
|
|
||||||
impl BrkClient {
|
impl BrkClient {
|
||||||
/// Client version.
|
/// Client version.
|
||||||
pub const VERSION: &'static str = "v0.1.6";
|
pub const VERSION: &'static str = "v0.1.7";
|
||||||
|
|
||||||
/// Create a new client with the given base URL.
|
/// Create a new client with the given base URL.
|
||||||
pub fn new(base_url: impl Into<String>) -> Self {
|
pub fn new(base_url: impl Into<String>) -> Self {
|
||||||
@@ -6291,6 +6320,15 @@ impl BrkClient {
|
|||||||
self.base.get_json(&format!("/api/mempool/info"))
|
self.base.get_json(&format!("/api/mempool/info"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Live BTC/USD price
|
||||||
|
///
|
||||||
|
/// Returns the current BTC/USD price in dollars, derived from on-chain round-dollar output patterns in the last 12 blocks plus mempool.
|
||||||
|
///
|
||||||
|
/// Endpoint: `GET /api/mempool/price`
|
||||||
|
pub fn get_live_price(&self) -> Result<Dollars> {
|
||||||
|
self.base.get_json(&format!("/api/mempool/price"))
|
||||||
|
}
|
||||||
|
|
||||||
/// Mempool transaction IDs
|
/// Mempool transaction IDs
|
||||||
///
|
///
|
||||||
/// Get all transaction IDs currently in the mempool.
|
/// Get all transaction IDs currently in the mempool.
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ brk_error = { workspace = true, features = ["vecdb"] }
|
|||||||
brk_fetcher = { workspace = true }
|
brk_fetcher = { workspace = true }
|
||||||
brk_cohort = { workspace = true }
|
brk_cohort = { workspace = true }
|
||||||
brk_indexer = { workspace = true }
|
brk_indexer = { workspace = true }
|
||||||
|
brk_oracle = { workspace = true }
|
||||||
brk_iterator = { workspace = true }
|
brk_iterator = { workspace = true }
|
||||||
brk_logger = { workspace = true }
|
brk_logger = { workspace = true }
|
||||||
brk_reader = { workspace = true }
|
brk_reader = { workspace = true }
|
||||||
@@ -21,6 +22,7 @@ brk_store = { workspace = true }
|
|||||||
brk_traversable = { workspace = true }
|
brk_traversable = { workspace = true }
|
||||||
brk_types = { workspace = true }
|
brk_types = { workspace = true }
|
||||||
derive_more = { workspace = true }
|
derive_more = { workspace = true }
|
||||||
|
pco = { workspace = true }
|
||||||
tracing = { workspace = true }
|
tracing = { workspace = true }
|
||||||
rayon = { workspace = true }
|
rayon = { workspace = true }
|
||||||
rustc-hash = { workspace = true }
|
rustc-hash = { workspace = true }
|
||||||
|
|||||||
@@ -249,8 +249,10 @@ impl UTXOCohorts {
|
|||||||
.try_for_each(|v| v.compute_rest_part1(indexes, price, starting_indexes, exit))?;
|
.try_for_each(|v| v.compute_rest_part1(indexes, price, starting_indexes, exit))?;
|
||||||
|
|
||||||
// 2. Compute net_sentiment.height for separate cohorts (greed - pain)
|
// 2. Compute net_sentiment.height for separate cohorts (greed - pain)
|
||||||
self.par_iter_separate_mut()
|
self.par_iter_separate_mut().try_for_each(|v| {
|
||||||
.try_for_each(|v| v.metrics.compute_net_sentiment_height(starting_indexes, exit))?;
|
v.metrics
|
||||||
|
.compute_net_sentiment_height(starting_indexes, exit)
|
||||||
|
})?;
|
||||||
|
|
||||||
// 3. Compute net_sentiment.height for aggregate cohorts (weighted average)
|
// 3. Compute net_sentiment.height for aggregate cohorts (weighted average)
|
||||||
self.for_each_aggregate(|vecs, sources| {
|
self.for_each_aggregate(|vecs, sources| {
|
||||||
@@ -260,8 +262,10 @@ impl UTXOCohorts {
|
|||||||
})?;
|
})?;
|
||||||
|
|
||||||
// 4. Compute net_sentiment dateindex for ALL cohorts
|
// 4. Compute net_sentiment dateindex for ALL cohorts
|
||||||
self.par_iter_mut()
|
self.par_iter_mut().try_for_each(|v| {
|
||||||
.try_for_each(|v| v.metrics.compute_net_sentiment_rest(indexes, starting_indexes, exit))
|
v.metrics
|
||||||
|
.compute_net_sentiment_rest(indexes, starting_indexes, exit)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Second phase of post-processing: compute relative metrics.
|
/// Second phase of post-processing: compute relative metrics.
|
||||||
@@ -468,7 +472,8 @@ impl UTXOCohorts {
|
|||||||
// Collect merged entries during the merge (already in sorted order)
|
// Collect merged entries during the merge (already in sorted order)
|
||||||
// Pre-allocate with max possible unique prices (actual count likely lower due to dedup)
|
// Pre-allocate with max possible unique prices (actual count likely lower due to dedup)
|
||||||
let max_unique_prices = relevant.iter().map(|e| e.len()).max().unwrap_or(0);
|
let max_unique_prices = relevant.iter().map(|e| e.len()).max().unwrap_or(0);
|
||||||
let mut merged: Vec<(CentsUnsignedCompact, Sats)> = Vec::with_capacity(max_unique_prices);
|
let mut merged: Vec<(CentsUnsignedCompact, Sats)> =
|
||||||
|
Vec::with_capacity(max_unique_prices);
|
||||||
|
|
||||||
// Finalize a price point: compute percentiles and accumulate for merged vec
|
// Finalize a price point: compute percentiles and accumulate for merged vec
|
||||||
let mut finalize_price = |price: CentsUnsigned, sats: u64, usd: u128| {
|
let mut finalize_price = |price: CentsUnsigned, sats: u64, usd: u128| {
|
||||||
@@ -489,7 +494,8 @@ impl UTXOCohorts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Round to nearest dollar with N significant digits for storage
|
// Round to nearest dollar with N significant digits for storage
|
||||||
let rounded: CentsUnsignedCompact = price.round_to_dollar(COST_BASIS_PRICE_DIGITS).into();
|
let rounded: CentsUnsignedCompact =
|
||||||
|
price.round_to_dollar(COST_BASIS_PRICE_DIGITS).into();
|
||||||
|
|
||||||
// Merge entries with same rounded price using last_mut
|
// Merge entries with same rounded price using last_mut
|
||||||
if let Some((last_price, last_sats)) = merged.last_mut()
|
if let Some((last_price, last_sats)) = merged.last_mut()
|
||||||
@@ -562,7 +568,10 @@ impl UTXOCohorts {
|
|||||||
let dir = states_path.join(format!("utxo_{cohort_name}_cost_basis/by_date"));
|
let dir = states_path.join(format!("utxo_{cohort_name}_cost_basis/by_date"));
|
||||||
fs::create_dir_all(&dir)?;
|
fs::create_dir_all(&dir)?;
|
||||||
let path = dir.join(date.to_string());
|
let path = dir.join(date.to_string());
|
||||||
fs::write(path, CostBasisDistribution::serialize_iter(merged.into_iter())?)?;
|
fs::write(
|
||||||
|
path,
|
||||||
|
CostBasisDistribution::serialize_iter(merged.into_iter())?,
|
||||||
|
)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
oracle
|
|
||||||
@@ -6,7 +6,6 @@ use super::Vecs;
|
|||||||
use crate::{indexes, ComputeIndexes};
|
use crate::{indexes, ComputeIndexes};
|
||||||
|
|
||||||
impl Vecs {
|
impl Vecs {
|
||||||
#[allow(unused_variables)]
|
|
||||||
pub fn compute(
|
pub fn compute(
|
||||||
&mut self,
|
&mut self,
|
||||||
indexer: &Indexer,
|
indexer: &Indexer,
|
||||||
@@ -18,18 +17,8 @@ impl Vecs {
|
|||||||
|
|
||||||
self.sats.compute(starting_indexes, &self.usd, exit)?;
|
self.sats.compute(starting_indexes, &self.usd, exit)?;
|
||||||
|
|
||||||
// Oracle price computation is slow and still WIP, only run in dev builds
|
self.oracle
|
||||||
// #[cfg(debug_assertions)]
|
.compute(indexer, indexes, starting_indexes, exit)?;
|
||||||
// {
|
|
||||||
// use std::time::Instant;
|
|
||||||
// use tracing::info;
|
|
||||||
//
|
|
||||||
// info!("Computing oracle prices...");
|
|
||||||
// let i = Instant::now();
|
|
||||||
// self.oracle
|
|
||||||
// .compute(indexer, indexes, &self.cents, starting_indexes, exit)?;
|
|
||||||
// info!("Computed oracle prices in {:?}", i.elapsed());
|
|
||||||
// }
|
|
||||||
|
|
||||||
let _lock = exit.lock();
|
let _lock = exit.lock();
|
||||||
self.db().compact()?;
|
self.db().compact()?;
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ mod compute;
|
|||||||
mod fetch;
|
mod fetch;
|
||||||
|
|
||||||
pub mod cents;
|
pub mod cents;
|
||||||
// pub mod oracle;
|
pub mod oracle;
|
||||||
pub mod sats;
|
pub mod sats;
|
||||||
pub mod usd;
|
pub mod usd;
|
||||||
|
|
||||||
pub use cents::Vecs as CentsVecs;
|
pub use cents::Vecs as CentsVecs;
|
||||||
// pub use oracle::Vecs as OracleVecs;
|
pub use oracle::Vecs as OracleVecs;
|
||||||
pub use sats::Vecs as SatsVecs;
|
pub use sats::Vecs as SatsVecs;
|
||||||
pub use usd::Vecs as UsdVecs;
|
pub use usd::Vecs as UsdVecs;
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ pub struct Vecs {
|
|||||||
pub cents: CentsVecs,
|
pub cents: CentsVecs,
|
||||||
pub usd: UsdVecs,
|
pub usd: UsdVecs,
|
||||||
pub sats: SatsVecs,
|
pub sats: SatsVecs,
|
||||||
// pub oracle: OracleVecs,
|
pub oracle: OracleVecs,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Vecs {
|
impl Vecs {
|
||||||
@@ -67,7 +67,7 @@ impl Vecs {
|
|||||||
let cents = CentsVecs::forced_import(db, version)?;
|
let cents = CentsVecs::forced_import(db, version)?;
|
||||||
let usd = UsdVecs::forced_import(db, version, indexes)?;
|
let usd = UsdVecs::forced_import(db, version, indexes)?;
|
||||||
let sats = SatsVecs::forced_import(db, version, indexes)?;
|
let sats = SatsVecs::forced_import(db, version, indexes)?;
|
||||||
// let oracle = OracleVecs::forced_import(db, version)?;
|
let oracle = OracleVecs::forced_import(db, version, indexes)?;
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
db: db.clone(),
|
db: db.clone(),
|
||||||
@@ -75,7 +75,7 @@ impl Vecs {
|
|||||||
cents,
|
cents,
|
||||||
usd,
|
usd,
|
||||||
sats,
|
sats,
|
||||||
// oracle,
|
oracle,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,491 @@
|
|||||||
|
use std::ops::Range;
|
||||||
|
|
||||||
|
use brk_error::Result;
|
||||||
|
use brk_indexer::Indexer;
|
||||||
|
use brk_oracle::{Config, NUM_BINS, Oracle, START_HEIGHT, bin_to_cents, cents_to_bin};
|
||||||
|
use brk_types::{
|
||||||
|
CentsUnsigned, Close, DateIndex, Height, High, Low, OHLCCentsUnsigned, OHLCDollars, Open,
|
||||||
|
OutputType, Sats, TxIndex, TxOutIndex,
|
||||||
|
};
|
||||||
|
use tracing::info;
|
||||||
|
use vecdb::{
|
||||||
|
AnyStoredVec, AnyVec, Exit, GenericStoredVec, IterableVec, TypedVecIterator, VecIndex,
|
||||||
|
VecIterator,
|
||||||
|
};
|
||||||
|
|
||||||
|
use super::Vecs;
|
||||||
|
use crate::{ComputeIndexes, indexes};
|
||||||
|
|
||||||
|
impl Vecs {
|
||||||
|
pub fn compute(
|
||||||
|
&mut self,
|
||||||
|
indexer: &Indexer,
|
||||||
|
indexes: &indexes::Vecs,
|
||||||
|
starting_indexes: &ComputeIndexes,
|
||||||
|
exit: &Exit,
|
||||||
|
) -> Result<()> {
|
||||||
|
self.compute_prices(indexer, starting_indexes, exit)?;
|
||||||
|
self.compute_daily_ohlc(indexes, starting_indexes, exit)?;
|
||||||
|
self.compute_split_and_ohlc(starting_indexes, exit)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn compute_split_and_ohlc(
|
||||||
|
&mut self,
|
||||||
|
starting_indexes: &ComputeIndexes,
|
||||||
|
exit: &Exit,
|
||||||
|
) -> Result<()> {
|
||||||
|
// Destructure to allow simultaneous borrows of different fields
|
||||||
|
let Self {
|
||||||
|
price_cents,
|
||||||
|
ohlc_cents,
|
||||||
|
split,
|
||||||
|
ohlc,
|
||||||
|
ohlc_dollars,
|
||||||
|
} = self;
|
||||||
|
|
||||||
|
// Open: first-value aggregation
|
||||||
|
split.open.height.compute_transform(
|
||||||
|
starting_indexes.height,
|
||||||
|
&*price_cents,
|
||||||
|
|(h, price, ..)| (h, Open::new(price)),
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
split.open.compute_rest(starting_indexes, exit, |v| {
|
||||||
|
v.compute_transform(
|
||||||
|
starting_indexes.dateindex,
|
||||||
|
&*ohlc_cents,
|
||||||
|
|(di, ohlc_val, ..)| (di, ohlc_val.open),
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
Ok(())
|
||||||
|
})?;
|
||||||
|
|
||||||
|
// High: max-value aggregation
|
||||||
|
split.high.height.compute_transform(
|
||||||
|
starting_indexes.height,
|
||||||
|
&*price_cents,
|
||||||
|
|(h, price, ..)| (h, High::new(price)),
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
split.high.compute_rest(starting_indexes, exit, |v| {
|
||||||
|
v.compute_transform(
|
||||||
|
starting_indexes.dateindex,
|
||||||
|
&*ohlc_cents,
|
||||||
|
|(di, ohlc_val, ..)| (di, ohlc_val.high),
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
Ok(())
|
||||||
|
})?;
|
||||||
|
|
||||||
|
// Low: min-value aggregation
|
||||||
|
split.low.height.compute_transform(
|
||||||
|
starting_indexes.height,
|
||||||
|
&*price_cents,
|
||||||
|
|(h, price, ..)| (h, Low::new(price)),
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
split.low.compute_rest(starting_indexes, exit, |v| {
|
||||||
|
v.compute_transform(
|
||||||
|
starting_indexes.dateindex,
|
||||||
|
&*ohlc_cents,
|
||||||
|
|(di, ohlc_val, ..)| (di, ohlc_val.low),
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
Ok(())
|
||||||
|
})?;
|
||||||
|
|
||||||
|
// Close: last-value aggregation
|
||||||
|
split.close.height.compute_transform(
|
||||||
|
starting_indexes.height,
|
||||||
|
&*price_cents,
|
||||||
|
|(h, price, ..)| (h, Close::new(price)),
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
split.close.compute_rest(starting_indexes, exit, |v| {
|
||||||
|
v.compute_transform(
|
||||||
|
starting_indexes.dateindex,
|
||||||
|
&*ohlc_cents,
|
||||||
|
|(di, ohlc_val, ..)| (di, ohlc_val.close),
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
Ok(())
|
||||||
|
})?;
|
||||||
|
|
||||||
|
// Period OHLC aggregates - time based
|
||||||
|
ohlc.dateindex.compute_transform4(
|
||||||
|
starting_indexes.dateindex,
|
||||||
|
&split.open.dateindex,
|
||||||
|
&split.high.dateindex,
|
||||||
|
&split.low.dateindex,
|
||||||
|
&split.close.dateindex,
|
||||||
|
|(i, open, high, low, close, _)| {
|
||||||
|
(i, OHLCCentsUnsigned { open, high, low, close })
|
||||||
|
},
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
ohlc.week.compute_transform4(
|
||||||
|
starting_indexes.weekindex,
|
||||||
|
&*split.open.weekindex,
|
||||||
|
&*split.high.weekindex,
|
||||||
|
&*split.low.weekindex,
|
||||||
|
&*split.close.weekindex,
|
||||||
|
|(i, open, high, low, close, _)| {
|
||||||
|
(i, OHLCCentsUnsigned { open, high, low, close })
|
||||||
|
},
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
ohlc.month.compute_transform4(
|
||||||
|
starting_indexes.monthindex,
|
||||||
|
&*split.open.monthindex,
|
||||||
|
&*split.high.monthindex,
|
||||||
|
&*split.low.monthindex,
|
||||||
|
&*split.close.monthindex,
|
||||||
|
|(i, open, high, low, close, _)| {
|
||||||
|
(i, OHLCCentsUnsigned { open, high, low, close })
|
||||||
|
},
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
ohlc.quarter.compute_transform4(
|
||||||
|
starting_indexes.quarterindex,
|
||||||
|
&*split.open.quarterindex,
|
||||||
|
&*split.high.quarterindex,
|
||||||
|
&*split.low.quarterindex,
|
||||||
|
&*split.close.quarterindex,
|
||||||
|
|(i, open, high, low, close, _)| {
|
||||||
|
(i, OHLCCentsUnsigned { open, high, low, close })
|
||||||
|
},
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
ohlc.semester.compute_transform4(
|
||||||
|
starting_indexes.semesterindex,
|
||||||
|
&*split.open.semesterindex,
|
||||||
|
&*split.high.semesterindex,
|
||||||
|
&*split.low.semesterindex,
|
||||||
|
&*split.close.semesterindex,
|
||||||
|
|(i, open, high, low, close, _)| {
|
||||||
|
(i, OHLCCentsUnsigned { open, high, low, close })
|
||||||
|
},
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
ohlc.year.compute_transform4(
|
||||||
|
starting_indexes.yearindex,
|
||||||
|
&*split.open.yearindex,
|
||||||
|
&*split.high.yearindex,
|
||||||
|
&*split.low.yearindex,
|
||||||
|
&*split.close.yearindex,
|
||||||
|
|(i, open, high, low, close, _)| {
|
||||||
|
(i, OHLCCentsUnsigned { open, high, low, close })
|
||||||
|
},
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
ohlc.decade.compute_transform4(
|
||||||
|
starting_indexes.decadeindex,
|
||||||
|
&*split.open.decadeindex,
|
||||||
|
&*split.high.decadeindex,
|
||||||
|
&*split.low.decadeindex,
|
||||||
|
&*split.close.decadeindex,
|
||||||
|
|(i, open, high, low, close, _)| {
|
||||||
|
(i, OHLCCentsUnsigned { open, high, low, close })
|
||||||
|
},
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
// Period OHLC aggregates - chain based
|
||||||
|
ohlc.height.compute_transform4(
|
||||||
|
starting_indexes.height,
|
||||||
|
&split.open.height,
|
||||||
|
&split.high.height,
|
||||||
|
&split.low.height,
|
||||||
|
&split.close.height,
|
||||||
|
|(i, open, high, low, close, _)| {
|
||||||
|
(i, OHLCCentsUnsigned { open, high, low, close })
|
||||||
|
},
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
ohlc.difficultyepoch.compute_transform4(
|
||||||
|
starting_indexes.difficultyepoch,
|
||||||
|
&*split.open.difficultyepoch,
|
||||||
|
&*split.high.difficultyepoch,
|
||||||
|
&*split.low.difficultyepoch,
|
||||||
|
&*split.close.difficultyepoch,
|
||||||
|
|(i, open, high, low, close, _)| {
|
||||||
|
(i, OHLCCentsUnsigned { open, high, low, close })
|
||||||
|
},
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
// OHLC dollars - transform cents to dollars at every period level
|
||||||
|
macro_rules! cents_to_dollars {
|
||||||
|
($field:ident, $idx:expr) => {
|
||||||
|
ohlc_dollars.$field.compute_transform(
|
||||||
|
$idx,
|
||||||
|
&ohlc.$field,
|
||||||
|
|(i, c, ..)| (i, OHLCDollars::from(c)),
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
cents_to_dollars!(dateindex, starting_indexes.dateindex);
|
||||||
|
cents_to_dollars!(week, starting_indexes.weekindex);
|
||||||
|
cents_to_dollars!(month, starting_indexes.monthindex);
|
||||||
|
cents_to_dollars!(quarter, starting_indexes.quarterindex);
|
||||||
|
cents_to_dollars!(semester, starting_indexes.semesterindex);
|
||||||
|
cents_to_dollars!(year, starting_indexes.yearindex);
|
||||||
|
cents_to_dollars!(decade, starting_indexes.decadeindex);
|
||||||
|
cents_to_dollars!(height, starting_indexes.height);
|
||||||
|
cents_to_dollars!(difficultyepoch, starting_indexes.difficultyepoch);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn compute_prices(
|
||||||
|
&mut self,
|
||||||
|
indexer: &Indexer,
|
||||||
|
starting_indexes: &ComputeIndexes,
|
||||||
|
exit: &Exit,
|
||||||
|
) -> Result<()> {
|
||||||
|
let source_version =
|
||||||
|
indexer.vecs.outputs.value.version() + indexer.vecs.outputs.outputtype.version();
|
||||||
|
self.price_cents
|
||||||
|
.validate_computed_version_or_reset(source_version)?;
|
||||||
|
|
||||||
|
let total_heights = indexer.vecs.blocks.timestamp.len();
|
||||||
|
|
||||||
|
if total_heights <= START_HEIGHT {
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reorg: truncate to starting_indexes
|
||||||
|
let truncate_to = self
|
||||||
|
.price_cents
|
||||||
|
.len()
|
||||||
|
.min(starting_indexes.height.to_usize());
|
||||||
|
self.price_cents.truncate_if_needed_at(truncate_to)?;
|
||||||
|
|
||||||
|
if self.price_cents.len() < START_HEIGHT {
|
||||||
|
for line in brk_oracle::PRICES.lines().skip(self.price_cents.len()) {
|
||||||
|
if self.price_cents.len() >= START_HEIGHT {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let dollars: f64 = line.parse().unwrap_or(0.0);
|
||||||
|
let cents = (dollars * 100.0).round() as u64;
|
||||||
|
self.price_cents.push(CentsUnsigned::new(cents));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.price_cents.len() >= total_heights {
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
|
let config = Config::default();
|
||||||
|
let committed = self.price_cents.len();
|
||||||
|
let prev_cents = self.price_cents
|
||||||
|
.iter()?
|
||||||
|
.get(Height::from(committed - 1))
|
||||||
|
.unwrap();
|
||||||
|
let seed_bin = cents_to_bin(prev_cents.inner() as f64);
|
||||||
|
let warmup = config.window_size.min(committed - START_HEIGHT);
|
||||||
|
let mut oracle = Oracle::from_checkpoint(seed_bin, config, |o| {
|
||||||
|
Self::feed_blocks(o, indexer, (committed - warmup)..committed);
|
||||||
|
});
|
||||||
|
|
||||||
|
let num_new = total_heights - committed;
|
||||||
|
info!(
|
||||||
|
"Computing oracle prices: {} to {} ({warmup} warmup)",
|
||||||
|
committed, total_heights
|
||||||
|
);
|
||||||
|
|
||||||
|
let ref_bins = Self::feed_blocks(&mut oracle, indexer, committed..total_heights);
|
||||||
|
|
||||||
|
for (i, ref_bin) in ref_bins.into_iter().enumerate() {
|
||||||
|
self.price_cents.push(CentsUnsigned::new(bin_to_cents(ref_bin)));
|
||||||
|
|
||||||
|
let progress = ((i + 1) * 100 / num_new) as u8;
|
||||||
|
if i > 0 && progress > ((i * 100 / num_new) as u8) {
|
||||||
|
info!("Oracle price computation: {}%", progress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let _lock = exit.lock();
|
||||||
|
self.price_cents.write()?;
|
||||||
|
}
|
||||||
|
|
||||||
|
info!(
|
||||||
|
"Oracle prices complete: {} committed",
|
||||||
|
self.price_cents.len()
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns an Oracle seeded from the last committed price, with the last
|
||||||
|
/// window_size blocks already processed. Ready for additional blocks (e.g. mempool).
|
||||||
|
pub fn live_oracle(&self, indexer: &Indexer) -> Result<Oracle> {
|
||||||
|
let config = Config::default();
|
||||||
|
let height = indexer.vecs.blocks.timestamp.len();
|
||||||
|
let last_cents = self.price_cents
|
||||||
|
.iter()?
|
||||||
|
.get(Height::from(self.price_cents.len() - 1))
|
||||||
|
.unwrap();
|
||||||
|
let seed_bin = cents_to_bin(last_cents.inner() as f64);
|
||||||
|
let window_size = config.window_size;
|
||||||
|
let oracle = Oracle::from_checkpoint(seed_bin, config, |o| {
|
||||||
|
Self::feed_blocks(o, indexer, height.saturating_sub(window_size)..height);
|
||||||
|
});
|
||||||
|
|
||||||
|
Ok(oracle)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Feed a range of blocks from the indexer into an Oracle (skipping coinbase),
|
||||||
|
/// returning per-block ref_bin values.
|
||||||
|
fn feed_blocks(oracle: &mut Oracle, indexer: &Indexer, range: Range<usize>) -> Vec<f64> {
|
||||||
|
let total_txs = indexer.vecs.transactions.height.len();
|
||||||
|
let total_outputs = indexer.vecs.outputs.value.len();
|
||||||
|
|
||||||
|
let mut first_txindex_iter = indexer.vecs.transactions.first_txindex.into_iter();
|
||||||
|
let mut first_txoutindex_iter = indexer.vecs.transactions.first_txoutindex.into_iter();
|
||||||
|
let mut out_first_iter = indexer.vecs.outputs.first_txoutindex.into_iter();
|
||||||
|
let mut value_iter = indexer.vecs.outputs.value.into_iter();
|
||||||
|
let mut outputtype_iter = indexer.vecs.outputs.outputtype.into_iter();
|
||||||
|
|
||||||
|
let mut ref_bins = Vec::with_capacity(range.len());
|
||||||
|
|
||||||
|
for h in range {
|
||||||
|
let first_txindex: TxIndex = first_txindex_iter.get_at_unwrap(h);
|
||||||
|
let next_first_txindex = first_txindex_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxIndex::from(total_txs));
|
||||||
|
|
||||||
|
let out_start = if first_txindex.to_usize() + 1 < next_first_txindex.to_usize() {
|
||||||
|
first_txoutindex_iter
|
||||||
|
.get_at_unwrap(first_txindex.to_usize() + 1)
|
||||||
|
.to_usize()
|
||||||
|
} else {
|
||||||
|
out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize()
|
||||||
|
};
|
||||||
|
let out_end = out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize();
|
||||||
|
|
||||||
|
let mut hist = [0u32; NUM_BINS];
|
||||||
|
for i in out_start..out_end {
|
||||||
|
let sats: Sats = value_iter.get_at_unwrap(i);
|
||||||
|
let output_type: OutputType = outputtype_iter.get_at_unwrap(i);
|
||||||
|
if let Some(bin) = oracle.output_to_bin(sats, output_type) {
|
||||||
|
hist[bin] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ref_bins.push(oracle.process_histogram(&hist));
|
||||||
|
}
|
||||||
|
|
||||||
|
ref_bins
|
||||||
|
}
|
||||||
|
|
||||||
|
fn compute_daily_ohlc(
|
||||||
|
&mut self,
|
||||||
|
indexes: &indexes::Vecs,
|
||||||
|
starting_indexes: &ComputeIndexes,
|
||||||
|
exit: &Exit,
|
||||||
|
) -> Result<()> {
|
||||||
|
let last_dateindex = DateIndex::from(indexes.dateindex.date.len());
|
||||||
|
let start_dateindex = starting_indexes
|
||||||
|
.dateindex
|
||||||
|
.min(DateIndex::from(self.ohlc_cents.len()));
|
||||||
|
|
||||||
|
if start_dateindex >= last_dateindex {
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
|
let last_height = Height::from(self.price_cents.len());
|
||||||
|
let mut height_to_price_iter = self.price_cents.iter()?;
|
||||||
|
let mut dateindex_to_first_height_iter = indexes.dateindex.first_height.iter();
|
||||||
|
let mut height_count_iter = indexes.dateindex.height_count.iter();
|
||||||
|
|
||||||
|
for dateindex_usize in start_dateindex.to_usize()..last_dateindex.to_usize() {
|
||||||
|
let dateindex = DateIndex::from(dateindex_usize);
|
||||||
|
let first_height = dateindex_to_first_height_iter.get_unwrap(dateindex);
|
||||||
|
let count = height_count_iter.get_unwrap(dateindex);
|
||||||
|
|
||||||
|
if *count == 0 || first_height >= last_height {
|
||||||
|
self.ohlc_cents
|
||||||
|
.truncate_push(dateindex, self.previous_ohlc(dateindex)?)?;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let count = *count as usize;
|
||||||
|
let mut open = None;
|
||||||
|
let mut high = CentsUnsigned::ZERO;
|
||||||
|
let mut low = CentsUnsigned::MAX;
|
||||||
|
let mut close = CentsUnsigned::ZERO;
|
||||||
|
|
||||||
|
for i in 0..count {
|
||||||
|
let height = first_height + Height::from(i);
|
||||||
|
if height >= last_height {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(price) = height_to_price_iter.get(height) {
|
||||||
|
if price == CentsUnsigned::ZERO {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if open.is_none() {
|
||||||
|
open = Some(price);
|
||||||
|
}
|
||||||
|
if price > high {
|
||||||
|
high = price;
|
||||||
|
}
|
||||||
|
if price < low {
|
||||||
|
low = price;
|
||||||
|
}
|
||||||
|
close = price;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let ohlc = if let Some(open_price) = open {
|
||||||
|
OHLCCentsUnsigned {
|
||||||
|
open: Open::new(open_price),
|
||||||
|
high: High::new(high),
|
||||||
|
low: Low::new(low),
|
||||||
|
close: Close::new(close),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.previous_ohlc(dateindex)?
|
||||||
|
};
|
||||||
|
|
||||||
|
self.ohlc_cents.truncate_push(dateindex, ohlc)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let _lock = exit.lock();
|
||||||
|
self.ohlc_cents.write()?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn previous_ohlc(&self, dateindex: DateIndex) -> Result<OHLCCentsUnsigned> {
|
||||||
|
Ok(if dateindex > DateIndex::from(0usize) {
|
||||||
|
self.ohlc_cents
|
||||||
|
.iter()?
|
||||||
|
.get(dateindex.decremented().unwrap())
|
||||||
|
.unwrap_or_default()
|
||||||
|
} else {
|
||||||
|
OHLCCentsUnsigned::default()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
use brk_error::Result;
|
||||||
|
use brk_types::Version;
|
||||||
|
use vecdb::{BytesVec, Database, EagerVec, ImportableVec, PcoVec};
|
||||||
|
|
||||||
|
use super::Vecs;
|
||||||
|
use crate::indexes;
|
||||||
|
use crate::internal::{ComputedOHLC, LazyFromHeightAndDateOHLC};
|
||||||
|
|
||||||
|
impl Vecs {
|
||||||
|
pub fn forced_import(
|
||||||
|
db: &Database,
|
||||||
|
parent_version: Version,
|
||||||
|
indexes: &indexes::Vecs,
|
||||||
|
) -> Result<Self> {
|
||||||
|
let version = parent_version + Version::new(11);
|
||||||
|
|
||||||
|
let price_cents = PcoVec::forced_import(db, "oracle_price_cents", version)?;
|
||||||
|
let ohlc_cents = BytesVec::forced_import(db, "oracle_ohlc_cents", version)?;
|
||||||
|
|
||||||
|
let split = ComputedOHLC::forced_import(db, "oracle_price", version, indexes)?;
|
||||||
|
|
||||||
|
let ohlc = LazyFromHeightAndDateOHLC {
|
||||||
|
dateindex: EagerVec::forced_import(db, "oracle_price_ohlc", version)?,
|
||||||
|
week: EagerVec::forced_import(db, "oracle_price_ohlc", version)?,
|
||||||
|
month: EagerVec::forced_import(db, "oracle_price_ohlc", version)?,
|
||||||
|
quarter: EagerVec::forced_import(db, "oracle_price_ohlc", version)?,
|
||||||
|
semester: EagerVec::forced_import(db, "oracle_price_ohlc", version)?,
|
||||||
|
year: EagerVec::forced_import(db, "oracle_price_ohlc", version)?,
|
||||||
|
decade: EagerVec::forced_import(db, "oracle_price_ohlc", version)?,
|
||||||
|
height: EagerVec::forced_import(db, "oracle_price_ohlc", version)?,
|
||||||
|
difficultyepoch: EagerVec::forced_import(db, "oracle_price_ohlc", version)?,
|
||||||
|
};
|
||||||
|
|
||||||
|
let ohlc_dollars = LazyFromHeightAndDateOHLC {
|
||||||
|
dateindex: EagerVec::forced_import(db, "oracle_ohlc_dollars", version)?,
|
||||||
|
week: EagerVec::forced_import(db, "oracle_ohlc_dollars", version)?,
|
||||||
|
month: EagerVec::forced_import(db, "oracle_ohlc_dollars", version)?,
|
||||||
|
quarter: EagerVec::forced_import(db, "oracle_ohlc_dollars", version)?,
|
||||||
|
semester: EagerVec::forced_import(db, "oracle_ohlc_dollars", version)?,
|
||||||
|
year: EagerVec::forced_import(db, "oracle_ohlc_dollars", version)?,
|
||||||
|
decade: EagerVec::forced_import(db, "oracle_ohlc_dollars", version)?,
|
||||||
|
height: EagerVec::forced_import(db, "oracle_ohlc_dollars", version)?,
|
||||||
|
difficultyepoch: EagerVec::forced_import(db, "oracle_ohlc_dollars", version)?,
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(Self {
|
||||||
|
price_cents,
|
||||||
|
ohlc_cents,
|
||||||
|
split,
|
||||||
|
ohlc,
|
||||||
|
ohlc_dollars,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
use brk_traversable::Traversable;
|
||||||
|
use brk_types::{CentsUnsigned, DateIndex, Height, OHLCCentsUnsigned, OHLCDollars};
|
||||||
|
use vecdb::{BytesVec, PcoVec};
|
||||||
|
|
||||||
|
use crate::internal::{ComputedOHLC, LazyFromHeightAndDateOHLC};
|
||||||
|
|
||||||
|
#[derive(Clone, Traversable)]
|
||||||
|
pub struct Vecs {
|
||||||
|
pub price_cents: PcoVec<Height, CentsUnsigned>,
|
||||||
|
pub ohlc_cents: BytesVec<DateIndex, OHLCCentsUnsigned>,
|
||||||
|
pub split: ComputedOHLC<CentsUnsigned>,
|
||||||
|
pub ohlc: LazyFromHeightAndDateOHLC<OHLCCentsUnsigned>,
|
||||||
|
pub ohlc_dollars: LazyFromHeightAndDateOHLC<OHLCDollars>,
|
||||||
|
}
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
use brk_types::Version;
|
|
||||||
|
|
||||||
use super::Vecs;
|
|
||||||
use crate::{
|
|
||||||
distribution,
|
|
||||||
internal::{DollarsIdentity, LazyValueFromHeightLast, SatsIdentity},
|
|
||||||
};
|
|
||||||
|
|
||||||
impl Vecs {
|
|
||||||
pub fn import(version: Version, distribution: &distribution::Vecs) -> Self {
|
|
||||||
let supply_metrics = &distribution.utxo_cohorts.all.metrics.supply;
|
|
||||||
|
|
||||||
Self(LazyValueFromHeightLast::from_block_source::<
|
|
||||||
SatsIdentity,
|
|
||||||
DollarsIdentity,
|
|
||||||
>(
|
|
||||||
"circulating_supply", &supply_metrics.total, version)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
mod import;
|
|
||||||
mod vecs;
|
|
||||||
|
|
||||||
pub use vecs::Vecs;
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
use brk_traversable::Traversable;
|
|
||||||
use derive_more::{Deref, DerefMut};
|
|
||||||
|
|
||||||
use crate::internal::LazyValueFromHeightLast;
|
|
||||||
|
|
||||||
/// Circulating supply - lazy references to distribution's actual supply (KISS)
|
|
||||||
#[derive(Clone, Deref, DerefMut, Traversable)]
|
|
||||||
pub struct Vecs(pub LazyValueFromHeightLast);
|
|
||||||
@@ -2,7 +2,7 @@ use brk_error::Result;
|
|||||||
use vecdb::Exit;
|
use vecdb::Exit;
|
||||||
|
|
||||||
use super::Vecs;
|
use super::Vecs;
|
||||||
use crate::{blocks, distribution, indexes, scripts, transactions, ComputeIndexes};
|
use crate::{ComputeIndexes, blocks, distribution, indexes, scripts, transactions};
|
||||||
|
|
||||||
impl Vecs {
|
impl Vecs {
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
@@ -20,15 +20,60 @@ impl Vecs {
|
|||||||
self.burned
|
self.burned
|
||||||
.compute(indexes, scripts, blocks, starting_indexes, exit)?;
|
.compute(indexes, scripts, blocks, starting_indexes, exit)?;
|
||||||
|
|
||||||
// 2. Compute inflation rate
|
// 2. Compute inflation rate: daily_subsidy / circulating_supply * 365 * 100
|
||||||
self.inflation
|
let circulating_supply = &distribution.utxo_cohorts.all.metrics.supply.total.sats;
|
||||||
.compute(blocks, distribution, starting_indexes, exit)?;
|
self.inflation.compute_all(starting_indexes, exit, |v| {
|
||||||
|
v.compute_transform2(
|
||||||
|
starting_indexes.dateindex,
|
||||||
|
&blocks.rewards.subsidy.sats.dateindex.sum_cum.sum.0,
|
||||||
|
&circulating_supply.dateindex.0,
|
||||||
|
|(i, subsidy_1d_sum, supply, ..)| {
|
||||||
|
let inflation = if *supply > 0 {
|
||||||
|
365.0 * *subsidy_1d_sum as f64 / *supply as f64 * 100.0
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
};
|
||||||
|
(i, inflation.into())
|
||||||
|
},
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
Ok(())
|
||||||
|
})?;
|
||||||
|
|
||||||
// 3. Compute velocity
|
// 3. Compute velocity
|
||||||
self.velocity
|
self.velocity
|
||||||
.compute(transactions, distribution, starting_indexes, exit)?;
|
.compute(transactions, distribution, starting_indexes, exit)?;
|
||||||
|
|
||||||
// Note: circulating and market_cap are lazy - no compute needed
|
// 4. Compute cap growth rates
|
||||||
|
if let Some(market_cap) = self.market_cap.as_ref() {
|
||||||
|
let mcap_dateindex = &market_cap.dateindex.0;
|
||||||
|
self.market_cap_growth_rate
|
||||||
|
.compute_all(starting_indexes, exit, |vec| {
|
||||||
|
vec.compute_percentage_change(
|
||||||
|
starting_indexes.dateindex,
|
||||||
|
mcap_dateindex,
|
||||||
|
365,
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
Ok(())
|
||||||
|
})?;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(realized) = distribution.utxo_cohorts.all.metrics.realized.as_ref() {
|
||||||
|
let rcap_dateindex = &realized.realized_cap.dateindex.0;
|
||||||
|
self.realized_cap_growth_rate
|
||||||
|
.compute_all(starting_indexes, exit, |vec| {
|
||||||
|
vec.compute_percentage_change(
|
||||||
|
starting_indexes.dateindex,
|
||||||
|
rcap_dateindex,
|
||||||
|
365,
|
||||||
|
exit,
|
||||||
|
)?;
|
||||||
|
Ok(())
|
||||||
|
})?;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note: circulating, market_cap, cap_growth_rate_diff are lazy
|
||||||
|
|
||||||
let _lock = exit.lock();
|
let _lock = exit.lock();
|
||||||
self.db.compact()?;
|
self.db.compact()?;
|
||||||
|
|||||||
@@ -3,12 +3,19 @@ use std::path::Path;
|
|||||||
use brk_error::Result;
|
use brk_error::Result;
|
||||||
use brk_traversable::Traversable;
|
use brk_traversable::Traversable;
|
||||||
use brk_types::Version;
|
use brk_types::Version;
|
||||||
use vecdb::{Database, PAGE_SIZE};
|
use vecdb::{Database, IterableCloneableVec, LazyVecFrom2, PAGE_SIZE};
|
||||||
|
|
||||||
use super::Vecs;
|
use super::Vecs;
|
||||||
use crate::{distribution, indexes, price};
|
use crate::{
|
||||||
|
distribution, indexes,
|
||||||
|
internal::{
|
||||||
|
ComputedFromDateAverage, ComputedFromDateLast, DifferenceF32, DollarsIdentity,
|
||||||
|
LazyFromHeightLast, LazyValueFromHeightLast, SatsIdentity,
|
||||||
|
},
|
||||||
|
price,
|
||||||
|
};
|
||||||
|
|
||||||
const VERSION: Version = Version::ZERO;
|
const VERSION: Version = Version::ONE;
|
||||||
|
|
||||||
impl Vecs {
|
impl Vecs {
|
||||||
pub fn forced_import(
|
pub fn forced_import(
|
||||||
@@ -24,21 +31,55 @@ impl Vecs {
|
|||||||
let version = parent_version + VERSION;
|
let version = parent_version + VERSION;
|
||||||
let compute_dollars = price.is_some();
|
let compute_dollars = price.is_some();
|
||||||
|
|
||||||
|
let supply_metrics = &distribution.utxo_cohorts.all.metrics.supply;
|
||||||
|
|
||||||
// Circulating supply - lazy refs to distribution
|
// Circulating supply - lazy refs to distribution
|
||||||
let circulating = super::circulating::Vecs::import(version, distribution);
|
let circulating = LazyValueFromHeightLast::from_block_source::<SatsIdentity, DollarsIdentity>(
|
||||||
|
"circulating_supply",
|
||||||
|
&supply_metrics.total,
|
||||||
|
version,
|
||||||
|
);
|
||||||
|
|
||||||
// Burned/unspendable supply - computed from scripts
|
// Burned/unspendable supply - computed from scripts
|
||||||
let burned = super::burned::Vecs::forced_import(&db, version, indexes, price)?;
|
let burned = super::burned::Vecs::forced_import(&db, version, indexes, price)?;
|
||||||
|
|
||||||
// Inflation rate
|
// Inflation rate
|
||||||
let inflation = super::inflation::Vecs::forced_import(&db, version, indexes)?;
|
let inflation =
|
||||||
|
ComputedFromDateAverage::forced_import(&db, "inflation_rate", version, indexes)?;
|
||||||
|
|
||||||
// Velocity
|
// Velocity
|
||||||
let velocity =
|
let velocity =
|
||||||
super::velocity::Vecs::forced_import(&db, version, indexes, compute_dollars)?;
|
super::velocity::Vecs::forced_import(&db, version, indexes, compute_dollars)?;
|
||||||
|
|
||||||
// Market cap - lazy refs to supply in USD
|
// Market cap - lazy identity from distribution supply in USD
|
||||||
let market_cap = super::market_cap::Vecs::import(version, distribution);
|
let market_cap = supply_metrics.total.dollars.as_ref().map(|d| {
|
||||||
|
LazyFromHeightLast::from_lazy_binary_computed::<DollarsIdentity, _, _>(
|
||||||
|
"market_cap",
|
||||||
|
version,
|
||||||
|
d.height.boxed_clone(),
|
||||||
|
d,
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
|
// Growth rates
|
||||||
|
let market_cap_growth_rate = ComputedFromDateLast::forced_import(
|
||||||
|
&db,
|
||||||
|
"market_cap_growth_rate",
|
||||||
|
version + Version::ONE,
|
||||||
|
indexes,
|
||||||
|
)?;
|
||||||
|
let realized_cap_growth_rate = ComputedFromDateLast::forced_import(
|
||||||
|
&db,
|
||||||
|
"realized_cap_growth_rate",
|
||||||
|
version + Version::ONE,
|
||||||
|
indexes,
|
||||||
|
)?;
|
||||||
|
let cap_growth_rate_diff = LazyVecFrom2::transformed::<DifferenceF32>(
|
||||||
|
"cap_growth_rate_diff",
|
||||||
|
version,
|
||||||
|
market_cap_growth_rate.dateindex.boxed_clone(),
|
||||||
|
realized_cap_growth_rate.dateindex.boxed_clone(),
|
||||||
|
);
|
||||||
|
|
||||||
let this = Self {
|
let this = Self {
|
||||||
db,
|
db,
|
||||||
@@ -47,6 +88,9 @@ impl Vecs {
|
|||||||
inflation,
|
inflation,
|
||||||
velocity,
|
velocity,
|
||||||
market_cap,
|
market_cap,
|
||||||
|
market_cap_growth_rate,
|
||||||
|
realized_cap_growth_rate,
|
||||||
|
cap_growth_rate_diff,
|
||||||
};
|
};
|
||||||
|
|
||||||
this.db.retain_regions(
|
this.db.retain_regions(
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
use brk_error::Result;
|
|
||||||
use vecdb::Exit;
|
|
||||||
|
|
||||||
use super::Vecs;
|
|
||||||
use crate::{ComputeIndexes, blocks, distribution};
|
|
||||||
|
|
||||||
impl Vecs {
|
|
||||||
pub fn compute(
|
|
||||||
&mut self,
|
|
||||||
blocks: &blocks::Vecs,
|
|
||||||
distribution: &distribution::Vecs,
|
|
||||||
starting_indexes: &ComputeIndexes,
|
|
||||||
exit: &Exit,
|
|
||||||
) -> Result<()> {
|
|
||||||
// inflation = daily_subsidy / circulating_supply * 365 * 100
|
|
||||||
let circulating_supply = &distribution.utxo_cohorts.all.metrics.supply.total.sats;
|
|
||||||
|
|
||||||
self.compute_all(starting_indexes, exit, |v| {
|
|
||||||
v.compute_transform2(
|
|
||||||
starting_indexes.dateindex,
|
|
||||||
&blocks.rewards.subsidy.sats.dateindex.sum_cum.sum.0,
|
|
||||||
&circulating_supply.dateindex.0,
|
|
||||||
|(i, subsidy_1d_sum, supply, ..)| {
|
|
||||||
let inflation = if *supply > 0 {
|
|
||||||
365.0 * *subsidy_1d_sum as f64 / *supply as f64 * 100.0
|
|
||||||
} else {
|
|
||||||
0.0
|
|
||||||
};
|
|
||||||
(i, inflation.into())
|
|
||||||
},
|
|
||||||
exit,
|
|
||||||
)?;
|
|
||||||
Ok(())
|
|
||||||
})?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
use brk_error::Result;
|
|
||||||
use brk_types::Version;
|
|
||||||
use vecdb::Database;
|
|
||||||
|
|
||||||
use super::Vecs;
|
|
||||||
use crate::{indexes, internal::ComputedFromDateAverage};
|
|
||||||
|
|
||||||
impl Vecs {
|
|
||||||
pub fn forced_import(db: &Database, version: Version, indexes: &indexes::Vecs) -> Result<Self> {
|
|
||||||
Ok(Self(ComputedFromDateAverage::forced_import(
|
|
||||||
db,
|
|
||||||
"inflation_rate",
|
|
||||||
version,
|
|
||||||
indexes,
|
|
||||||
)?))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
use brk_traversable::Traversable;
|
|
||||||
use brk_types::StoredF32;
|
|
||||||
use derive_more::{Deref, DerefMut};
|
|
||||||
|
|
||||||
use crate::internal::ComputedFromDateAverage;
|
|
||||||
|
|
||||||
/// Inflation rate metrics
|
|
||||||
#[derive(Clone, Deref, DerefMut, Traversable)]
|
|
||||||
#[traversable(transparent)]
|
|
||||||
pub struct Vecs(pub ComputedFromDateAverage<StoredF32>);
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
use brk_types::Version;
|
|
||||||
use vecdb::IterableCloneableVec;
|
|
||||||
|
|
||||||
use super::Vecs;
|
|
||||||
use crate::{
|
|
||||||
distribution,
|
|
||||||
internal::{DollarsIdentity, LazyFromHeightLast},
|
|
||||||
};
|
|
||||||
|
|
||||||
impl Vecs {
|
|
||||||
pub fn import(version: Version, distribution: &distribution::Vecs) -> Option<Self> {
|
|
||||||
let supply_metrics = &distribution.utxo_cohorts.all.metrics.supply;
|
|
||||||
|
|
||||||
supply_metrics.total.dollars.as_ref().map(|d| {
|
|
||||||
Self(LazyFromHeightLast::from_lazy_binary_computed::<DollarsIdentity, _, _>(
|
|
||||||
"market_cap",
|
|
||||||
version,
|
|
||||||
d.height.boxed_clone(),
|
|
||||||
d,
|
|
||||||
))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
mod import;
|
|
||||||
mod vecs;
|
|
||||||
|
|
||||||
pub use vecs::Vecs;
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
use brk_traversable::Traversable;
|
|
||||||
use brk_types::Dollars;
|
|
||||||
use derive_more::{Deref, DerefMut};
|
|
||||||
|
|
||||||
use crate::internal::LazyFromHeightLast;
|
|
||||||
|
|
||||||
#[derive(Clone, Deref, DerefMut, Traversable)]
|
|
||||||
pub struct Vecs(pub LazyFromHeightLast<Dollars>);
|
|
||||||
@@ -1,7 +1,4 @@
|
|||||||
pub mod burned;
|
pub mod burned;
|
||||||
pub mod circulating;
|
|
||||||
pub mod inflation;
|
|
||||||
pub mod market_cap;
|
|
||||||
pub mod velocity;
|
pub mod velocity;
|
||||||
|
|
||||||
mod compute;
|
mod compute;
|
||||||
|
|||||||
@@ -1,24 +1,24 @@
|
|||||||
use brk_traversable::Traversable;
|
use brk_traversable::Traversable;
|
||||||
use vecdb::Database;
|
use brk_types::{DateIndex, Dollars, StoredF32};
|
||||||
|
use vecdb::{Database, LazyVecFrom2};
|
||||||
|
|
||||||
use super::{burned, circulating, inflation, market_cap, velocity};
|
use super::{burned, velocity};
|
||||||
|
use crate::internal::{
|
||||||
|
ComputedFromDateAverage, ComputedFromDateLast, LazyFromHeightLast, LazyValueFromHeightLast,
|
||||||
|
};
|
||||||
|
|
||||||
/// Supply metrics module
|
|
||||||
///
|
|
||||||
/// This module owns all supply-related metrics:
|
|
||||||
/// - circulating: Lazy references to distribution's actual circulating supply
|
|
||||||
/// - burned: Cumulative opreturn and unspendable supply
|
|
||||||
/// - inflation: Inflation rate derived from supply
|
|
||||||
/// - velocity: BTC and USD velocity metrics
|
|
||||||
/// - market_cap: Lazy references to supply in USD (circulating * price)
|
|
||||||
#[derive(Clone, Traversable)]
|
#[derive(Clone, Traversable)]
|
||||||
pub struct Vecs {
|
pub struct Vecs {
|
||||||
#[traversable(skip)]
|
#[traversable(skip)]
|
||||||
pub(crate) db: Database,
|
pub(crate) db: Database,
|
||||||
|
|
||||||
pub circulating: circulating::Vecs,
|
pub circulating: LazyValueFromHeightLast,
|
||||||
pub burned: burned::Vecs,
|
pub burned: burned::Vecs,
|
||||||
pub inflation: inflation::Vecs,
|
pub inflation: ComputedFromDateAverage<StoredF32>,
|
||||||
pub velocity: velocity::Vecs,
|
pub velocity: velocity::Vecs,
|
||||||
pub market_cap: Option<market_cap::Vecs>,
|
pub market_cap: Option<LazyFromHeightLast<Dollars>>,
|
||||||
|
pub market_cap_growth_rate: ComputedFromDateLast<StoredF32>,
|
||||||
|
pub realized_cap_growth_rate: ComputedFromDateLast<StoredF32>,
|
||||||
|
pub cap_growth_rate_diff:
|
||||||
|
LazyVecFrom2<DateIndex, StoredF32, DateIndex, StoredF32, DateIndex, StoredF32>,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
use std::hash::{DefaultHasher, Hash, Hasher};
|
||||||
|
|
||||||
use brk_types::RecommendedFees;
|
use brk_types::RecommendedFees;
|
||||||
|
|
||||||
use super::{fees, stats::{self, BlockStats}};
|
use super::{fees, stats::{self, BlockStats}};
|
||||||
@@ -36,4 +38,14 @@ impl Snapshot {
|
|||||||
fees,
|
fees,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Hash of the first projected block (the one about to be mined).
|
||||||
|
pub fn next_block_hash(&self) -> u64 {
|
||||||
|
let Some(block) = self.blocks.first() else {
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
let mut hasher = DefaultHasher::new();
|
||||||
|
block.hash(&mut hasher);
|
||||||
|
hasher.finish()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
use std::{
|
use std::{
|
||||||
|
hash::{DefaultHasher, Hash, Hasher},
|
||||||
sync::{
|
sync::{
|
||||||
Arc,
|
Arc,
|
||||||
atomic::{AtomicBool, AtomicU64, Ordering},
|
atomic::{AtomicBool, AtomicU64, Ordering},
|
||||||
@@ -9,7 +10,7 @@ use std::{
|
|||||||
|
|
||||||
use brk_error::Result;
|
use brk_error::Result;
|
||||||
use brk_rpc::Client;
|
use brk_rpc::Client;
|
||||||
use brk_types::{MempoolEntryInfo, MempoolInfo, TxWithHex, Txid, TxidPrefix};
|
use brk_types::{AddressBytes, MempoolEntryInfo, MempoolInfo, TxWithHex, Txid, TxidPrefix};
|
||||||
use derive_more::Deref;
|
use derive_more::Deref;
|
||||||
use parking_lot::{RwLock, RwLockReadGuard};
|
use parking_lot::{RwLock, RwLockReadGuard};
|
||||||
use rustc_hash::FxHashMap;
|
use rustc_hash::FxHashMap;
|
||||||
@@ -87,6 +88,20 @@ impl MempoolInner {
|
|||||||
self.snapshot.read().block_stats.clone()
|
self.snapshot.read().block_stats.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn next_block_hash(&self) -> u64 {
|
||||||
|
self.snapshot.read().next_block_hash()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn address_hash(&self, address: &AddressBytes) -> u64 {
|
||||||
|
let addresses = self.addresses.read();
|
||||||
|
let Some((stats, _)) = addresses.get(address) else {
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
let mut hasher = DefaultHasher::new();
|
||||||
|
stats.hash(&mut hasher);
|
||||||
|
hasher.finish()
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_txs(&self) -> RwLockReadGuard<'_, TxStore> {
|
pub fn get_txs(&self) -> RwLockReadGuard<'_, TxStore> {
|
||||||
self.txs.read()
|
self.txs.read()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
[package]
|
||||||
|
name = "brk_oracle"
|
||||||
|
description = "Pure on-chain BTC/USD price oracle algorithm"
|
||||||
|
version.workspace = true
|
||||||
|
edition.workspace = true
|
||||||
|
license.workspace = true
|
||||||
|
homepage.workspace = true
|
||||||
|
repository.workspace = true
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
brk_types = { workspace = true }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
brk_indexer = { workspace = true }
|
||||||
|
serde_json = { workspace = true }
|
||||||
|
vecdb = { workspace = true }
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
# brk_oracle
|
||||||
|
|
||||||
|
BTC/USD price oracle from on-chain Bitcoin data alone. No exchange feeds, no external APIs. Given an initial price estimate, tracks block by block from height 575,000 (May 2019) onward.
|
||||||
|
|
||||||
|
## The insight
|
||||||
|
|
||||||
|
When someone buys $100 of bitcoin at $50,000/BTC, the output is 200,000 sats. At $60,000 it would be 166,667 sats. Millions of round-dollar purchases happen every day at common amounts like $1, $5, $10, $20, $50, $100, $200, $500. Each amount creates its own spike in the histogram of transaction outputs, at a position that depends on the current price. As the price moves, all spikes shift together. The oracle finds those spikes and reads the price from their position.
|
||||||
|
|
||||||
|
## How it works
|
||||||
|
|
||||||
|
For each new block:
|
||||||
|
|
||||||
|
1. **Filter outputs.** Skip the coinbase transaction, then apply the configured filters: excluded script types, dust threshold, and round BTC exclusion.
|
||||||
|
|
||||||
|
2. **Map to bins.** Each output's satoshi value is placed into a log-scale histogram with 2,400 bins (200 per 10x): bin = round(log10(sats) * 200). Log-scale is key: if the price doubles, all spikes shift by 60 bins whether bitcoin goes from $1k to $2k or from $50k to $100k.
|
||||||
|
|
||||||
|
3. **Store in ring buffer.** The block histogram goes into a ring buffer of configurable depth. A single block is too sparse to get a clean signal, so the oracle accumulates several.
|
||||||
|
|
||||||
|
4. **Compute EMA.** The stored histograms are combined into a weighted average where recent blocks count more than older ones: weight = alpha * (1 - alpha)^age. Fully recomputed from the ring buffer each block.
|
||||||
|
|
||||||
|
5. **Score with stencil.** A 19-point stencil encodes where the spikes from round-dollar amounts ($1 through $10,000) should appear relative to each other. The oracle slides this stencil across the EMA histogram within a search window around the previous estimate. At each position, it reads the EMA value at each of the 19 expected spike locations, divides each by that offset's peak in the window, and sums them into a score. This gives every dollar amount, common or rare, an equal vote.
|
||||||
|
|
||||||
|
6. **Pick the best.** The position with the highest score is the new price estimate. Parabolic interpolation between neighbors refines it to fractional-bin precision.
|
||||||
|
|
||||||
|
The resulting bin converts to a dollar price: 10^(10 - bin/200). The search is bounded to prevent the stencil from matching at wrong price levels, so the oracle tracks incrementally block by block.
|
||||||
|
|
||||||
|
The oracle accepts three input formats: raw block data, an iterator of (sats, output type) pairs, or a pre-built histogram. Each call returns the current estimate as a fractional bin, convertible to cents or dollars. Daily candles can be built from the per-block prices.
|
||||||
|
|
||||||
|
The initial seed must be close to the real price at the starting height. The crate includes a PRICES constant with exchange prices for every height before 630,000 to derive a seed from.
|
||||||
|
|
||||||
|
## Config
|
||||||
|
|
||||||
|
All parameters are exposed via Config with sensible defaults:
|
||||||
|
|
||||||
|
- **alpha** (2/7): EMA decay rate, ~6-block span
|
||||||
|
- **window_size** (12): number of block histograms in the ring buffer
|
||||||
|
- **search_below / search_above** (9 / 11): how far to search around the previous estimate, in bins
|
||||||
|
- **min_sats** (1,000): minimum output value, filters dust
|
||||||
|
- **exclude_common_round_values** (true): exclude common round values (d × 10^n, d ∈ {1,2,3,5,6}) that create false stencil matches
|
||||||
|
- **excluded_output_types** (P2TR, P2WSH): script types dominated by protocol activity, not round-dollar purchases
|
||||||
|
|
||||||
|
## Inspiration
|
||||||
|
|
||||||
|
Inspired by [UTXOracle](https://utxo.live/oracle/) by [@SteveSimple](https://x.com/SteveSimple), which showed that the BTC/USD price can be derived from on-chain data alone. brk_oracle takes the same core insight (round-dollar detection via log-scale histogram) and redesigns the algorithm for per-block resolution and rolling operation.
|
||||||
|
|
||||||
|
### Differences from UTXOracle
|
||||||
|
|
||||||
|
| | brk_oracle | UTXOracle |
|
||||||
|
|---|---|---|
|
||||||
|
| Resolution | Per-block (~10 min) and daily candles | Per-day |
|
||||||
|
| Algorithm | Single-pass stencil scoring | Multi-step: rough stencil match, output-to-USD mapping, iterative median convergence |
|
||||||
|
| Operation | Rolling EMA over configurable window | Stateless, processes a full day from scratch |
|
||||||
|
| Stencil | 19 offsets with per-offset peak normalization | Gaussian smooth + empirically weighted spikes |
|
||||||
|
| Round BTC handling | Excludes outputs entirely | Smooths histogram bins by averaging neighbors |
|
||||||
|
| Output filtering | Script type, dust threshold, round BTC | 2-output txs only, input count limits, same-day exclusion, witness size limits |
|
||||||
|
| Validated from | Height 575,000 (May 2019) | December 2023 |
|
||||||
|
|
||||||
|
Both use 200 bins per 10x on a log scale.
|
||||||
|
|
||||||
|
## Accuracy
|
||||||
|
|
||||||
|
Tested over 361,245 blocks (heights 575,000 to 936,244) against exchange OHLC data. Error is measured per block as the distance from the oracle's estimate to the exchange high-low range at that height. If the oracle falls within the range, the error is zero.
|
||||||
|
|
||||||
|
### Per-block
|
||||||
|
|
||||||
|
| Metric | Value |
|
||||||
|
|--------|-------|
|
||||||
|
| Median error | 0.10% |
|
||||||
|
| 95th percentile | 0.55% |
|
||||||
|
| 99th percentile | 1.4% |
|
||||||
|
| 99.9th percentile | 4.4% |
|
||||||
|
| RMSE | 0.38% |
|
||||||
|
| Max error | 18.1% |
|
||||||
|
| Bias | +0.04 bins (essentially zero) |
|
||||||
|
| Blocks > 5% error | 237 (0.07%) |
|
||||||
|
| Blocks > 10% error | 22 (0.006%) |
|
||||||
|
| Blocks > 20% error | 0 |
|
||||||
|
|
||||||
|
### Daily candles
|
||||||
|
|
||||||
|
Oracle daily OHLC built from per-block prices vs exchange daily OHLC:
|
||||||
|
|
||||||
|
| | Median | RMSE | Max |
|
||||||
|
|-------|--------|------|-----|
|
||||||
|
| Open | 0.20% | 0.49% | 5.9% |
|
||||||
|
| High | 0.54% | 0.87% | 9.1% |
|
||||||
|
| Low | 0.48% | 1.31% | 19.7% |
|
||||||
|
| Close | 0.23% | 0.58% | 6.9% |
|
||||||
|
|
||||||
|
### By year
|
||||||
|
|
||||||
|
| Year | Blocks | Median | RMSE | Max | >5% | >10% | Price range |
|
||||||
|
|------|--------|--------|------|-----|-----|------|-------------|
|
||||||
|
| 2019 | 35,764 | 0.10% | 0.61% | 17.2% | 103 | 16 | $5,656–$13,868 |
|
||||||
|
| 2020 | 53,102 | 0.10% | 0.48% | 18.2% | 85 | 15 | $3,858–$29,322 |
|
||||||
|
| 2021 | 52,733 | 0.07% | 0.47% | 14.4% | 38 | 9 | $27,678–$69,000 |
|
||||||
|
| 2022 | 53,230 | 0.07% | 0.32% | 6.8% | 10 | 0 | $15,460–$48,240 |
|
||||||
|
| 2023 | 54,032 | 0.10% | 0.25% | 6.7% | 5 | 0 | $16,490–$44,700 |
|
||||||
|
| 2024 | 53,367 | 0.11% | 0.31% | 9.7% | 16 | 0 | $38,555–$108,298 |
|
||||||
|
| 2025 | 53,113 | 0.11% | 0.25% | 5.8% | 4 | 0 | $74,409–$126,198 |
|
||||||
|
| 2026 | 5,904 | 0.11% | 0.27% | 3.3% | 0 | 0 | $60,000–$97,900 |
|
||||||
|
|
||||||
|
Accuracy improves over time as on-chain transaction volume grows. Since 2022, zero blocks exceed 10% error. All worst-case errors occur during the fastest intraday price moves in 2019–2021.
|
||||||
@@ -0,0 +1,286 @@
|
|||||||
|
//! Compare specific digit filter configurations across multiple start heights.
|
||||||
|
//!
|
||||||
|
//! Run with: cargo run -p brk_oracle --example compare_digits --release
|
||||||
|
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::time::Instant;
|
||||||
|
|
||||||
|
use brk_indexer::Indexer;
|
||||||
|
use brk_oracle::{Config, NUM_BINS, Oracle, PRICES, START_HEIGHT, cents_to_bin, sats_to_bin};
|
||||||
|
use brk_types::{OutputType, Sats, TxIndex, TxOutIndex};
|
||||||
|
use vecdb::{AnyVec, VecIndex, VecIterator};
|
||||||
|
|
||||||
|
const BINS_5PCT: f64 = 4.24;
|
||||||
|
const BINS_10PCT: f64 = 8.28;
|
||||||
|
const BINS_20PCT: f64 = 15.84;
|
||||||
|
|
||||||
|
fn bins_to_pct(bins: f64) -> f64 {
|
||||||
|
(10.0_f64.powf(bins / 200.0) - 1.0) * 100.0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn seed_bin(start_height: usize) -> f64 {
|
||||||
|
let price: f64 = PRICES
|
||||||
|
.lines()
|
||||||
|
.nth(start_height - 1)
|
||||||
|
.expect("prices.txt too short")
|
||||||
|
.parse()
|
||||||
|
.expect("Failed to parse seed price");
|
||||||
|
cents_to_bin(price * 100.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn leading_digit(sats: u64) -> u8 {
|
||||||
|
let log = (sats as f64).log10();
|
||||||
|
let magnitude = 10.0_f64.powf(log.floor());
|
||||||
|
let d = (sats as f64 / magnitude).round() as u8;
|
||||||
|
if d >= 10 { 1 } else { d }
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_round(sats: u64) -> bool {
|
||||||
|
let log = (sats as f64).log10();
|
||||||
|
let magnitude = 10.0_f64.powf(log.floor());
|
||||||
|
let leading = (sats as f64 / magnitude).round();
|
||||||
|
let round_val = leading * magnitude;
|
||||||
|
(sats as f64 - round_val).abs() <= round_val * 0.001
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Stats {
|
||||||
|
total_sq_err: f64,
|
||||||
|
total_bias: f64,
|
||||||
|
max_err: f64,
|
||||||
|
total_blocks: u64,
|
||||||
|
gt_5pct: u64,
|
||||||
|
gt_10pct: u64,
|
||||||
|
gt_20pct: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Stats {
|
||||||
|
fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
total_sq_err: 0.0,
|
||||||
|
total_bias: 0.0,
|
||||||
|
max_err: 0.0,
|
||||||
|
total_blocks: 0,
|
||||||
|
gt_5pct: 0,
|
||||||
|
gt_10pct: 0,
|
||||||
|
gt_20pct: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn update(&mut self, err: f64) {
|
||||||
|
self.total_sq_err += err * err;
|
||||||
|
self.total_bias += err;
|
||||||
|
self.total_blocks += 1;
|
||||||
|
let abs_err = err.abs();
|
||||||
|
if abs_err > self.max_err {
|
||||||
|
self.max_err = abs_err;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_5PCT {
|
||||||
|
self.gt_5pct += 1;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_10PCT {
|
||||||
|
self.gt_10pct += 1;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_20PCT {
|
||||||
|
self.gt_20pct += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn rmse_pct(&self) -> f64 {
|
||||||
|
bins_to_pct((self.total_sq_err / self.total_blocks as f64).sqrt())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn max_pct(&self) -> f64 {
|
||||||
|
bins_to_pct(self.max_err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn bias(&self) -> f64 {
|
||||||
|
self.total_bias / self.total_blocks as f64
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let t0 = Instant::now();
|
||||||
|
|
||||||
|
let data_dir = std::env::var("BRK_DIR")
|
||||||
|
.map(PathBuf::from)
|
||||||
|
.unwrap_or_else(|_| {
|
||||||
|
let home = std::env::var("HOME").unwrap();
|
||||||
|
PathBuf::from(home).join(".brk")
|
||||||
|
});
|
||||||
|
|
||||||
|
let indexer = Indexer::forced_import(&data_dir).expect("Failed to load indexer");
|
||||||
|
let total_heights = indexer.vecs.blocks.timestamp.len();
|
||||||
|
|
||||||
|
let manifest_dir = env!("CARGO_MANIFEST_DIR");
|
||||||
|
|
||||||
|
let height_ohlc: Vec<[f64; 4]> = serde_json::from_str(
|
||||||
|
&std::fs::read_to_string(format!("{manifest_dir}/examples/height_price_ohlc.json"))
|
||||||
|
.expect("Failed to read height_price_ohlc.json"),
|
||||||
|
)
|
||||||
|
.expect("Failed to parse height OHLC");
|
||||||
|
|
||||||
|
let height_bands: Vec<(f64, f64)> = height_ohlc
|
||||||
|
.iter()
|
||||||
|
.map(|ohlc| {
|
||||||
|
let high = ohlc[1];
|
||||||
|
let low = ohlc[2];
|
||||||
|
if high > 0.0 && low > 0.0 {
|
||||||
|
(cents_to_bin(high * 100.0), cents_to_bin(low * 100.0))
|
||||||
|
} else {
|
||||||
|
(0.0, 0.0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
// Configs to compare.
|
||||||
|
// 987654321
|
||||||
|
let masks: &[(u16, &str)] = &[
|
||||||
|
(0b0_0111_0111, "{1,2,3,5,6,7}"),
|
||||||
|
(0b0_0011_0111, "{1,2,3,5,6}"),
|
||||||
|
(0b0_0001_1111, "{1,2,3,4,5}"),
|
||||||
|
(0b0_0001_0111, "{1,2,3,5}"),
|
||||||
|
];
|
||||||
|
|
||||||
|
let start_heights: &[usize] = &[575_000, 600_000, 630_000];
|
||||||
|
|
||||||
|
// (mask_idx, start_idx) -> (Oracle, Stats)
|
||||||
|
let n = masks.len() * start_heights.len();
|
||||||
|
let mut oracles: Vec<Option<Oracle>> = (0..n).map(|_| None).collect();
|
||||||
|
let mut stats: Vec<Stats> = (0..n).map(|_| Stats::new()).collect();
|
||||||
|
|
||||||
|
let idx = |m: usize, s: usize| -> usize { m * start_heights.len() + s };
|
||||||
|
|
||||||
|
let total_txs = indexer.vecs.transactions.height.len();
|
||||||
|
let total_outputs = indexer.vecs.outputs.value.len();
|
||||||
|
|
||||||
|
let mut first_txindex_iter = indexer.vecs.transactions.first_txindex.into_iter();
|
||||||
|
let mut first_txoutindex_iter = indexer.vecs.transactions.first_txoutindex.into_iter();
|
||||||
|
let mut out_first_iter = indexer.vecs.outputs.first_txoutindex.into_iter();
|
||||||
|
let mut value_iter = indexer.vecs.outputs.value.into_iter();
|
||||||
|
let mut outputtype_iter = indexer.vecs.outputs.outputtype.into_iter();
|
||||||
|
|
||||||
|
let ref_config = Config::default();
|
||||||
|
let earliest_start = *start_heights.iter().min().unwrap();
|
||||||
|
|
||||||
|
for h in START_HEIGHT..total_heights {
|
||||||
|
let first_txindex: TxIndex = first_txindex_iter.get_at_unwrap(h);
|
||||||
|
let next_first_txindex = first_txindex_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxIndex::from(total_txs));
|
||||||
|
|
||||||
|
let out_start = if first_txindex.to_usize() + 1 < next_first_txindex.to_usize() {
|
||||||
|
first_txoutindex_iter
|
||||||
|
.get_at_unwrap(first_txindex.to_usize() + 1)
|
||||||
|
.to_usize()
|
||||||
|
} else {
|
||||||
|
out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize()
|
||||||
|
};
|
||||||
|
let out_end = out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize();
|
||||||
|
|
||||||
|
if h < earliest_start {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build full histogram and per-digit histograms.
|
||||||
|
let mut full_hist = [0u32; NUM_BINS];
|
||||||
|
let mut digit_hist = [[0u32; NUM_BINS]; 9];
|
||||||
|
|
||||||
|
for i in out_start..out_end {
|
||||||
|
let sats: Sats = value_iter.get_at_unwrap(i);
|
||||||
|
let output_type: OutputType = outputtype_iter.get_at_unwrap(i);
|
||||||
|
if ref_config.excluded_output_types.contains(&output_type) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if *sats < ref_config.min_sats {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if let Some(bin) = sats_to_bin(sats) {
|
||||||
|
full_hist[bin] += 1;
|
||||||
|
if is_round(*sats) {
|
||||||
|
let d = leading_digit(*sats);
|
||||||
|
if (1..=9).contains(&d) {
|
||||||
|
digit_hist[(d - 1) as usize][bin] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Feed each (mask, start_height) combo.
|
||||||
|
for (mi, &(mask, _)) in masks.iter().enumerate() {
|
||||||
|
// Build filtered histogram for this mask.
|
||||||
|
let mut hist = full_hist;
|
||||||
|
(0..9usize).for_each(|d| {
|
||||||
|
if mask & (1 << d) != 0 {
|
||||||
|
for bin in 0..NUM_BINS {
|
||||||
|
hist[bin] -= digit_hist[d][bin];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
for (si, &sh) in start_heights.iter().enumerate() {
|
||||||
|
if h < sh {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let i = idx(mi, si);
|
||||||
|
if oracles[i].is_none() {
|
||||||
|
oracles[i] = Some(Oracle::new(
|
||||||
|
seed_bin(sh),
|
||||||
|
Config {
|
||||||
|
exclude_common_round_values: false,
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
let ref_bin = oracles[i].as_mut().unwrap().process_histogram(&hist);
|
||||||
|
|
||||||
|
if h < height_bands.len() {
|
||||||
|
let (high_bin, low_bin) = height_bands[h];
|
||||||
|
if high_bin > 0.0 && low_bin > 0.0 {
|
||||||
|
let err = if ref_bin < high_bin {
|
||||||
|
ref_bin - high_bin
|
||||||
|
} else if ref_bin > low_bin {
|
||||||
|
ref_bin - low_bin
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
};
|
||||||
|
stats[i].update(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print results grouped by start height.
|
||||||
|
for (si, &sh) in start_heights.iter().enumerate() {
|
||||||
|
println!();
|
||||||
|
println!("@ {}k:", sh / 1000);
|
||||||
|
println!(
|
||||||
|
" {:<16} {:>8} {:>10} {:>10} {:>6} {:>6} {:>6} {:>8}",
|
||||||
|
"Digits", "Blocks", "RMSE%", "Max%", ">5%", ">10%", ">20%", "Bias"
|
||||||
|
);
|
||||||
|
println!(" {}", "-".repeat(72));
|
||||||
|
for (mi, &(_, label)) in masks.iter().enumerate() {
|
||||||
|
let s = &stats[idx(mi, si)];
|
||||||
|
println!(
|
||||||
|
" {:<16} {:>8} {:>7.3}% {:>7.1}% {:>6} {:>6} {:>6} {:>+8.2}",
|
||||||
|
label,
|
||||||
|
s.total_blocks,
|
||||||
|
s.rmse_pct(),
|
||||||
|
s.max_pct(),
|
||||||
|
s.gt_5pct,
|
||||||
|
s.gt_10pct,
|
||||||
|
s.gt_20pct,
|
||||||
|
s.bias()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("\nDone in {:.1}s", t0.elapsed().as_secs_f64());
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,207 @@
|
|||||||
|
//! Verify oracle determinism: oracles started from different heights converge
|
||||||
|
//! to identical ref_bin values after the ring buffer fills.
|
||||||
|
//!
|
||||||
|
//! Creates a reference oracle at height 575k and test oracles every 1000 blocks
|
||||||
|
//! up to 630k. After window_size blocks, each test oracle should produce the
|
||||||
|
//! same ref_bin as the reference, proving the truncated EMA provides
|
||||||
|
//! start-point independence.
|
||||||
|
//!
|
||||||
|
//! Run with: cargo run -p brk_oracle --example determinism --release
|
||||||
|
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
use brk_indexer::Indexer;
|
||||||
|
use brk_oracle::{Config, NUM_BINS, Oracle, PRICES, START_HEIGHT, cents_to_bin, sats_to_bin};
|
||||||
|
use brk_types::{OutputType, Sats, TxIndex, TxOutIndex};
|
||||||
|
use vecdb::{AnyVec, VecIndex, VecIterator};
|
||||||
|
|
||||||
|
fn seed_bin(height: usize) -> f64 {
|
||||||
|
let price: f64 = PRICES
|
||||||
|
.lines()
|
||||||
|
.nth(height - 1)
|
||||||
|
.expect("prices.txt too short")
|
||||||
|
.parse()
|
||||||
|
.expect("Failed to parse seed price");
|
||||||
|
cents_to_bin(price * 100.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
struct TestRun {
|
||||||
|
start_height: usize,
|
||||||
|
oracle: Option<Oracle>,
|
||||||
|
converged_at: Option<usize>,
|
||||||
|
diverged_after: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let data_dir = std::env::var("BRK_DIR")
|
||||||
|
.map(PathBuf::from)
|
||||||
|
.unwrap_or_else(|_| {
|
||||||
|
let home = std::env::var("HOME").unwrap();
|
||||||
|
PathBuf::from(home).join(".brk")
|
||||||
|
});
|
||||||
|
|
||||||
|
let indexer = Indexer::forced_import(&data_dir).expect("Failed to load indexer");
|
||||||
|
let total_heights = indexer.vecs.blocks.timestamp.len();
|
||||||
|
|
||||||
|
let config = Config::default();
|
||||||
|
let window_size = config.window_size;
|
||||||
|
|
||||||
|
let total_txs = indexer.vecs.transactions.height.len();
|
||||||
|
let total_outputs = indexer.vecs.outputs.value.len();
|
||||||
|
|
||||||
|
let mut first_txindex_iter = indexer.vecs.transactions.first_txindex.into_iter();
|
||||||
|
let mut first_txoutindex_iter = indexer.vecs.transactions.first_txoutindex.into_iter();
|
||||||
|
let mut out_first_iter = indexer.vecs.outputs.first_txoutindex.into_iter();
|
||||||
|
let mut value_iter = indexer.vecs.outputs.value.into_iter();
|
||||||
|
let mut outputtype_iter = indexer.vecs.outputs.outputtype.into_iter();
|
||||||
|
|
||||||
|
let ref_config = Config::default();
|
||||||
|
|
||||||
|
// Reference oracle at 575k.
|
||||||
|
let ref_start = START_HEIGHT;
|
||||||
|
let mut ref_oracle = Oracle::new(seed_bin(ref_start), Config::default());
|
||||||
|
|
||||||
|
// Test oracles every 1000 blocks from 576k to 630k.
|
||||||
|
let mut runs: Vec<TestRun> = (576_000..=630_000)
|
||||||
|
.step_by(1000)
|
||||||
|
.map(|h| TestRun {
|
||||||
|
start_height: h,
|
||||||
|
oracle: None,
|
||||||
|
converged_at: None,
|
||||||
|
diverged_after: false,
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let last_start = runs.last().map(|r| r.start_height).unwrap_or(ref_start);
|
||||||
|
// Process enough blocks for all oracles to converge + verification margin.
|
||||||
|
let end_height = (last_start + window_size + 100).min(total_heights);
|
||||||
|
|
||||||
|
for h in START_HEIGHT..end_height {
|
||||||
|
let first_txindex: TxIndex = first_txindex_iter.get_at_unwrap(h);
|
||||||
|
let next_first_txindex = first_txindex_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxIndex::from(total_txs));
|
||||||
|
|
||||||
|
let out_start = if first_txindex.to_usize() + 1 < next_first_txindex.to_usize() {
|
||||||
|
first_txoutindex_iter
|
||||||
|
.get_at_unwrap(first_txindex.to_usize() + 1)
|
||||||
|
.to_usize()
|
||||||
|
} else {
|
||||||
|
out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize()
|
||||||
|
};
|
||||||
|
let out_end = out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize();
|
||||||
|
|
||||||
|
let mut hist = [0u32; NUM_BINS];
|
||||||
|
for i in out_start..out_end {
|
||||||
|
let sats: Sats = value_iter.get_at_unwrap(i);
|
||||||
|
let output_type: OutputType = outputtype_iter.get_at_unwrap(i);
|
||||||
|
if ref_config.excluded_output_types.contains(&output_type) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if *sats < ref_config.min_sats
|
||||||
|
|| (ref_config.exclude_common_round_values && sats.is_common_round_value())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if let Some(bin) = sats_to_bin(sats) {
|
||||||
|
hist[bin] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let ref_bin = ref_oracle.process_histogram(&hist);
|
||||||
|
|
||||||
|
for run in &mut runs {
|
||||||
|
if h < run.start_height {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if run.oracle.is_none() {
|
||||||
|
run.oracle = Some(Oracle::new(seed_bin(run.start_height), Config::default()));
|
||||||
|
}
|
||||||
|
let test_bin = run.oracle.as_mut().unwrap().process_histogram(&hist);
|
||||||
|
|
||||||
|
if run.converged_at.is_some() {
|
||||||
|
if test_bin != ref_bin {
|
||||||
|
run.diverged_after = true;
|
||||||
|
}
|
||||||
|
} else if test_bin == ref_bin {
|
||||||
|
run.converged_at = Some(h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print results.
|
||||||
|
println!();
|
||||||
|
println!(
|
||||||
|
"{:<12} {:>16} {:>8}",
|
||||||
|
"Start", "Converged at", "Blocks"
|
||||||
|
);
|
||||||
|
println!("{}", "-".repeat(40));
|
||||||
|
|
||||||
|
let mut max_blocks = 0usize;
|
||||||
|
let mut failed = Vec::new();
|
||||||
|
let mut diverged = Vec::new();
|
||||||
|
|
||||||
|
for run in &runs {
|
||||||
|
if let Some(converged) = run.converged_at {
|
||||||
|
let blocks = converged - run.start_height;
|
||||||
|
if blocks > max_blocks {
|
||||||
|
max_blocks = blocks;
|
||||||
|
}
|
||||||
|
println!(
|
||||||
|
"{:<12} {:>16} {:>8}",
|
||||||
|
run.start_height, converged, blocks
|
||||||
|
);
|
||||||
|
if run.diverged_after {
|
||||||
|
diverged.push(run.start_height);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
println!("{:<12} {:>16} {:>8}", run.start_height, "NEVER", "-");
|
||||||
|
failed.push(run.start_height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println!();
|
||||||
|
println!(
|
||||||
|
"{}/{} converged, max {} blocks to converge (window_size={})",
|
||||||
|
runs.len() - failed.len(),
|
||||||
|
runs.len(),
|
||||||
|
max_blocks,
|
||||||
|
window_size,
|
||||||
|
);
|
||||||
|
|
||||||
|
if !diverged.is_empty() {
|
||||||
|
println!("DIVERGED after convergence: {:?}", diverged);
|
||||||
|
}
|
||||||
|
if !failed.is_empty() {
|
||||||
|
println!("NEVER converged: {:?}", failed);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assertions.
|
||||||
|
assert!(
|
||||||
|
failed.is_empty(),
|
||||||
|
"{} oracles never converged: {:?}",
|
||||||
|
failed.len(),
|
||||||
|
failed
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
diverged.is_empty(),
|
||||||
|
"{} oracles diverged after convergence: {:?}",
|
||||||
|
diverged.len(),
|
||||||
|
diverged
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
max_blocks <= window_size * 2,
|
||||||
|
"Convergence took {} blocks, expected <= {} (2 * window_size)",
|
||||||
|
max_blocks,
|
||||||
|
window_size * 2
|
||||||
|
);
|
||||||
|
|
||||||
|
println!();
|
||||||
|
println!("All assertions passed!");
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,461 @@
|
|||||||
|
//! Generate detailed oracle accuracy report for README / documentation.
|
||||||
|
//!
|
||||||
|
//! Run with: cargo run -p brk_oracle --example report --release
|
||||||
|
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
use brk_indexer::Indexer;
|
||||||
|
use brk_oracle::{
|
||||||
|
Config, NUM_BINS, Oracle, PRICES, START_HEIGHT, bin_to_cents, cents_to_bin, sats_to_bin,
|
||||||
|
};
|
||||||
|
use brk_types::{OutputType, Sats, TxIndex, TxOutIndex};
|
||||||
|
use vecdb::{AnyVec, VecIndex, VecIterator};
|
||||||
|
|
||||||
|
/// DateIndex 1 = Jan 9, 2009 (block 1). For dates after genesis week:
|
||||||
|
/// dateindex = floor(timestamp / 86400) - 14252.
|
||||||
|
const GENESIS_DAY: u32 = 14252;
|
||||||
|
|
||||||
|
const BINS_5PCT: f64 = 4.24;
|
||||||
|
const BINS_10PCT: f64 = 8.28;
|
||||||
|
const BINS_20PCT: f64 = 15.84;
|
||||||
|
|
||||||
|
fn bins_to_pct(bins: f64) -> f64 {
|
||||||
|
(10.0_f64.powf(bins / 200.0) - 1.0) * 100.0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn timestamp_to_year(ts: u32) -> u16 {
|
||||||
|
let years_since_1970 = ts as f64 / 31557600.0;
|
||||||
|
(1970.0 + years_since_1970) as u16
|
||||||
|
}
|
||||||
|
|
||||||
|
struct YearStats {
|
||||||
|
year: u16,
|
||||||
|
total_sq_err: f64,
|
||||||
|
max_err: f64,
|
||||||
|
total_blocks: u64,
|
||||||
|
gt_5pct: u64,
|
||||||
|
gt_10pct: u64,
|
||||||
|
gt_20pct: u64,
|
||||||
|
min_price: f64,
|
||||||
|
max_price: f64,
|
||||||
|
errors: Vec<f64>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl YearStats {
|
||||||
|
fn new(year: u16) -> Self {
|
||||||
|
Self {
|
||||||
|
year,
|
||||||
|
total_sq_err: 0.0,
|
||||||
|
max_err: 0.0,
|
||||||
|
total_blocks: 0,
|
||||||
|
gt_5pct: 0,
|
||||||
|
gt_10pct: 0,
|
||||||
|
gt_20pct: 0,
|
||||||
|
min_price: f64::MAX,
|
||||||
|
max_price: 0.0,
|
||||||
|
errors: Vec::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn update(&mut self, err: f64, exchange_high: f64, exchange_low: f64) {
|
||||||
|
let abs_err = err.abs();
|
||||||
|
self.total_sq_err += err * err;
|
||||||
|
self.total_blocks += 1;
|
||||||
|
self.errors.push(bins_to_pct(abs_err));
|
||||||
|
if abs_err > self.max_err {
|
||||||
|
self.max_err = abs_err;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_5PCT {
|
||||||
|
self.gt_5pct += 1;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_10PCT {
|
||||||
|
self.gt_10pct += 1;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_20PCT {
|
||||||
|
self.gt_20pct += 1;
|
||||||
|
}
|
||||||
|
if exchange_high > self.max_price {
|
||||||
|
self.max_price = exchange_high;
|
||||||
|
}
|
||||||
|
if exchange_low > 0.0 && exchange_low < self.min_price {
|
||||||
|
self.min_price = exchange_low;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn rmse_pct(&self) -> f64 {
|
||||||
|
bins_to_pct((self.total_sq_err / self.total_blocks as f64).sqrt())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn max_pct(&self) -> f64 {
|
||||||
|
bins_to_pct(self.max_err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn median_pct(&mut self) -> f64 {
|
||||||
|
self.errors.sort_by(|a, b| a.partial_cmp(b).unwrap());
|
||||||
|
let n = self.errors.len();
|
||||||
|
if n == 0 { 0.0 } else { self.errors[n / 2] }
|
||||||
|
}
|
||||||
|
|
||||||
|
fn percentile(&self, p: f64) -> f64 {
|
||||||
|
let n = self.errors.len();
|
||||||
|
if n == 0 {
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
let idx = ((p / 100.0) * (n - 1) as f64).round() as usize;
|
||||||
|
self.errors[idx.min(n - 1)]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Oracle OHLC for a single day, built from per-block prices.
|
||||||
|
struct DayCandle {
|
||||||
|
dateindex: usize,
|
||||||
|
open: f64,
|
||||||
|
high: f64,
|
||||||
|
low: f64,
|
||||||
|
close: f64,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct BlockError {
|
||||||
|
height: usize,
|
||||||
|
oracle_price: f64,
|
||||||
|
exchange_low: f64,
|
||||||
|
exchange_high: f64,
|
||||||
|
error_pct: f64,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let data_dir = std::env::var("BRK_DIR")
|
||||||
|
.map(PathBuf::from)
|
||||||
|
.unwrap_or_else(|_| {
|
||||||
|
let home = std::env::var("HOME").unwrap();
|
||||||
|
PathBuf::from(home).join(".brk")
|
||||||
|
});
|
||||||
|
|
||||||
|
let indexer = Indexer::forced_import(&data_dir).expect("Failed to load indexer");
|
||||||
|
let total_heights = indexer.vecs.blocks.timestamp.len();
|
||||||
|
let manifest_dir = env!("CARGO_MANIFEST_DIR");
|
||||||
|
|
||||||
|
let height_ohlc: Vec<[f64; 4]> = serde_json::from_str(
|
||||||
|
&std::fs::read_to_string(format!("{manifest_dir}/examples/height_price_ohlc.json"))
|
||||||
|
.expect("Failed to read height_price_ohlc.json"),
|
||||||
|
)
|
||||||
|
.expect("Failed to parse height OHLC");
|
||||||
|
|
||||||
|
let daily_ohlc: Vec<[f64; 4]> = serde_json::from_str(
|
||||||
|
&std::fs::read_to_string(format!("{manifest_dir}/examples/date_price_ohlc.json"))
|
||||||
|
.expect("Failed to read date_price_ohlc.json"),
|
||||||
|
)
|
||||||
|
.expect("Failed to parse daily OHLC");
|
||||||
|
|
||||||
|
let height_bands: Vec<(f64, f64)> = height_ohlc
|
||||||
|
.iter()
|
||||||
|
.map(|ohlc| {
|
||||||
|
let high = ohlc[1];
|
||||||
|
let low = ohlc[2];
|
||||||
|
if high > 0.0 && low > 0.0 {
|
||||||
|
(cents_to_bin(high * 100.0), cents_to_bin(low * 100.0))
|
||||||
|
} else {
|
||||||
|
(0.0, 0.0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
// Read block timestamps for year + dateindex mapping.
|
||||||
|
let mut timestamp_iter = indexer.vecs.blocks.timestamp.into_iter();
|
||||||
|
let mut height_years: Vec<u16> = Vec::with_capacity(total_heights);
|
||||||
|
let mut height_dateindexes: Vec<usize> = Vec::with_capacity(total_heights);
|
||||||
|
for h in 0..total_heights {
|
||||||
|
let ts: brk_types::Timestamp = timestamp_iter.get_at_unwrap(h);
|
||||||
|
let ts_u32 = *ts as u32;
|
||||||
|
height_years.push(timestamp_to_year(ts_u32));
|
||||||
|
height_dateindexes.push((ts_u32 / 86400).saturating_sub(GENESIS_DAY) as usize);
|
||||||
|
}
|
||||||
|
|
||||||
|
let start_price: f64 = PRICES
|
||||||
|
.lines()
|
||||||
|
.nth(START_HEIGHT - 1)
|
||||||
|
.expect("prices.txt too short")
|
||||||
|
.parse()
|
||||||
|
.expect("Failed to parse seed price");
|
||||||
|
|
||||||
|
let config = Config::default();
|
||||||
|
let mut oracle = Oracle::new(cents_to_bin(start_price * 100.0), config);
|
||||||
|
|
||||||
|
let total_txs = indexer.vecs.transactions.height.len();
|
||||||
|
let total_outputs = indexer.vecs.outputs.value.len();
|
||||||
|
|
||||||
|
let mut first_txindex_iter = indexer.vecs.transactions.first_txindex.into_iter();
|
||||||
|
let mut first_txoutindex_iter = indexer.vecs.transactions.first_txoutindex.into_iter();
|
||||||
|
let mut out_first_iter = indexer.vecs.outputs.first_txoutindex.into_iter();
|
||||||
|
let mut value_iter = indexer.vecs.outputs.value.into_iter();
|
||||||
|
let mut outputtype_iter = indexer.vecs.outputs.outputtype.into_iter();
|
||||||
|
|
||||||
|
let ref_config = Config::default();
|
||||||
|
|
||||||
|
let mut year_stats: Vec<YearStats> = Vec::new();
|
||||||
|
let mut overall = YearStats::new(0);
|
||||||
|
let mut worst_blocks: Vec<BlockError> = Vec::new();
|
||||||
|
let mut total_bias = 0.0f64;
|
||||||
|
|
||||||
|
// Track oracle daily candles.
|
||||||
|
let mut oracle_candles: Vec<DayCandle> = Vec::new();
|
||||||
|
let mut current_di: Option<usize> = None;
|
||||||
|
|
||||||
|
for h in START_HEIGHT..total_heights {
|
||||||
|
let first_txindex: TxIndex = first_txindex_iter.get_at_unwrap(h);
|
||||||
|
let next_first_txindex = first_txindex_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxIndex::from(total_txs));
|
||||||
|
|
||||||
|
let out_start = if first_txindex.to_usize() + 1 < next_first_txindex.to_usize() {
|
||||||
|
first_txoutindex_iter
|
||||||
|
.get_at_unwrap(first_txindex.to_usize() + 1)
|
||||||
|
.to_usize()
|
||||||
|
} else {
|
||||||
|
out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize()
|
||||||
|
};
|
||||||
|
let out_end = out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize();
|
||||||
|
|
||||||
|
let mut hist = [0u32; NUM_BINS];
|
||||||
|
for i in out_start..out_end {
|
||||||
|
let sats: Sats = value_iter.get_at_unwrap(i);
|
||||||
|
let output_type: OutputType = outputtype_iter.get_at_unwrap(i);
|
||||||
|
if ref_config.excluded_output_types.contains(&output_type) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if *sats < ref_config.min_sats
|
||||||
|
|| (ref_config.exclude_common_round_values && sats.is_common_round_value())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if let Some(bin) = sats_to_bin(sats) {
|
||||||
|
hist[bin] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let ref_bin = oracle.process_histogram(&hist);
|
||||||
|
let oracle_price = bin_to_cents(ref_bin) as f64 / 100.0;
|
||||||
|
|
||||||
|
// Build oracle daily candle.
|
||||||
|
let di = height_dateindexes[h];
|
||||||
|
if current_di != Some(di) {
|
||||||
|
current_di = Some(di);
|
||||||
|
oracle_candles.push(DayCandle {
|
||||||
|
dateindex: di,
|
||||||
|
open: oracle_price,
|
||||||
|
high: oracle_price,
|
||||||
|
low: oracle_price,
|
||||||
|
close: oracle_price,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
let candle = oracle_candles.last_mut().unwrap();
|
||||||
|
if oracle_price > candle.high {
|
||||||
|
candle.high = oracle_price;
|
||||||
|
}
|
||||||
|
if oracle_price < candle.low {
|
||||||
|
candle.low = oracle_price;
|
||||||
|
}
|
||||||
|
candle.close = oracle_price;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Per-block error stats.
|
||||||
|
if h < height_bands.len() {
|
||||||
|
let (high_bin, low_bin) = height_bands[h];
|
||||||
|
if high_bin > 0.0 && low_bin > 0.0 {
|
||||||
|
let err = if ref_bin < high_bin {
|
||||||
|
ref_bin - high_bin
|
||||||
|
} else if ref_bin > low_bin {
|
||||||
|
ref_bin - low_bin
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
};
|
||||||
|
|
||||||
|
let exchange_high = height_ohlc[h][1];
|
||||||
|
let exchange_low = height_ohlc[h][2];
|
||||||
|
|
||||||
|
overall.update(err, exchange_high, exchange_low);
|
||||||
|
total_bias += err;
|
||||||
|
|
||||||
|
let year = height_years[h];
|
||||||
|
if year_stats.is_empty() || year_stats.last().unwrap().year != year {
|
||||||
|
year_stats.push(YearStats::new(year));
|
||||||
|
}
|
||||||
|
year_stats
|
||||||
|
.last_mut()
|
||||||
|
.unwrap()
|
||||||
|
.update(err, exchange_high, exchange_low);
|
||||||
|
|
||||||
|
if err.abs() > BINS_5PCT {
|
||||||
|
worst_blocks.push(BlockError {
|
||||||
|
height: h,
|
||||||
|
oracle_price,
|
||||||
|
exchange_low,
|
||||||
|
exchange_high,
|
||||||
|
error_pct: if err < 0.0 {
|
||||||
|
-bins_to_pct(err.abs())
|
||||||
|
} else {
|
||||||
|
bins_to_pct(err.abs())
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
worst_blocks.sort_by(|a, b| b.error_pct.abs().partial_cmp(&a.error_pct.abs()).unwrap());
|
||||||
|
overall.errors.sort_by(|a, b| a.partial_cmp(b).unwrap());
|
||||||
|
|
||||||
|
// Daily candle comparison: oracle OHLC vs exchange OHLC.
|
||||||
|
let mut daily_open_errors: Vec<f64> = Vec::new();
|
||||||
|
let mut daily_high_errors: Vec<f64> = Vec::new();
|
||||||
|
let mut daily_low_errors: Vec<f64> = Vec::new();
|
||||||
|
let mut daily_close_errors: Vec<f64> = Vec::new();
|
||||||
|
let mut daily_days = 0u64;
|
||||||
|
|
||||||
|
for candle in &oracle_candles {
|
||||||
|
let di = candle.dateindex;
|
||||||
|
if di >= daily_ohlc.len() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let ex = &daily_ohlc[di];
|
||||||
|
if ex[0] <= 0.0 || ex[3] <= 0.0 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let ex_open = ex[0];
|
||||||
|
let ex_high = ex[1];
|
||||||
|
let ex_low = ex[2];
|
||||||
|
let ex_close = ex[3];
|
||||||
|
|
||||||
|
// Error as percentage: (oracle - exchange) / exchange * 100
|
||||||
|
daily_open_errors.push((candle.open - ex_open) / ex_open * 100.0);
|
||||||
|
daily_high_errors.push((candle.high - ex_high) / ex_high * 100.0);
|
||||||
|
daily_low_errors.push((candle.low - ex_low) / ex_low * 100.0);
|
||||||
|
daily_close_errors.push((candle.close - ex_close) / ex_close * 100.0);
|
||||||
|
daily_days += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn daily_stats(errors: &mut [f64]) -> (f64, f64, f64) {
|
||||||
|
let n = errors.len() as f64;
|
||||||
|
let rmse = (errors.iter().map(|e| e * e).sum::<f64>() / n).sqrt();
|
||||||
|
errors.sort_by(|a, b| a.abs().partial_cmp(&b.abs()).unwrap());
|
||||||
|
let max = errors.last().map(|e| e.abs()).unwrap_or(0.0);
|
||||||
|
let median = errors[errors.len() / 2].abs();
|
||||||
|
(median, rmse, max)
|
||||||
|
}
|
||||||
|
|
||||||
|
let (open_med, open_rmse, open_max) = daily_stats(&mut daily_open_errors);
|
||||||
|
let (high_med, high_rmse, high_max) = daily_stats(&mut daily_high_errors);
|
||||||
|
let (low_med, low_rmse, low_max) = daily_stats(&mut daily_low_errors);
|
||||||
|
let (close_med, close_rmse, close_max) = daily_stats(&mut daily_close_errors);
|
||||||
|
|
||||||
|
// Print report.
|
||||||
|
println!();
|
||||||
|
println!(" brk_oracle accuracy report");
|
||||||
|
println!(" ══════════════════════════");
|
||||||
|
println!();
|
||||||
|
println!(" Config: w12, alpha=2/7, search -9/+11, noisy/dust/round-btc filtered");
|
||||||
|
println!(
|
||||||
|
" Test range: height {} .. {} ({} blocks)",
|
||||||
|
START_HEIGHT,
|
||||||
|
total_heights - 1,
|
||||||
|
overall.total_blocks
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
" Price range: ${:.0} .. ${:.0}",
|
||||||
|
overall.min_price, overall.max_price
|
||||||
|
);
|
||||||
|
|
||||||
|
println!();
|
||||||
|
println!(" Per-block accuracy (vs per-height exchange OHLC):");
|
||||||
|
println!(" Median: {:.3}%", overall.percentile(50.0));
|
||||||
|
println!(" 95th pct: {:.3}%", overall.percentile(95.0));
|
||||||
|
println!(" 99th pct: {:.3}%", overall.percentile(99.0));
|
||||||
|
println!(" 99.9th pct: {:.3}%", overall.percentile(99.9));
|
||||||
|
println!(" RMSE: {:.3}%", overall.rmse_pct());
|
||||||
|
println!(" Max: {:.1}%", overall.max_pct());
|
||||||
|
println!(
|
||||||
|
" Bias: {:+.2} bins",
|
||||||
|
total_bias / overall.total_blocks as f64
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
" > 5%: {} blocks ({:.3}%)",
|
||||||
|
overall.gt_5pct,
|
||||||
|
overall.gt_5pct as f64 / overall.total_blocks as f64 * 100.0
|
||||||
|
);
|
||||||
|
println!(" > 10%: {} blocks", overall.gt_10pct);
|
||||||
|
println!(" > 20%: {} blocks", overall.gt_20pct);
|
||||||
|
|
||||||
|
println!();
|
||||||
|
println!(
|
||||||
|
" Daily candle accuracy ({} days, vs exchange daily OHLC):",
|
||||||
|
daily_days
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
" {:>8} {:>10} {:>10} {:>10}",
|
||||||
|
"", "Median", "RMSE", "Max"
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
" {:>8} {:>9.2}% {:>9.2}% {:>9.1}%",
|
||||||
|
"Open", open_med, open_rmse, open_max
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
" {:>8} {:>9.2}% {:>9.2}% {:>9.1}%",
|
||||||
|
"High", high_med, high_rmse, high_max
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
" {:>8} {:>9.2}% {:>9.2}% {:>9.1}%",
|
||||||
|
"Low", low_med, low_rmse, low_max
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
" {:>8} {:>9.2}% {:>9.2}% {:>9.1}%",
|
||||||
|
"Close", close_med, close_rmse, close_max
|
||||||
|
);
|
||||||
|
|
||||||
|
println!();
|
||||||
|
println!(" By year:");
|
||||||
|
println!(
|
||||||
|
" {:<6} {:>7} {:>9} {:>9} {:>9} {:>6} {:>5} {:>5} {:>14}",
|
||||||
|
"Year", "Blocks", "Median", "RMSE", "Max", ">5%", ">10%", ">20%", "Price range"
|
||||||
|
);
|
||||||
|
println!(" {}", "-".repeat(80));
|
||||||
|
for ys in &mut year_stats {
|
||||||
|
let median = ys.median_pct();
|
||||||
|
println!(
|
||||||
|
" {:<6} {:>7} {:>8.3}% {:>8.3}% {:>8.1}% {:>6} {:>5} {:>5} ${:.0}..${:.0}",
|
||||||
|
ys.year,
|
||||||
|
ys.total_blocks,
|
||||||
|
median,
|
||||||
|
ys.rmse_pct(),
|
||||||
|
ys.max_pct(),
|
||||||
|
ys.gt_5pct,
|
||||||
|
ys.gt_10pct,
|
||||||
|
ys.gt_20pct,
|
||||||
|
ys.min_price,
|
||||||
|
ys.max_price,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if !worst_blocks.is_empty() {
|
||||||
|
println!();
|
||||||
|
println!(" Worst blocks:");
|
||||||
|
let show = worst_blocks.len().min(10);
|
||||||
|
for wb in &worst_blocks[..show] {
|
||||||
|
let dir = if wb.error_pct < 0.0 { "above" } else { "below" };
|
||||||
|
println!(
|
||||||
|
" height {:>7}: oracle ${:>9.0}, exchange ${:.0}..${:.0} ({:+.1}%, {})",
|
||||||
|
wb.height, wb.oracle_price, wb.exchange_low, wb.exchange_high, wb.error_pct, dir
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if worst_blocks.len() > show {
|
||||||
|
println!(" ... and {} more", worst_blocks.len() - show);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println!();
|
||||||
|
}
|
||||||
@@ -0,0 +1,407 @@
|
|||||||
|
//! Sweep round-value digit filter to find optimal configuration.
|
||||||
|
//!
|
||||||
|
//! Tests all 512 subsets of leading digits {1,...,9} to find which
|
||||||
|
//! digits to filter out for best oracle accuracy.
|
||||||
|
//!
|
||||||
|
//! Phase 1: single pass over indexer, precompute per-block histograms.
|
||||||
|
//! Phase 2: run 512 configs in parallel across CPU cores.
|
||||||
|
//!
|
||||||
|
//! Run with: cargo run -p brk_oracle --example sweep_digits --release
|
||||||
|
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::time::Instant;
|
||||||
|
|
||||||
|
use brk_indexer::Indexer;
|
||||||
|
use brk_oracle::{Config, NUM_BINS, Oracle, PRICES, START_HEIGHT, cents_to_bin, sats_to_bin};
|
||||||
|
use brk_types::{OutputType, Sats, TxIndex, TxOutIndex};
|
||||||
|
use vecdb::{AnyVec, VecIndex, VecIterator};
|
||||||
|
|
||||||
|
const BINS_5PCT: f64 = 4.24;
|
||||||
|
const BINS_10PCT: f64 = 8.28;
|
||||||
|
const BINS_20PCT: f64 = 15.84;
|
||||||
|
|
||||||
|
fn bins_to_pct(bins: f64) -> f64 {
|
||||||
|
(10.0_f64.powf(bins / 200.0) - 1.0) * 100.0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn seed_bin(start_height: usize) -> f64 {
|
||||||
|
let price: f64 = PRICES
|
||||||
|
.lines()
|
||||||
|
.nth(start_height - 1)
|
||||||
|
.expect("prices.txt too short")
|
||||||
|
.parse()
|
||||||
|
.expect("Failed to parse seed price");
|
||||||
|
cents_to_bin(price * 100.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn leading_digit(sats: u64) -> u8 {
|
||||||
|
let log = (sats as f64).log10();
|
||||||
|
let magnitude = 10.0_f64.powf(log.floor());
|
||||||
|
let d = (sats as f64 / magnitude).round() as u8;
|
||||||
|
if d >= 10 { 1 } else { d }
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_round(sats: u64) -> bool {
|
||||||
|
let log = (sats as f64).log10();
|
||||||
|
let magnitude = 10.0_f64.powf(log.floor());
|
||||||
|
let leading = (sats as f64 / magnitude).round();
|
||||||
|
let round_val = leading * magnitude;
|
||||||
|
(sats as f64 - round_val).abs() <= round_val * 0.001
|
||||||
|
}
|
||||||
|
|
||||||
|
fn mask_label(mask: u16) -> String {
|
||||||
|
let digits: String = (1..=9u8)
|
||||||
|
.filter(|&d| mask & (1 << (d - 1)) != 0)
|
||||||
|
.map(|d| char::from_digit(d as u32, 10).unwrap())
|
||||||
|
.collect();
|
||||||
|
if digits.is_empty() {
|
||||||
|
"none".to_string()
|
||||||
|
} else {
|
||||||
|
digits
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Stats {
|
||||||
|
total_sq_err: f64,
|
||||||
|
total_bias: f64,
|
||||||
|
max_err: f64,
|
||||||
|
total_blocks: u64,
|
||||||
|
gt_5pct: u64,
|
||||||
|
gt_10pct: u64,
|
||||||
|
gt_20pct: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Stats {
|
||||||
|
fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
total_sq_err: 0.0,
|
||||||
|
total_bias: 0.0,
|
||||||
|
max_err: 0.0,
|
||||||
|
total_blocks: 0,
|
||||||
|
gt_5pct: 0,
|
||||||
|
gt_10pct: 0,
|
||||||
|
gt_20pct: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn update(&mut self, err: f64) {
|
||||||
|
self.total_sq_err += err * err;
|
||||||
|
self.total_bias += err;
|
||||||
|
self.total_blocks += 1;
|
||||||
|
let abs_err = err.abs();
|
||||||
|
if abs_err > self.max_err {
|
||||||
|
self.max_err = abs_err;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_5PCT {
|
||||||
|
self.gt_5pct += 1;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_10PCT {
|
||||||
|
self.gt_10pct += 1;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_20PCT {
|
||||||
|
self.gt_20pct += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn rmse_pct(&self) -> f64 {
|
||||||
|
bins_to_pct((self.total_sq_err / self.total_blocks as f64).sqrt())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn max_pct(&self) -> f64 {
|
||||||
|
bins_to_pct(self.max_err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn bias(&self) -> f64 {
|
||||||
|
self.total_bias / self.total_blocks as f64
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct BlockData {
|
||||||
|
full_hist: Box<[u32; NUM_BINS]>,
|
||||||
|
/// (bin_index, leading_digit) for outputs that are round values.
|
||||||
|
round_outputs: Vec<(u16, u8)>,
|
||||||
|
high_bin: f64,
|
||||||
|
low_bin: f64,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let t0 = Instant::now();
|
||||||
|
|
||||||
|
let data_dir = std::env::var("BRK_DIR")
|
||||||
|
.map(PathBuf::from)
|
||||||
|
.unwrap_or_else(|_| {
|
||||||
|
let home = std::env::var("HOME").unwrap();
|
||||||
|
PathBuf::from(home).join(".brk")
|
||||||
|
});
|
||||||
|
|
||||||
|
let indexer = Indexer::forced_import(&data_dir).expect("Failed to load indexer");
|
||||||
|
let total_heights = indexer.vecs.blocks.timestamp.len();
|
||||||
|
|
||||||
|
let manifest_dir = env!("CARGO_MANIFEST_DIR");
|
||||||
|
|
||||||
|
let height_ohlc: Vec<[f64; 4]> = serde_json::from_str(
|
||||||
|
&std::fs::read_to_string(format!("{manifest_dir}/examples/height_price_ohlc.json"))
|
||||||
|
.expect("Failed to read height_price_ohlc.json"),
|
||||||
|
)
|
||||||
|
.expect("Failed to parse height OHLC");
|
||||||
|
|
||||||
|
let height_bands: Vec<(f64, f64)> = height_ohlc
|
||||||
|
.iter()
|
||||||
|
.map(|ohlc| {
|
||||||
|
let high = ohlc[1];
|
||||||
|
let low = ohlc[2];
|
||||||
|
if high > 0.0 && low > 0.0 {
|
||||||
|
(cents_to_bin(high * 100.0), cents_to_bin(low * 100.0))
|
||||||
|
} else {
|
||||||
|
(0.0, 0.0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let sweep_start: usize = 575_000;
|
||||||
|
|
||||||
|
// Phase 1: precompute per-block data in a single pass over the indexer.
|
||||||
|
eprintln!("Phase 1: precomputing block data...");
|
||||||
|
|
||||||
|
let total_txs = indexer.vecs.transactions.height.len();
|
||||||
|
let total_outputs = indexer.vecs.outputs.value.len();
|
||||||
|
|
||||||
|
let mut first_txindex_iter = indexer.vecs.transactions.first_txindex.into_iter();
|
||||||
|
let mut first_txoutindex_iter = indexer.vecs.transactions.first_txoutindex.into_iter();
|
||||||
|
let mut out_first_iter = indexer.vecs.outputs.first_txoutindex.into_iter();
|
||||||
|
let mut value_iter = indexer.vecs.outputs.value.into_iter();
|
||||||
|
let mut outputtype_iter = indexer.vecs.outputs.outputtype.into_iter();
|
||||||
|
|
||||||
|
let ref_config = Config::default();
|
||||||
|
let total_blocks = total_heights - sweep_start;
|
||||||
|
let mut blocks: Vec<BlockData> = Vec::with_capacity(total_blocks);
|
||||||
|
|
||||||
|
for h in START_HEIGHT..total_heights {
|
||||||
|
let first_txindex: TxIndex = first_txindex_iter.get_at_unwrap(h);
|
||||||
|
let next_first_txindex = first_txindex_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxIndex::from(total_txs));
|
||||||
|
|
||||||
|
let out_start = if first_txindex.to_usize() + 1 < next_first_txindex.to_usize() {
|
||||||
|
first_txoutindex_iter
|
||||||
|
.get_at_unwrap(first_txindex.to_usize() + 1)
|
||||||
|
.to_usize()
|
||||||
|
} else {
|
||||||
|
out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize()
|
||||||
|
};
|
||||||
|
let out_end = out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize();
|
||||||
|
|
||||||
|
if h < sweep_start {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut full_hist = Box::new([0u32; NUM_BINS]);
|
||||||
|
let mut round_outputs = Vec::new();
|
||||||
|
|
||||||
|
for i in out_start..out_end {
|
||||||
|
let sats: Sats = value_iter.get_at_unwrap(i);
|
||||||
|
let output_type: OutputType = outputtype_iter.get_at_unwrap(i);
|
||||||
|
if ref_config.excluded_output_types.contains(&output_type) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if *sats < ref_config.min_sats {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if let Some(bin) = sats_to_bin(sats) {
|
||||||
|
full_hist[bin] += 1;
|
||||||
|
if is_round(*sats) {
|
||||||
|
let d = leading_digit(*sats);
|
||||||
|
if (1..=9).contains(&d) {
|
||||||
|
round_outputs.push((bin as u16, d));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let (high_bin, low_bin) = if h < height_bands.len() {
|
||||||
|
height_bands[h]
|
||||||
|
} else {
|
||||||
|
(0.0, 0.0)
|
||||||
|
};
|
||||||
|
|
||||||
|
blocks.push(BlockData {
|
||||||
|
full_hist,
|
||||||
|
round_outputs,
|
||||||
|
high_bin,
|
||||||
|
low_bin,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (h - sweep_start).is_multiple_of(50_000) {
|
||||||
|
eprint!(
|
||||||
|
"\r {}/{} ({:.0}%)",
|
||||||
|
h - sweep_start,
|
||||||
|
total_blocks,
|
||||||
|
(h - sweep_start) as f64 / total_blocks as f64 * 100.0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mem_hists = blocks.len() * std::mem::size_of::<[u32; NUM_BINS]>();
|
||||||
|
let mem_rounds: usize = blocks.iter().map(|b| b.round_outputs.len() * 3).sum();
|
||||||
|
eprintln!(
|
||||||
|
"\r {} blocks precomputed ({:.1} GB hists + {:.0} MB rounds) in {:.1}s",
|
||||||
|
blocks.len(),
|
||||||
|
mem_hists as f64 / 1e9,
|
||||||
|
mem_rounds as f64 / 1e6,
|
||||||
|
t0.elapsed().as_secs_f64()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Phase 2: sweep digit masks in parallel.
|
||||||
|
// Always filter digit 1 (powers of 10), sweep digits 2-9.
|
||||||
|
let base_mask: u16 = 1 << 0; // digit 1 always on
|
||||||
|
let num_masks: usize = 256; // 2^8 subsets of {2,...,9}
|
||||||
|
let num_threads = std::thread::available_parallelism()
|
||||||
|
.map(|n| n.get())
|
||||||
|
.unwrap_or(8);
|
||||||
|
eprintln!(
|
||||||
|
"Phase 2: sweeping {} masks across {} threads...",
|
||||||
|
num_masks, num_threads
|
||||||
|
);
|
||||||
|
|
||||||
|
let t1 = Instant::now();
|
||||||
|
let blocks = &blocks; // shared reference for threads
|
||||||
|
|
||||||
|
let all_results: Vec<(u16, Stats)> = std::thread::scope(|s| {
|
||||||
|
let masks_per_thread = num_masks.div_ceil(num_threads);
|
||||||
|
|
||||||
|
let handles: Vec<_> = (0..num_threads)
|
||||||
|
.map(|t| {
|
||||||
|
s.spawn(move || {
|
||||||
|
let mask_start = t * masks_per_thread;
|
||||||
|
let mask_end = ((t + 1) * masks_per_thread).min(num_masks);
|
||||||
|
let mut results = Vec::with_capacity(mask_end - mask_start);
|
||||||
|
|
||||||
|
for idx in mask_start..mask_end {
|
||||||
|
// Shift idx bits into positions 1-8 (digits 2-9) and add base_mask (digit 1).
|
||||||
|
let mask = base_mask | ((idx as u16) << 1);
|
||||||
|
let mut oracle = Oracle::new(
|
||||||
|
seed_bin(sweep_start),
|
||||||
|
Config {
|
||||||
|
exclude_common_round_values: false,
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
);
|
||||||
|
let mut stats = Stats::new();
|
||||||
|
|
||||||
|
for bd in blocks.iter() {
|
||||||
|
let mut hist = *bd.full_hist;
|
||||||
|
for &(bin, digit) in &bd.round_outputs {
|
||||||
|
if mask & (1 << (digit - 1)) != 0 {
|
||||||
|
hist[bin as usize] -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let ref_bin = oracle.process_histogram(&hist);
|
||||||
|
|
||||||
|
if bd.high_bin > 0.0 && bd.low_bin > 0.0 {
|
||||||
|
let err = if ref_bin < bd.high_bin {
|
||||||
|
ref_bin - bd.high_bin
|
||||||
|
} else if ref_bin > bd.low_bin {
|
||||||
|
ref_bin - bd.low_bin
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
};
|
||||||
|
stats.update(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
results.push((mask, stats));
|
||||||
|
}
|
||||||
|
|
||||||
|
results
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
handles
|
||||||
|
.into_iter()
|
||||||
|
.flat_map(|h| h.join().unwrap())
|
||||||
|
.collect()
|
||||||
|
});
|
||||||
|
|
||||||
|
eprintln!(" Done in {:.1}s.", t1.elapsed().as_secs_f64());
|
||||||
|
|
||||||
|
// Sort by RMSE.
|
||||||
|
let mut results: Vec<&(u16, Stats)> = all_results.iter().collect();
|
||||||
|
results.sort_by(|a, b| a.1.rmse_pct().partial_cmp(&b.1.rmse_pct()).unwrap());
|
||||||
|
|
||||||
|
// Print top 20.
|
||||||
|
println!();
|
||||||
|
println!("Top 20 (by RMSE):");
|
||||||
|
println!(
|
||||||
|
"{:>4} {:>12} {:>10} {:>10} {:>6} {:>6} {:>6} {:>8}",
|
||||||
|
"#", "Digits", "RMSE%", "Max%", ">5%", ">10%", ">20%", "Bias"
|
||||||
|
);
|
||||||
|
println!("{}", "-".repeat(70));
|
||||||
|
for (rank, (mask, s)) in results.iter().take(20).enumerate() {
|
||||||
|
println!(
|
||||||
|
"{:>4} {:>12} {:>8.3}% {:>8.1}% {:>6} {:>6} {:>6} {:>+8.2}",
|
||||||
|
rank + 1,
|
||||||
|
mask_label(*mask),
|
||||||
|
s.rmse_pct(),
|
||||||
|
s.max_pct(),
|
||||||
|
s.gt_5pct,
|
||||||
|
s.gt_10pct,
|
||||||
|
s.gt_20pct,
|
||||||
|
s.bias()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print bottom 5.
|
||||||
|
println!();
|
||||||
|
println!("Bottom 5 (worst):");
|
||||||
|
println!(
|
||||||
|
"{:>4} {:>12} {:>10} {:>10} {:>6} {:>6} {:>6} {:>8}",
|
||||||
|
"#", "Digits", "RMSE%", "Max%", ">5%", ">10%", ">20%", "Bias"
|
||||||
|
);
|
||||||
|
println!("{}", "-".repeat(70));
|
||||||
|
for (mask, s) in results.iter().rev().take(5) {
|
||||||
|
println!(
|
||||||
|
"{:>4} {:>12} {:>8.3}% {:>8.1}% {:>6} {:>6} {:>6} {:>+8.2}",
|
||||||
|
"",
|
||||||
|
mask_label(*mask),
|
||||||
|
s.rmse_pct(),
|
||||||
|
s.max_pct(),
|
||||||
|
s.gt_5pct,
|
||||||
|
s.gt_10pct,
|
||||||
|
s.gt_20pct,
|
||||||
|
s.bias()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print current config {1,2,3,5} for reference.
|
||||||
|
let current_mask: u16 = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 4); // digits 1,2,3,5
|
||||||
|
let current_stats = all_results
|
||||||
|
.iter()
|
||||||
|
.find(|(m, _)| *m == current_mask)
|
||||||
|
.map(|(_, s)| s)
|
||||||
|
.unwrap();
|
||||||
|
let current_rank = results
|
||||||
|
.iter()
|
||||||
|
.position(|(m, _)| *m == current_mask)
|
||||||
|
.unwrap();
|
||||||
|
println!();
|
||||||
|
println!(
|
||||||
|
"Current {{1,2,3,5}} = rank {}/{}: RMSE {:.3}%, Max {:.1}%, >5%: {}, >10%: {}, >20%: {}",
|
||||||
|
current_rank + 1,
|
||||||
|
num_masks,
|
||||||
|
current_stats.rmse_pct(),
|
||||||
|
current_stats.max_pct(),
|
||||||
|
current_stats.gt_5pct,
|
||||||
|
current_stats.gt_10pct,
|
||||||
|
current_stats.gt_20pct,
|
||||||
|
);
|
||||||
|
|
||||||
|
println!("\nTotal time: {:.1}s", t0.elapsed().as_secs_f64());
|
||||||
|
}
|
||||||
@@ -0,0 +1,447 @@
|
|||||||
|
//! Sweep round-value tolerance to find optimal rounding threshold.
|
||||||
|
//!
|
||||||
|
//! Tests different tolerance percentages (0%, 0.01%, 0.1%, 1%, etc.) for
|
||||||
|
//! detecting round BTC amounts, combined with several digit filter masks.
|
||||||
|
//!
|
||||||
|
//! Phase 1: single pass over indexer, store per-output relative errors.
|
||||||
|
//! Phase 2: sweep tolerance × mask combos across CPU cores.
|
||||||
|
//!
|
||||||
|
//! Run with: cargo run -p brk_oracle --example sweep_tolerance --release
|
||||||
|
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::time::Instant;
|
||||||
|
|
||||||
|
use brk_indexer::Indexer;
|
||||||
|
use brk_oracle::{Config, NUM_BINS, Oracle, PRICES, START_HEIGHT, cents_to_bin, sats_to_bin};
|
||||||
|
use brk_types::{OutputType, Sats, TxIndex, TxOutIndex};
|
||||||
|
use vecdb::{AnyVec, VecIndex, VecIterator};
|
||||||
|
|
||||||
|
const BINS_5PCT: f64 = 4.24;
|
||||||
|
const BINS_10PCT: f64 = 8.28;
|
||||||
|
const BINS_20PCT: f64 = 15.84;
|
||||||
|
|
||||||
|
fn bins_to_pct(bins: f64) -> f64 {
|
||||||
|
(10.0_f64.powf(bins / 200.0) - 1.0) * 100.0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn seed_bin(start_height: usize) -> f64 {
|
||||||
|
let price: f64 = PRICES
|
||||||
|
.lines()
|
||||||
|
.nth(start_height - 1)
|
||||||
|
.expect("prices.txt too short")
|
||||||
|
.parse()
|
||||||
|
.expect("Failed to parse seed price");
|
||||||
|
cents_to_bin(price * 100.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn leading_digit(sats: u64) -> u8 {
|
||||||
|
let log = (sats as f64).log10();
|
||||||
|
let magnitude = 10.0_f64.powf(log.floor());
|
||||||
|
let d = (sats as f64 / magnitude).round() as u8;
|
||||||
|
if d >= 10 { 1 } else { d }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns the relative error of `sats` from its nearest round value (d × 10^n).
|
||||||
|
/// e.g. 10_050 → leading=1, round_val=10_000, rel_err = 50/10000 = 0.005
|
||||||
|
fn relative_roundness(sats: u64) -> f64 {
|
||||||
|
let log = (sats as f64).log10();
|
||||||
|
let magnitude = 10.0_f64.powf(log.floor());
|
||||||
|
let leading = (sats as f64 / magnitude).round();
|
||||||
|
let round_val = leading * magnitude;
|
||||||
|
(sats as f64 - round_val).abs() / round_val
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Stats {
|
||||||
|
total_sq_err: f64,
|
||||||
|
total_bias: f64,
|
||||||
|
max_err: f64,
|
||||||
|
total_blocks: u64,
|
||||||
|
gt_5pct: u64,
|
||||||
|
gt_10pct: u64,
|
||||||
|
gt_20pct: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Stats {
|
||||||
|
fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
total_sq_err: 0.0,
|
||||||
|
total_bias: 0.0,
|
||||||
|
max_err: 0.0,
|
||||||
|
total_blocks: 0,
|
||||||
|
gt_5pct: 0,
|
||||||
|
gt_10pct: 0,
|
||||||
|
gt_20pct: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn update(&mut self, err: f64) {
|
||||||
|
self.total_sq_err += err * err;
|
||||||
|
self.total_bias += err;
|
||||||
|
self.total_blocks += 1;
|
||||||
|
let abs_err = err.abs();
|
||||||
|
if abs_err > self.max_err {
|
||||||
|
self.max_err = abs_err;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_5PCT {
|
||||||
|
self.gt_5pct += 1;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_10PCT {
|
||||||
|
self.gt_10pct += 1;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_20PCT {
|
||||||
|
self.gt_20pct += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn rmse_pct(&self) -> f64 {
|
||||||
|
bins_to_pct((self.total_sq_err / self.total_blocks as f64).sqrt())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn max_pct(&self) -> f64 {
|
||||||
|
bins_to_pct(self.max_err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn bias(&self) -> f64 {
|
||||||
|
self.total_bias / self.total_blocks as f64
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Per-output data: bin index, leading digit, relative error from round value.
|
||||||
|
struct RoundOutput {
|
||||||
|
bin: u16,
|
||||||
|
digit: u8,
|
||||||
|
rel_err: f32, // f32 is plenty of precision, saves memory
|
||||||
|
}
|
||||||
|
|
||||||
|
struct BlockData {
|
||||||
|
full_hist: Box<[u32; NUM_BINS]>,
|
||||||
|
round_outputs: Vec<RoundOutput>,
|
||||||
|
high_bin: f64,
|
||||||
|
low_bin: f64,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let t0 = Instant::now();
|
||||||
|
|
||||||
|
let data_dir = std::env::var("BRK_DIR")
|
||||||
|
.map(PathBuf::from)
|
||||||
|
.unwrap_or_else(|_| {
|
||||||
|
let home = std::env::var("HOME").unwrap();
|
||||||
|
PathBuf::from(home).join(".brk")
|
||||||
|
});
|
||||||
|
|
||||||
|
let indexer = Indexer::forced_import(&data_dir).expect("Failed to load indexer");
|
||||||
|
let total_heights = indexer.vecs.blocks.timestamp.len();
|
||||||
|
|
||||||
|
let manifest_dir = env!("CARGO_MANIFEST_DIR");
|
||||||
|
|
||||||
|
let height_ohlc: Vec<[f64; 4]> = serde_json::from_str(
|
||||||
|
&std::fs::read_to_string(format!("{manifest_dir}/examples/height_price_ohlc.json"))
|
||||||
|
.expect("Failed to read height_price_ohlc.json"),
|
||||||
|
)
|
||||||
|
.expect("Failed to parse height OHLC");
|
||||||
|
|
||||||
|
let height_bands: Vec<(f64, f64)> = height_ohlc
|
||||||
|
.iter()
|
||||||
|
.map(|ohlc| {
|
||||||
|
let high = ohlc[1];
|
||||||
|
let low = ohlc[2];
|
||||||
|
if high > 0.0 && low > 0.0 {
|
||||||
|
(cents_to_bin(high * 100.0), cents_to_bin(low * 100.0))
|
||||||
|
} else {
|
||||||
|
(0.0, 0.0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let sweep_start: usize = 575_000;
|
||||||
|
|
||||||
|
// Phase 1: precompute per-block data.
|
||||||
|
// Store all potentially-round outputs with their relative error so we can
|
||||||
|
// filter at different tolerance thresholds in Phase 2.
|
||||||
|
eprintln!("Phase 1: precomputing block data...");
|
||||||
|
|
||||||
|
let total_txs = indexer.vecs.transactions.height.len();
|
||||||
|
let total_outputs = indexer.vecs.outputs.value.len();
|
||||||
|
|
||||||
|
let mut first_txindex_iter = indexer.vecs.transactions.first_txindex.into_iter();
|
||||||
|
let mut first_txoutindex_iter = indexer.vecs.transactions.first_txoutindex.into_iter();
|
||||||
|
let mut out_first_iter = indexer.vecs.outputs.first_txoutindex.into_iter();
|
||||||
|
let mut value_iter = indexer.vecs.outputs.value.into_iter();
|
||||||
|
let mut outputtype_iter = indexer.vecs.outputs.outputtype.into_iter();
|
||||||
|
|
||||||
|
let ref_config = Config::default();
|
||||||
|
let total_blocks = total_heights - sweep_start;
|
||||||
|
let mut blocks: Vec<BlockData> = Vec::with_capacity(total_blocks);
|
||||||
|
|
||||||
|
// Use the widest tolerance we'll test (5%) to decide what to store.
|
||||||
|
// Outputs beyond 5% relative error will never be filtered at any tolerance.
|
||||||
|
let max_tolerance: f64 = 0.05;
|
||||||
|
|
||||||
|
for h in START_HEIGHT..total_heights {
|
||||||
|
let first_txindex: TxIndex = first_txindex_iter.get_at_unwrap(h);
|
||||||
|
let next_first_txindex = first_txindex_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxIndex::from(total_txs));
|
||||||
|
|
||||||
|
let out_start = if first_txindex.to_usize() + 1 < next_first_txindex.to_usize() {
|
||||||
|
first_txoutindex_iter
|
||||||
|
.get_at_unwrap(first_txindex.to_usize() + 1)
|
||||||
|
.to_usize()
|
||||||
|
} else {
|
||||||
|
out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize()
|
||||||
|
};
|
||||||
|
let out_end = out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize();
|
||||||
|
|
||||||
|
if h < sweep_start {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut full_hist = Box::new([0u32; NUM_BINS]);
|
||||||
|
let mut round_outputs = Vec::new();
|
||||||
|
|
||||||
|
for i in out_start..out_end {
|
||||||
|
let sats: Sats = value_iter.get_at_unwrap(i);
|
||||||
|
let output_type: OutputType = outputtype_iter.get_at_unwrap(i);
|
||||||
|
if ref_config.excluded_output_types.contains(&output_type) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if *sats < ref_config.min_sats {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if let Some(bin) = sats_to_bin(sats) {
|
||||||
|
full_hist[bin] += 1;
|
||||||
|
let d = leading_digit(*sats);
|
||||||
|
if (1..=9).contains(&d) {
|
||||||
|
let rel_err = relative_roundness(*sats);
|
||||||
|
if rel_err <= max_tolerance {
|
||||||
|
round_outputs.push(RoundOutput {
|
||||||
|
bin: bin as u16,
|
||||||
|
digit: d,
|
||||||
|
rel_err: rel_err as f32,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let (high_bin, low_bin) = if h < height_bands.len() {
|
||||||
|
height_bands[h]
|
||||||
|
} else {
|
||||||
|
(0.0, 0.0)
|
||||||
|
};
|
||||||
|
|
||||||
|
blocks.push(BlockData {
|
||||||
|
full_hist,
|
||||||
|
round_outputs,
|
||||||
|
high_bin,
|
||||||
|
low_bin,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (h - sweep_start).is_multiple_of(50_000) {
|
||||||
|
eprint!(
|
||||||
|
"\r {}/{} ({:.0}%)",
|
||||||
|
h - sweep_start,
|
||||||
|
total_blocks,
|
||||||
|
(h - sweep_start) as f64 / total_blocks as f64 * 100.0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mem_hists = blocks.len() * std::mem::size_of::<[u32; NUM_BINS]>();
|
||||||
|
let mem_rounds: usize = blocks
|
||||||
|
.iter()
|
||||||
|
.map(|b| b.round_outputs.len() * std::mem::size_of::<RoundOutput>())
|
||||||
|
.sum();
|
||||||
|
eprintln!(
|
||||||
|
"\r {} blocks precomputed ({:.1} GB hists + {:.0} MB rounds) in {:.1}s",
|
||||||
|
blocks.len(),
|
||||||
|
mem_hists as f64 / 1e9,
|
||||||
|
mem_rounds as f64 / 1e6,
|
||||||
|
t0.elapsed().as_secs_f64()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Phase 2: sweep tolerance × mask combos.
|
||||||
|
// Tolerances as fractions (not percentages).
|
||||||
|
let tolerances: &[(f64, &str)] = &[
|
||||||
|
(0.0, "0%"),
|
||||||
|
(0.0001, "0.01%"),
|
||||||
|
(0.0005, "0.05%"),
|
||||||
|
(0.001, "0.1%"),
|
||||||
|
(0.002, "0.2%"),
|
||||||
|
(0.005, "0.5%"),
|
||||||
|
(0.01, "1%"),
|
||||||
|
(0.02, "2%"),
|
||||||
|
(0.05, "5%"),
|
||||||
|
];
|
||||||
|
|
||||||
|
// 987654321
|
||||||
|
let masks: &[(u16, &str)] = &[
|
||||||
|
(0b0_0000_0000, "none"),
|
||||||
|
(0b0_0001_0111, "{1,2,3,5}"),
|
||||||
|
(0b0_0001_1111, "{1,2,3,4,5}"),
|
||||||
|
(0b0_0011_0111, "{1,2,3,5,6}"),
|
||||||
|
(0b0_0111_0111, "{1,2,3,5,6,7}"),
|
||||||
|
(0b1_1111_1111, "{1-9}"),
|
||||||
|
];
|
||||||
|
|
||||||
|
let num_configs = tolerances.len() * masks.len();
|
||||||
|
let num_threads = std::thread::available_parallelism()
|
||||||
|
.map(|n| n.get())
|
||||||
|
.unwrap_or(8);
|
||||||
|
eprintln!(
|
||||||
|
"Phase 2: sweeping {} configs ({} tolerances × {} masks) across {} threads...",
|
||||||
|
num_configs,
|
||||||
|
tolerances.len(),
|
||||||
|
masks.len(),
|
||||||
|
num_threads
|
||||||
|
);
|
||||||
|
|
||||||
|
let t1 = Instant::now();
|
||||||
|
let blocks = &blocks;
|
||||||
|
let tolerances_ref = tolerances;
|
||||||
|
let masks_ref = masks;
|
||||||
|
|
||||||
|
let all_results: Vec<(usize, usize, Stats)> = std::thread::scope(|s| {
|
||||||
|
let configs_per_thread = num_configs.div_ceil(num_threads);
|
||||||
|
|
||||||
|
let handles: Vec<_> = (0..num_threads)
|
||||||
|
.map(|t| {
|
||||||
|
s.spawn(move || {
|
||||||
|
let cfg_start = t * configs_per_thread;
|
||||||
|
let cfg_end = ((t + 1) * configs_per_thread).min(num_configs);
|
||||||
|
if cfg_start >= cfg_end {
|
||||||
|
return vec![];
|
||||||
|
}
|
||||||
|
let mut results = Vec::with_capacity(cfg_end - cfg_start);
|
||||||
|
|
||||||
|
for cfg_idx in cfg_start..cfg_end {
|
||||||
|
let ti = cfg_idx / masks_ref.len();
|
||||||
|
let mi = cfg_idx % masks_ref.len();
|
||||||
|
let (tolerance, _) = tolerances_ref[ti];
|
||||||
|
let (mask, _) = masks_ref[mi];
|
||||||
|
|
||||||
|
let mut oracle = Oracle::new(
|
||||||
|
seed_bin(sweep_start),
|
||||||
|
Config {
|
||||||
|
exclude_common_round_values: false,
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
);
|
||||||
|
let mut stats = Stats::new();
|
||||||
|
|
||||||
|
for bd in blocks.iter() {
|
||||||
|
let mut hist = *bd.full_hist;
|
||||||
|
|
||||||
|
// Remove outputs matching this tolerance + mask.
|
||||||
|
let tol_f32 = tolerance as f32;
|
||||||
|
for ro in &bd.round_outputs {
|
||||||
|
if mask & (1 << (ro.digit - 1)) != 0
|
||||||
|
&& ro.rel_err <= tol_f32
|
||||||
|
{
|
||||||
|
hist[ro.bin as usize] -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let ref_bin = oracle.process_histogram(&hist);
|
||||||
|
|
||||||
|
if bd.high_bin > 0.0 && bd.low_bin > 0.0 {
|
||||||
|
let err = if ref_bin < bd.high_bin {
|
||||||
|
ref_bin - bd.high_bin
|
||||||
|
} else if ref_bin > bd.low_bin {
|
||||||
|
ref_bin - bd.low_bin
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
};
|
||||||
|
stats.update(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
results.push((ti, mi, stats));
|
||||||
|
}
|
||||||
|
|
||||||
|
results
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
handles
|
||||||
|
.into_iter()
|
||||||
|
.flat_map(|h| h.join().unwrap())
|
||||||
|
.collect()
|
||||||
|
});
|
||||||
|
|
||||||
|
eprintln!(" Done in {:.1}s.", t1.elapsed().as_secs_f64());
|
||||||
|
|
||||||
|
// Print results grouped by tolerance.
|
||||||
|
println!();
|
||||||
|
println!(
|
||||||
|
"{:>8} {:>16} {:>8} {:>10} {:>10} {:>6} {:>6} {:>6} {:>8}",
|
||||||
|
"Tol", "Digits", "Blocks", "RMSE%", "Max%", ">5%", ">10%", ">20%", "Bias"
|
||||||
|
);
|
||||||
|
println!("{}", "-".repeat(88));
|
||||||
|
|
||||||
|
for (ti, &(_, tol_label)) in tolerances.iter().enumerate() {
|
||||||
|
for (mi, &(_, mask_label)) in masks.iter().enumerate() {
|
||||||
|
let (_, _, stats) = all_results
|
||||||
|
.iter()
|
||||||
|
.find(|(t, m, _)| *t == ti && *m == mi)
|
||||||
|
.unwrap();
|
||||||
|
println!(
|
||||||
|
"{:>8} {:>16} {:>8} {:>8.3}% {:>8.1}% {:>6} {:>6} {:>6} {:>+8.2}",
|
||||||
|
tol_label,
|
||||||
|
mask_label,
|
||||||
|
stats.total_blocks,
|
||||||
|
stats.rmse_pct(),
|
||||||
|
stats.max_pct(),
|
||||||
|
stats.gt_5pct,
|
||||||
|
stats.gt_10pct,
|
||||||
|
stats.gt_20pct,
|
||||||
|
stats.bias()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
println!();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find overall best config by RMSE.
|
||||||
|
let best = all_results
|
||||||
|
.iter()
|
||||||
|
.min_by(|a, b| a.2.rmse_pct().partial_cmp(&b.2.rmse_pct()).unwrap())
|
||||||
|
.unwrap();
|
||||||
|
let (bti, bmi, bs) = best;
|
||||||
|
println!(
|
||||||
|
"Best: tolerance={}, digits={} → RMSE {:.3}%, Max {:.1}%, >5%: {}, >10%: {}, >20%: {}",
|
||||||
|
tolerances[*bti].1,
|
||||||
|
masks[*bmi].1,
|
||||||
|
bs.rmse_pct(),
|
||||||
|
bs.max_pct(),
|
||||||
|
bs.gt_5pct,
|
||||||
|
bs.gt_10pct,
|
||||||
|
bs.gt_20pct,
|
||||||
|
);
|
||||||
|
|
||||||
|
// Show current config for reference.
|
||||||
|
let current = all_results
|
||||||
|
.iter()
|
||||||
|
.find(|(t, m, _)| {
|
||||||
|
tolerances[*t].0 == 0.001 && masks[*m].0 == 0b0_0011_0111
|
||||||
|
})
|
||||||
|
.unwrap();
|
||||||
|
let (_, _, cs) = current;
|
||||||
|
println!(
|
||||||
|
"Current: tolerance=0.1%, digits={{1,2,3,5,6}} → RMSE {:.3}%, Max {:.1}%, >5%: {}, >10%: {}, >20%: {}",
|
||||||
|
cs.rmse_pct(),
|
||||||
|
cs.max_pct(),
|
||||||
|
cs.gt_5pct,
|
||||||
|
cs.gt_10pct,
|
||||||
|
cs.gt_20pct,
|
||||||
|
);
|
||||||
|
|
||||||
|
println!("\nTotal time: {:.1}s", t0.elapsed().as_secs_f64());
|
||||||
|
}
|
||||||
@@ -0,0 +1,253 @@
|
|||||||
|
//! Validate oracle accuracy against exchange reference prices.
|
||||||
|
//!
|
||||||
|
//! Run with: cargo run -p brk_oracle --example validate --release
|
||||||
|
//!
|
||||||
|
//! Requires:
|
||||||
|
//! - ~/.brk indexed blockchain data (brk_indexer)
|
||||||
|
//! - examples/height_price_ohlc.json (per-height [open, high, low, close] in dollars)
|
||||||
|
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
use brk_indexer::Indexer;
|
||||||
|
use brk_oracle::{cents_to_bin, sats_to_bin, Config, Oracle, NUM_BINS, PRICES, START_HEIGHT};
|
||||||
|
use brk_types::{OutputType, Sats, TxIndex, TxOutIndex};
|
||||||
|
use vecdb::{AnyVec, VecIndex, VecIterator};
|
||||||
|
|
||||||
|
const BINS_5PCT: f64 = 4.24;
|
||||||
|
const BINS_10PCT: f64 = 8.28;
|
||||||
|
const BINS_20PCT: f64 = 15.84;
|
||||||
|
|
||||||
|
fn bins_to_pct(bins: f64) -> f64 {
|
||||||
|
(10.0_f64.powf(bins / 200.0) - 1.0) * 100.0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn seed_bin(start_height: usize) -> f64 {
|
||||||
|
let price: f64 = PRICES
|
||||||
|
.lines()
|
||||||
|
.nth(start_height - 1)
|
||||||
|
.expect("prices.txt too short")
|
||||||
|
.parse()
|
||||||
|
.expect("Failed to parse seed price");
|
||||||
|
cents_to_bin(price * 100.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Stats {
|
||||||
|
total_sq_err: f64,
|
||||||
|
total_bias: f64,
|
||||||
|
max_err: f64,
|
||||||
|
total_blocks: u64,
|
||||||
|
gt_5pct: u64,
|
||||||
|
gt_10pct: u64,
|
||||||
|
gt_20pct: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Stats {
|
||||||
|
fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
total_sq_err: 0.0,
|
||||||
|
total_bias: 0.0,
|
||||||
|
max_err: 0.0,
|
||||||
|
total_blocks: 0,
|
||||||
|
gt_5pct: 0,
|
||||||
|
gt_10pct: 0,
|
||||||
|
gt_20pct: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn update(&mut self, err: f64) {
|
||||||
|
self.total_sq_err += err * err;
|
||||||
|
self.total_bias += err;
|
||||||
|
self.total_blocks += 1;
|
||||||
|
let abs_err = err.abs();
|
||||||
|
if abs_err > self.max_err {
|
||||||
|
self.max_err = abs_err;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_5PCT {
|
||||||
|
self.gt_5pct += 1;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_10PCT {
|
||||||
|
self.gt_10pct += 1;
|
||||||
|
}
|
||||||
|
if abs_err > BINS_20PCT {
|
||||||
|
self.gt_20pct += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn rmse_pct(&self) -> f64 {
|
||||||
|
bins_to_pct((self.total_sq_err / self.total_blocks as f64).sqrt())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn max_pct(&self) -> f64 {
|
||||||
|
bins_to_pct(self.max_err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn bias(&self) -> f64 {
|
||||||
|
self.total_bias / self.total_blocks as f64
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Run {
|
||||||
|
label: &'static str,
|
||||||
|
start_height: usize,
|
||||||
|
oracle: Option<Oracle>,
|
||||||
|
stats: Stats,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let data_dir = std::env::var("BRK_DIR")
|
||||||
|
.map(PathBuf::from)
|
||||||
|
.unwrap_or_else(|_| {
|
||||||
|
let home = std::env::var("HOME").unwrap();
|
||||||
|
PathBuf::from(home).join(".brk")
|
||||||
|
});
|
||||||
|
|
||||||
|
let indexer = Indexer::forced_import(&data_dir).expect("Failed to load indexer");
|
||||||
|
let total_heights = indexer.vecs.blocks.timestamp.len();
|
||||||
|
|
||||||
|
let manifest_dir = env!("CARGO_MANIFEST_DIR");
|
||||||
|
|
||||||
|
let height_ohlc: Vec<[f64; 4]> = serde_json::from_str(
|
||||||
|
&std::fs::read_to_string(format!("{manifest_dir}/examples/height_price_ohlc.json"))
|
||||||
|
.expect("Failed to read height_price_ohlc.json"),
|
||||||
|
)
|
||||||
|
.expect("Failed to parse height OHLC");
|
||||||
|
|
||||||
|
// Pre-compute per-height (high_bin, low_bin) tolerance band.
|
||||||
|
let height_bands: Vec<(f64, f64)> = height_ohlc
|
||||||
|
.iter()
|
||||||
|
.map(|ohlc| {
|
||||||
|
let high = ohlc[1];
|
||||||
|
let low = ohlc[2];
|
||||||
|
if high > 0.0 && low > 0.0 {
|
||||||
|
(cents_to_bin(high * 100.0), cents_to_bin(low * 100.0))
|
||||||
|
} else {
|
||||||
|
(0.0, 0.0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let mut runs = vec![
|
||||||
|
Run { label: "w12 @ 575k", start_height: 575_000, oracle: None, stats: Stats::new() },
|
||||||
|
Run { label: "w12 @ 600k", start_height: 600_000, oracle: None, stats: Stats::new() },
|
||||||
|
Run { label: "w12 @ 630k", start_height: 630_000, oracle: None, stats: Stats::new() },
|
||||||
|
];
|
||||||
|
|
||||||
|
// Build per-block filtered histograms from the indexer, feeding all oracles in one pass.
|
||||||
|
let total_txs = indexer.vecs.transactions.height.len();
|
||||||
|
let total_outputs = indexer.vecs.outputs.value.len();
|
||||||
|
|
||||||
|
let mut first_txindex_iter = indexer.vecs.transactions.first_txindex.into_iter();
|
||||||
|
let mut first_txoutindex_iter = indexer.vecs.transactions.first_txoutindex.into_iter();
|
||||||
|
let mut out_first_iter = indexer.vecs.outputs.first_txoutindex.into_iter();
|
||||||
|
let mut value_iter = indexer.vecs.outputs.value.into_iter();
|
||||||
|
let mut outputtype_iter = indexer.vecs.outputs.outputtype.into_iter();
|
||||||
|
|
||||||
|
let ref_config = Config::default();
|
||||||
|
|
||||||
|
for h in START_HEIGHT..total_heights {
|
||||||
|
let first_txindex: TxIndex = first_txindex_iter.get_at_unwrap(h);
|
||||||
|
let next_first_txindex = first_txindex_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxIndex::from(total_txs));
|
||||||
|
|
||||||
|
let out_start = if first_txindex.to_usize() + 1 < next_first_txindex.to_usize() {
|
||||||
|
first_txoutindex_iter
|
||||||
|
.get_at_unwrap(first_txindex.to_usize() + 1)
|
||||||
|
.to_usize()
|
||||||
|
} else {
|
||||||
|
out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize()
|
||||||
|
};
|
||||||
|
let out_end = out_first_iter
|
||||||
|
.get_at(h + 1)
|
||||||
|
.unwrap_or(TxOutIndex::from(total_outputs))
|
||||||
|
.to_usize();
|
||||||
|
|
||||||
|
// Build filtered histogram once for all oracles.
|
||||||
|
let mut hist = [0u32; NUM_BINS];
|
||||||
|
for i in out_start..out_end {
|
||||||
|
let sats: Sats = value_iter.get_at_unwrap(i);
|
||||||
|
let output_type: OutputType = outputtype_iter.get_at_unwrap(i);
|
||||||
|
if ref_config.excluded_output_types.contains(&output_type) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if *sats < ref_config.min_sats
|
||||||
|
|| (ref_config.exclude_common_round_values && sats.is_common_round_value())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if let Some(bin) = sats_to_bin(sats) {
|
||||||
|
hist[bin] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for run in &mut runs {
|
||||||
|
if h < run.start_height {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if run.oracle.is_none() {
|
||||||
|
let config = Config::default();
|
||||||
|
run.oracle = Some(Oracle::new(seed_bin(run.start_height), config));
|
||||||
|
}
|
||||||
|
let ref_bin = run.oracle.as_mut().unwrap().process_histogram(&hist);
|
||||||
|
|
||||||
|
if h < height_bands.len() {
|
||||||
|
let (high_bin, low_bin) = height_bands[h];
|
||||||
|
if high_bin > 0.0 && low_bin > 0.0 {
|
||||||
|
let err = if ref_bin < high_bin {
|
||||||
|
ref_bin - high_bin
|
||||||
|
} else if ref_bin > low_bin {
|
||||||
|
ref_bin - low_bin
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
};
|
||||||
|
run.stats.update(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print results.
|
||||||
|
println!();
|
||||||
|
println!(
|
||||||
|
"{:<14} {:>8} {:>10} {:>10} {:>6} {:>6} {:>6} {:>8}",
|
||||||
|
"Config", "Blocks", "RMSE%", "Max%", ">5%", ">10%", ">20%", "Bias"
|
||||||
|
);
|
||||||
|
println!("{}", "-".repeat(72));
|
||||||
|
for run in &runs {
|
||||||
|
let s = &run.stats;
|
||||||
|
println!(
|
||||||
|
"{:<14} {:>8} {:>7.2}% {:>7.1}% {:>6} {:>6} {:>6} {:>+8.2}",
|
||||||
|
run.label,
|
||||||
|
s.total_blocks,
|
||||||
|
s.rmse_pct(),
|
||||||
|
s.max_pct(),
|
||||||
|
s.gt_5pct,
|
||||||
|
s.gt_10pct,
|
||||||
|
s.gt_20pct,
|
||||||
|
s.bias()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
println!();
|
||||||
|
|
||||||
|
// Verify exact counts against reference.
|
||||||
|
// Reference: trunc w12 @ 575k: 261 >5%, 40 >10%, 0 >20%
|
||||||
|
// trunc w12 @ 600k: 174 >5%, 31 >10%, 0 >20%
|
||||||
|
// trunc w12 @ 630k: 84 >5%, 9 >10%, 0 >20%
|
||||||
|
let expected: &[(&str, u64, u64, u64)] = &[
|
||||||
|
("w12 @ 575k", 237, 22, 0),
|
||||||
|
("w12 @ 600k", 152, 15, 0),
|
||||||
|
("w12 @ 630k", 84, 9, 0),
|
||||||
|
];
|
||||||
|
|
||||||
|
for (run, &(label, exp_5, exp_10, exp_20)) in runs.iter().zip(expected) {
|
||||||
|
let s = &run.stats;
|
||||||
|
assert_eq!(s.gt_20pct, exp_20, "{label}: expected {exp_20} blocks >20%, got {}", s.gt_20pct);
|
||||||
|
assert_eq!(s.gt_10pct, exp_10, "{label}: expected {exp_10} blocks >10%, got {}", s.gt_10pct);
|
||||||
|
assert_eq!(s.gt_5pct, exp_5, "{label}: expected {exp_5} blocks >5%, got {}", s.gt_5pct);
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("All assertions passed!");
|
||||||
|
}
|
||||||
@@ -0,0 +1,335 @@
|
|||||||
|
//! Pure on-chain BTC/USD price oracle.
|
||||||
|
//!
|
||||||
|
//! Detects round-dollar transaction patterns ($1, $5, $10, ... $10,000) in Bitcoin
|
||||||
|
//! block outputs to derive the current price without any exchange data.
|
||||||
|
|
||||||
|
use brk_types::{Block, CentsUnsigned, Dollars, OutputType, Sats};
|
||||||
|
|
||||||
|
/// Pre-oracle dollar prices, one per line, heights 0..630_000.
|
||||||
|
pub const PRICES: &str = include_str!("prices.txt");
|
||||||
|
|
||||||
|
/// First height where the oracle computes from on-chain data.
|
||||||
|
pub const START_HEIGHT: usize = 575_000;
|
||||||
|
|
||||||
|
pub const BINS_PER_DECADE: usize = 200;
|
||||||
|
const MIN_LOG_BTC: i32 = -8;
|
||||||
|
const MAX_LOG_BTC: i32 = 4;
|
||||||
|
pub const NUM_BINS: usize = BINS_PER_DECADE * (MAX_LOG_BTC - MIN_LOG_BTC) as usize;
|
||||||
|
|
||||||
|
/// Bin offsets for 19 round-USD amounts relative to the $100 reference (offset 0).
|
||||||
|
/// Each offset = log10(amount / 100) * BINS_PER_DECADE.
|
||||||
|
const STENCIL_OFFSETS: [i32; 19] = [
|
||||||
|
-400, // $1
|
||||||
|
-340, // $2
|
||||||
|
-305, // $3
|
||||||
|
-260, // $5
|
||||||
|
-200, // $10
|
||||||
|
-165, // $15
|
||||||
|
-140, // $20
|
||||||
|
-120, // $25
|
||||||
|
-105, // $30
|
||||||
|
-60, // $50
|
||||||
|
0, // $100
|
||||||
|
35, // $150
|
||||||
|
60, // $200
|
||||||
|
95, // $300
|
||||||
|
140, // $500
|
||||||
|
200, // $1000
|
||||||
|
260, // $2000
|
||||||
|
340, // $5000
|
||||||
|
400, // $10000
|
||||||
|
];
|
||||||
|
|
||||||
|
/// Maps a satoshi value to its log-scale bin index.
|
||||||
|
/// bin = round(log10(sats) * BINS_PER_DECADE).
|
||||||
|
#[inline(always)]
|
||||||
|
pub fn sats_to_bin(sats: Sats) -> Option<usize> {
|
||||||
|
if sats.is_zero() {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
let bin = ((*sats as f64).log10() * BINS_PER_DECADE as f64).round() as i64;
|
||||||
|
if bin >= 0 && (bin as usize) < NUM_BINS {
|
||||||
|
Some(bin as usize)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Converts a fractional bin to a USD price in cents.
|
||||||
|
/// For a $D output at price P: sats = D * 1e8 / P, so P = 10^(10 - bin/200) dollars,
|
||||||
|
/// where 10 = log10($100 reference * 1e8 sats/BTC).
|
||||||
|
#[inline]
|
||||||
|
pub fn bin_to_cents(bin: f64) -> u64 {
|
||||||
|
let dollars = 10.0_f64.powf(10.0 - bin / BINS_PER_DECADE as f64);
|
||||||
|
(dollars * 100.0).round() as u64
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Converts a USD price in cents to a fractional bin (inverse of bin_to_cents).
|
||||||
|
#[inline]
|
||||||
|
pub fn cents_to_bin(cents: f64) -> f64 {
|
||||||
|
(10.0 - (cents / 100.0).log10()) * BINS_PER_DECADE as f64
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Scores each candidate bin in the search window by summing normalized stencil
|
||||||
|
/// matches across the EMA histogram, then refines with parabolic interpolation.
|
||||||
|
fn find_best_bin(
|
||||||
|
ema: &[f64; NUM_BINS],
|
||||||
|
prev_bin: f64,
|
||||||
|
search_below: usize,
|
||||||
|
search_above: usize,
|
||||||
|
) -> f64 {
|
||||||
|
let center = prev_bin.round() as usize;
|
||||||
|
let search_start = center.saturating_sub(search_below);
|
||||||
|
let search_end = (center + search_above + 1).min(NUM_BINS);
|
||||||
|
|
||||||
|
if search_start >= search_end {
|
||||||
|
return prev_bin;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Per-offset peak within the search window (for normalization).
|
||||||
|
let mut track_norm = [0.0f64; 19];
|
||||||
|
for (i, &offset) in STENCIL_OFFSETS.iter().enumerate() {
|
||||||
|
for bin in search_start..search_end {
|
||||||
|
let idx = bin as i32 + offset;
|
||||||
|
if idx >= 0 && (idx as usize) < NUM_BINS {
|
||||||
|
track_norm[i] = track_norm[i].max(ema[idx as usize]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let score = |bin: usize| -> f64 {
|
||||||
|
let mut total = 0.0;
|
||||||
|
for (i, &offset) in STENCIL_OFFSETS.iter().enumerate() {
|
||||||
|
let idx = bin as i32 + offset;
|
||||||
|
if idx >= 0 && (idx as usize) < NUM_BINS && track_norm[i] > 0.0 {
|
||||||
|
total += ema[idx as usize] / track_norm[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
total
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut best_bin = search_start;
|
||||||
|
let mut best_score = score(search_start);
|
||||||
|
for bin in (search_start + 1)..search_end {
|
||||||
|
let candidate = score(bin);
|
||||||
|
if candidate > best_score {
|
||||||
|
best_score = candidate;
|
||||||
|
best_bin = bin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parabolic sub-bin interpolation for fractional precision.
|
||||||
|
let score_center = best_score;
|
||||||
|
let score_left = if best_bin > search_start { score(best_bin - 1) } else { score_center };
|
||||||
|
let score_right = if best_bin + 1 < search_end { score(best_bin + 1) } else { score_center };
|
||||||
|
let denom = score_left - 2.0 * score_center + score_right;
|
||||||
|
let sub_bin = if denom.abs() > 1e-10 {
|
||||||
|
(0.5 * (score_left - score_right) / denom).clamp(-0.5, 0.5)
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
};
|
||||||
|
|
||||||
|
best_bin as f64 + sub_bin
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
pub struct Config {
|
||||||
|
/// EMA decay: 2/(N+1) where N is span in blocks. 2/7 = 6-block span.
|
||||||
|
pub alpha: f64,
|
||||||
|
/// Ring buffer depth. 12 blocks for deterministic convergence at any start height.
|
||||||
|
pub window_size: usize,
|
||||||
|
/// Search window bins below/above previous estimate. Asymmetric for log-scale.
|
||||||
|
pub search_below: usize,
|
||||||
|
pub search_above: usize,
|
||||||
|
/// Minimum output value in sats (dust filter).
|
||||||
|
pub min_sats: u64,
|
||||||
|
/// Exclude round BTC amounts that create false stencil matches.
|
||||||
|
pub exclude_common_round_values: bool,
|
||||||
|
/// Output types to ignore (e.g. P2TR, P2WSH are noisy).
|
||||||
|
pub excluded_output_types: Vec<OutputType>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for Config {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
alpha: 2.0 / 7.0,
|
||||||
|
window_size: 12,
|
||||||
|
search_below: 9,
|
||||||
|
search_above: 11,
|
||||||
|
min_sats: 1000,
|
||||||
|
exclude_common_round_values: true,
|
||||||
|
excluded_output_types: vec![OutputType::P2TR, OutputType::P2WSH],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
pub struct Oracle {
|
||||||
|
histograms: Vec<[u32; NUM_BINS]>,
|
||||||
|
ema: Box<[f64; NUM_BINS]>,
|
||||||
|
cursor: usize,
|
||||||
|
filled: usize,
|
||||||
|
ref_bin: f64,
|
||||||
|
config: Config,
|
||||||
|
weights: Vec<f64>,
|
||||||
|
excluded_mask: u16,
|
||||||
|
warmup: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Oracle {
|
||||||
|
pub fn new(start_bin: f64, config: Config) -> Self {
|
||||||
|
let window_size = config.window_size;
|
||||||
|
let decay = 1.0 - config.alpha;
|
||||||
|
let weights: Vec<f64> = (0..window_size)
|
||||||
|
.map(|i| config.alpha * decay.powi(i as i32))
|
||||||
|
.collect();
|
||||||
|
let excluded_mask = config
|
||||||
|
.excluded_output_types
|
||||||
|
.iter()
|
||||||
|
.fold(0u16, |mask, ot| mask | (1 << *ot as u8));
|
||||||
|
Self {
|
||||||
|
histograms: vec![[0u32; NUM_BINS]; window_size],
|
||||||
|
ema: Box::new([0.0; NUM_BINS]),
|
||||||
|
cursor: 0,
|
||||||
|
filled: 0,
|
||||||
|
ref_bin: start_bin,
|
||||||
|
weights,
|
||||||
|
excluded_mask,
|
||||||
|
warmup: false,
|
||||||
|
config,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_block(&mut self, block: &Block) -> f64 {
|
||||||
|
self.process_outputs(
|
||||||
|
block
|
||||||
|
.txdata
|
||||||
|
.iter()
|
||||||
|
.skip(1) // skip coinbase
|
||||||
|
.flat_map(|tx| &tx.output)
|
||||||
|
.map(|txout| (Sats::from(txout.value), OutputType::from(&txout.script_pubkey))),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_outputs(&mut self, outputs: impl Iterator<Item = (Sats, OutputType)>) -> f64 {
|
||||||
|
let mut hist = [0u32; NUM_BINS];
|
||||||
|
for (sats, output_type) in outputs {
|
||||||
|
if let Some(bin) = self.eligible_bin(sats, output_type) {
|
||||||
|
hist[bin] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.ingest(&hist)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Create an oracle restored from a known price.
|
||||||
|
/// `fill` should feed warmup blocks to populate the ring buffer.
|
||||||
|
/// ref_bin is anchored to the checkpoint regardless of warmup drift.
|
||||||
|
pub fn from_checkpoint(ref_bin: f64, config: Config, fill: impl FnOnce(&mut Self)) -> Self {
|
||||||
|
let mut oracle = Self::new(ref_bin, config);
|
||||||
|
oracle.warmup = true;
|
||||||
|
fill(&mut oracle);
|
||||||
|
oracle.warmup = false;
|
||||||
|
oracle.recompute_ema();
|
||||||
|
oracle.ref_bin = ref_bin;
|
||||||
|
oracle
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_histogram(&mut self, hist: &[u32; NUM_BINS]) -> f64 {
|
||||||
|
self.ingest(hist)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn ref_bin(&self) -> f64 {
|
||||||
|
self.ref_bin
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn price_cents(&self) -> CentsUnsigned {
|
||||||
|
bin_to_cents(self.ref_bin).into()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn price_dollars(&self) -> Dollars {
|
||||||
|
self.price_cents().into()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
|
pub fn output_to_bin(&self, sats: Sats, output_type: OutputType) -> Option<usize> {
|
||||||
|
self.eligible_bin(sats, output_type)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
|
fn eligible_bin(&self, sats: Sats, output_type: OutputType) -> Option<usize> {
|
||||||
|
if self.excluded_mask & (1 << output_type as u8) != 0 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
if *sats < self.config.min_sats
|
||||||
|
|| (self.config.exclude_common_round_values && sats.is_common_round_value())
|
||||||
|
{
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
sats_to_bin(sats)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn ingest(&mut self, hist: &[u32; NUM_BINS]) -> f64 {
|
||||||
|
self.histograms[self.cursor] = *hist;
|
||||||
|
self.cursor = (self.cursor + 1) % self.config.window_size;
|
||||||
|
if self.filled < self.config.window_size {
|
||||||
|
self.filled += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if !self.warmup {
|
||||||
|
self.recompute_ema();
|
||||||
|
|
||||||
|
self.ref_bin = find_best_bin(
|
||||||
|
&self.ema,
|
||||||
|
self.ref_bin,
|
||||||
|
self.config.search_below,
|
||||||
|
self.config.search_above,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
self.ref_bin
|
||||||
|
}
|
||||||
|
|
||||||
|
fn recompute_ema(&mut self) {
|
||||||
|
self.ema.fill(0.0);
|
||||||
|
for age in 0..self.filled {
|
||||||
|
let idx =
|
||||||
|
(self.cursor + self.config.window_size - 1 - age) % self.config.window_size;
|
||||||
|
let weight = self.weights[age];
|
||||||
|
let h = &self.histograms[idx];
|
||||||
|
for bin in 0..NUM_BINS {
|
||||||
|
self.ema[bin] += weight * h[bin] as f64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn sats_to_bin_round_trip() {
|
||||||
|
assert_eq!(sats_to_bin(Sats::new(100_000_000)), Some(1600));
|
||||||
|
assert_eq!(sats_to_bin(Sats::new(1)), Some(0));
|
||||||
|
assert_eq!(sats_to_bin(Sats::ZERO), None);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn bin_to_cents_known_values() {
|
||||||
|
assert_eq!(bin_to_cents(1600.0), 10000);
|
||||||
|
assert_eq!(bin_to_cents(1800.0), 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn sats_to_bin_boundary() {
|
||||||
|
assert_eq!(sats_to_bin(Sats::new(1_000_000_000_000)), None);
|
||||||
|
let sats = 10.0_f64.powf(11.995) as u64;
|
||||||
|
assert!(sats_to_bin(Sats::new(sats)).is_some());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn oracle_basic() {
|
||||||
|
let oracle = Oracle::new(1600.0, Config::default());
|
||||||
|
assert_eq!(oracle.ref_bin(), 1600.0);
|
||||||
|
assert_eq!(oracle.price_cents(), bin_to_cents(1600.0).into());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -201,6 +201,16 @@ impl Query {
|
|||||||
Ok(utxos)
|
Ok(utxos)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn address_mempool_hash(&self, address: &Address) -> u64 {
|
||||||
|
let Some(mempool) = self.mempool() else {
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
let Ok(bytes) = AddressBytes::from_str(address) else {
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
mempool.address_hash(&bytes)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn address_mempool_txids(&self, address: Address) -> Result<Vec<Txid>> {
|
pub fn address_mempool_txids(&self, address: Address) -> Result<Vec<Txid>> {
|
||||||
let mempool = self.mempool().ok_or(Error::MempoolNotAvailable)?;
|
let mempool = self.mempool().ok_or(Error::MempoolNotAvailable)?;
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ mod mempool;
|
|||||||
mod metrics;
|
mod metrics;
|
||||||
mod metrics_legacy;
|
mod metrics_legacy;
|
||||||
mod mining;
|
mod mining;
|
||||||
|
mod price;
|
||||||
mod transaction;
|
mod transaction;
|
||||||
|
|
||||||
pub use block::BLOCK_TXS_PAGE_SIZE;
|
pub use block::BLOCK_TXS_PAGE_SIZE;
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
use brk_error::{Error, Result};
|
||||||
|
use brk_types::Dollars;
|
||||||
|
|
||||||
|
use crate::Query;
|
||||||
|
|
||||||
|
impl Query {
|
||||||
|
pub fn live_price(&self) -> Result<Dollars> {
|
||||||
|
let oracle_vecs = &self
|
||||||
|
.computer()
|
||||||
|
.price
|
||||||
|
.as_ref()
|
||||||
|
.ok_or_else(|| Error::OutOfRange("Oracle prices not computed yet".into()))?
|
||||||
|
.oracle;
|
||||||
|
|
||||||
|
let mut oracle = oracle_vecs.live_oracle(self.indexer())?;
|
||||||
|
|
||||||
|
if let Some(mempool) = self.mempool() {
|
||||||
|
let txs = mempool.get_txs();
|
||||||
|
oracle.process_outputs(
|
||||||
|
txs.values()
|
||||||
|
.flat_map(|tx| &tx.tx().output)
|
||||||
|
.map(|txout| (txout.value, txout.type_())),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(oracle.price_dollars())
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
use aide::axum::{ApiRouter, routing::get_with};
|
use aide::axum::{ApiRouter, routing::get_with};
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::{Path, Query, State},
|
extract::{Path, Query, State},
|
||||||
http::HeaderMap,
|
http::{HeaderMap, Uri},
|
||||||
response::Redirect,
|
response::Redirect,
|
||||||
routing::get,
|
routing::get,
|
||||||
};
|
};
|
||||||
@@ -26,11 +26,12 @@ impl AddressRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/address/{address}",
|
"/api/address/{address}",
|
||||||
get_with(async |
|
get_with(async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Path(path): Path<AddressParam>,
|
Path(path): Path<AddressParam>,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.address(path.address)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.address(path.address)).await
|
||||||
}, |op| op
|
}, |op| op
|
||||||
.id("get_address")
|
.id("get_address")
|
||||||
.addresses_tag()
|
.addresses_tag()
|
||||||
@@ -46,12 +47,13 @@ impl AddressRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/address/{address}/txs",
|
"/api/address/{address}/txs",
|
||||||
get_with(async |
|
get_with(async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Path(path): Path<AddressParam>,
|
Path(path): Path<AddressParam>,
|
||||||
Query(params): Query<AddressTxidsParam>,
|
Query(params): Query<AddressTxidsParam>,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.address_txids(path.address, params.after_txid, params.limit)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.address_txids(path.address, params.after_txid, params.limit)).await
|
||||||
}, |op| op
|
}, |op| op
|
||||||
.id("get_address_txs")
|
.id("get_address_txs")
|
||||||
.addresses_tag()
|
.addresses_tag()
|
||||||
@@ -67,11 +69,12 @@ impl AddressRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/address/{address}/utxo",
|
"/api/address/{address}/utxo",
|
||||||
get_with(async |
|
get_with(async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Path(path): Path<AddressParam>,
|
Path(path): Path<AddressParam>,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.address_utxos(path.address)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.address_utxos(path.address)).await
|
||||||
}, |op| op
|
}, |op| op
|
||||||
.id("get_address_utxos")
|
.id("get_address_utxos")
|
||||||
.addresses_tag()
|
.addresses_tag()
|
||||||
@@ -87,12 +90,13 @@ impl AddressRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/address/{address}/txs/mempool",
|
"/api/address/{address}/txs/mempool",
|
||||||
get_with(async |
|
get_with(async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Path(path): Path<AddressParam>,
|
Path(path): Path<AddressParam>,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
// Mempool txs for an address - use MaxAge since it's volatile
|
let hash = state.sync(|q| q.address_mempool_hash(&path.address));
|
||||||
state.cached_json(&headers, CacheStrategy::MaxAge(5), move |q| q.address_mempool_txids(path.address)).await
|
state.cached_json(&headers, CacheStrategy::MempoolHash(hash), &uri, move |q| q.address_mempool_txids(path.address)).await
|
||||||
}, |op| op
|
}, |op| op
|
||||||
.id("get_address_mempool_txs")
|
.id("get_address_mempool_txs")
|
||||||
.addresses_tag()
|
.addresses_tag()
|
||||||
@@ -107,12 +111,13 @@ impl AddressRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/address/{address}/txs/chain",
|
"/api/address/{address}/txs/chain",
|
||||||
get_with(async |
|
get_with(async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Path(path): Path<AddressParam>,
|
Path(path): Path<AddressParam>,
|
||||||
Query(params): Query<AddressTxidsParam>,
|
Query(params): Query<AddressTxidsParam>,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.address_txids(path.address, params.after_txid, 25)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.address_txids(path.address, params.after_txid, 25)).await
|
||||||
}, |op| op
|
}, |op| op
|
||||||
.id("get_address_confirmed_txs")
|
.id("get_address_confirmed_txs")
|
||||||
.addresses_tag()
|
.addresses_tag()
|
||||||
@@ -128,11 +133,12 @@ impl AddressRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/validate-address/{address}",
|
"/api/v1/validate-address/{address}",
|
||||||
get_with(async |
|
get_with(async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Path(path): Path<ValidateAddressParam>,
|
Path(path): Path<ValidateAddressParam>,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Static, move |_q| Ok(AddressValidation::from_address(&path.address))).await
|
state.cached_json(&headers, CacheStrategy::Static, &uri, move |_q| Ok(AddressValidation::from_address(&path.address))).await
|
||||||
}, |op| op
|
}, |op| op
|
||||||
.id("validate_address")
|
.id("validate_address")
|
||||||
.addresses_tag()
|
.addresses_tag()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use aide::axum::{ApiRouter, routing::get_with};
|
use aide::axum::{ApiRouter, routing::get_with};
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::{Path, State},
|
extract::{Path, State},
|
||||||
http::HeaderMap,
|
http::{HeaderMap, Uri},
|
||||||
};
|
};
|
||||||
use brk_query::BLOCK_TXS_PAGE_SIZE;
|
use brk_query::BLOCK_TXS_PAGE_SIZE;
|
||||||
use brk_types::{
|
use brk_types::{
|
||||||
@@ -22,9 +22,9 @@ impl BlockRoutes for ApiRouter<AppState> {
|
|||||||
self.api_route(
|
self.api_route(
|
||||||
"/api/blocks",
|
"/api/blocks",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
state
|
state
|
||||||
.cached_json(&headers, CacheStrategy::Height, move |q| q.blocks(None))
|
.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.blocks(None))
|
||||||
.await
|
.await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
@@ -41,10 +41,11 @@ impl BlockRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/block/{hash}",
|
"/api/block/{hash}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |uri: Uri,
|
||||||
|
headers: HeaderMap,
|
||||||
Path(path): Path<BlockHashParam>,
|
Path(path): Path<BlockHashParam>,
|
||||||
State(state): State<AppState>| {
|
State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Static, move |q| q.block(&path.hash)).await
|
state.cached_json(&headers, CacheStrategy::Static, &uri, move |q| q.block(&path.hash)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_block")
|
op.id("get_block")
|
||||||
@@ -64,10 +65,11 @@ impl BlockRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/block/{hash}/status",
|
"/api/block/{hash}/status",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |uri: Uri,
|
||||||
|
headers: HeaderMap,
|
||||||
Path(path): Path<BlockHashParam>,
|
Path(path): Path<BlockHashParam>,
|
||||||
State(state): State<AppState>| {
|
State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.block_status(&path.hash)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.block_status(&path.hash)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_block_status")
|
op.id("get_block_status")
|
||||||
@@ -87,10 +89,11 @@ impl BlockRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/block-height/{height}",
|
"/api/block-height/{height}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |uri: Uri,
|
||||||
|
headers: HeaderMap,
|
||||||
Path(path): Path<HeightParam>,
|
Path(path): Path<HeightParam>,
|
||||||
State(state): State<AppState>| {
|
State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.block_by_height(path.height)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.block_by_height(path.height)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_block_by_height")
|
op.id("get_block_by_height")
|
||||||
@@ -110,10 +113,11 @@ impl BlockRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/blocks/{height}",
|
"/api/blocks/{height}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |uri: Uri,
|
||||||
|
headers: HeaderMap,
|
||||||
Path(path): Path<HeightParam>,
|
Path(path): Path<HeightParam>,
|
||||||
State(state): State<AppState>| {
|
State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.blocks(Some(path.height))).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.blocks(Some(path.height))).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_blocks_from_height")
|
op.id("get_blocks_from_height")
|
||||||
@@ -132,10 +136,11 @@ impl BlockRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/block/{hash}/txids",
|
"/api/block/{hash}/txids",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |uri: Uri,
|
||||||
|
headers: HeaderMap,
|
||||||
Path(path): Path<BlockHashParam>,
|
Path(path): Path<BlockHashParam>,
|
||||||
State(state): State<AppState>| {
|
State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Static, move |q| q.block_txids(&path.hash)).await
|
state.cached_json(&headers, CacheStrategy::Static, &uri, move |q| q.block_txids(&path.hash)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_block_txids")
|
op.id("get_block_txids")
|
||||||
@@ -155,10 +160,11 @@ impl BlockRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/block/{hash}/txs/{start_index}",
|
"/api/block/{hash}/txs/{start_index}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |uri: Uri,
|
||||||
|
headers: HeaderMap,
|
||||||
Path(path): Path<BlockHashStartIndex>,
|
Path(path): Path<BlockHashStartIndex>,
|
||||||
State(state): State<AppState>| {
|
State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Static, move |q| q.block_txs(&path.hash, path.start_index)).await
|
state.cached_json(&headers, CacheStrategy::Static, &uri, move |q| q.block_txs(&path.hash, path.start_index)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_block_txs")
|
op.id("get_block_txs")
|
||||||
@@ -179,10 +185,11 @@ impl BlockRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/block/{hash}/txid/{index}",
|
"/api/block/{hash}/txid/{index}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |uri: Uri,
|
||||||
|
headers: HeaderMap,
|
||||||
Path(path): Path<BlockHashTxIndex>,
|
Path(path): Path<BlockHashTxIndex>,
|
||||||
State(state): State<AppState>| {
|
State(state): State<AppState>| {
|
||||||
state.cached_text(&headers, CacheStrategy::Static, move |q| q.block_txid_at_index(&path.hash, path.index).map(|t| t.to_string())).await
|
state.cached_text(&headers, CacheStrategy::Static, &uri, move |q| q.block_txid_at_index(&path.hash, path.index).map(|t| t.to_string())).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_block_txid")
|
op.id("get_block_txid")
|
||||||
@@ -202,10 +209,11 @@ impl BlockRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/blocks/timestamp/{timestamp}",
|
"/api/v1/mining/blocks/timestamp/{timestamp}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |uri: Uri,
|
||||||
|
headers: HeaderMap,
|
||||||
Path(path): Path<TimestampParam>,
|
Path(path): Path<TimestampParam>,
|
||||||
State(state): State<AppState>| {
|
State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.block_by_timestamp(path.timestamp)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.block_by_timestamp(path.timestamp)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_block_by_timestamp")
|
op.id("get_block_by_timestamp")
|
||||||
@@ -223,10 +231,11 @@ impl BlockRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/block/{hash}/raw",
|
"/api/block/{hash}/raw",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |uri: Uri,
|
||||||
|
headers: HeaderMap,
|
||||||
Path(path): Path<BlockHashParam>,
|
Path(path): Path<BlockHashParam>,
|
||||||
State(state): State<AppState>| {
|
State(state): State<AppState>| {
|
||||||
state.cached_bytes(&headers, CacheStrategy::Static, move |q| q.block_raw(&path.hash)).await
|
state.cached_bytes(&headers, CacheStrategy::Static, &uri, move |q| q.block_raw(&path.hash)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_block_raw")
|
op.id("get_block_raw")
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use aide::axum::{ApiRouter, routing::get_with};
|
use aide::axum::{ApiRouter, routing::get_with};
|
||||||
use axum::{extract::State, http::HeaderMap, response::Redirect, routing::get};
|
use axum::{extract::State, http::{HeaderMap, Uri}, response::Redirect, routing::get};
|
||||||
use brk_types::{MempoolBlock, MempoolInfo, RecommendedFees, Txid};
|
use brk_types::{Dollars, MempoolBlock, MempoolInfo, RecommendedFees, Txid};
|
||||||
|
|
||||||
use crate::{CacheStrategy, extended::TransformResponseExtended};
|
use crate::extended::TransformResponseExtended;
|
||||||
|
|
||||||
use super::AppState;
|
use super::AppState;
|
||||||
|
|
||||||
@@ -17,8 +17,8 @@ impl MempoolRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/mempool/info",
|
"/api/mempool/info",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::MaxAge(5), |q| q.mempool_info()).await
|
state.cached_json(&headers, state.mempool_cache(), &uri, |q| q.mempool_info()).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_mempool")
|
op.id("get_mempool")
|
||||||
@@ -33,8 +33,8 @@ impl MempoolRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/mempool/txids",
|
"/api/mempool/txids",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::MaxAge(5), |q| q.mempool_txids()).await
|
state.cached_json(&headers, state.mempool_cache(), &uri, |q| q.mempool_txids()).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_mempool_txids")
|
op.id("get_mempool_txids")
|
||||||
@@ -49,8 +49,8 @@ impl MempoolRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/fees/recommended",
|
"/api/v1/fees/recommended",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::MaxAge(3), |q| q.recommended_fees()).await
|
state.cached_json(&headers, state.mempool_cache(), &uri, |q| q.recommended_fees()).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_recommended_fees")
|
op.id("get_recommended_fees")
|
||||||
@@ -62,11 +62,31 @@ impl MempoolRoutes for ApiRouter<AppState> {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
.api_route(
|
||||||
|
"/api/mempool/price",
|
||||||
|
get_with(
|
||||||
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
|
state.cached_json(&headers, state.mempool_cache(), &uri, |q| q.live_price()).await
|
||||||
|
},
|
||||||
|
|op| {
|
||||||
|
op.id("get_live_price")
|
||||||
|
.mempool_tag()
|
||||||
|
.summary("Live BTC/USD price")
|
||||||
|
.description(
|
||||||
|
"Returns the current BTC/USD price in dollars, derived from \
|
||||||
|
on-chain round-dollar output patterns in the last 12 blocks \
|
||||||
|
plus mempool.",
|
||||||
|
)
|
||||||
|
.ok_response::<Dollars>()
|
||||||
|
.server_error()
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)
|
||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/fees/mempool-blocks",
|
"/api/v1/fees/mempool-blocks",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::MaxAge(5), |q| q.mempool_blocks()).await
|
state.cached_json(&headers, state.mempool_cache(), &uri, |q| q.mempool_blocks()).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_mempool_blocks")
|
op.id("get_mempool_blocks")
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
use std::{net::SocketAddr, time::Duration};
|
use std::net::SocketAddr;
|
||||||
|
|
||||||
use axum::{
|
use axum::{
|
||||||
Extension,
|
Extension,
|
||||||
body::Body,
|
body::{Body, Bytes},
|
||||||
extract::{Query, State},
|
extract::{Query, State},
|
||||||
http::{HeaderMap, StatusCode, Uri},
|
http::{HeaderMap, StatusCode, Uri},
|
||||||
response::{IntoResponse, Response},
|
response::{IntoResponse, Response},
|
||||||
};
|
};
|
||||||
use brk_types::{Format, MetricSelection, Output};
|
use brk_types::{Format, MetricSelection, Output};
|
||||||
use quick_cache::sync::GuardResult;
|
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
Result,
|
Result,
|
||||||
@@ -23,56 +22,41 @@ pub async fn handler(
|
|||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Extension(addr): Extension<SocketAddr>,
|
Extension(addr): Extension<SocketAddr>,
|
||||||
Query(params): Query<MetricSelection>,
|
Query(params): Query<MetricSelection>,
|
||||||
State(AppState { query, cache, .. }): State<AppState>,
|
State(state): State<AppState>,
|
||||||
) -> Result<Response> {
|
) -> Result<Response> {
|
||||||
// Phase 1: Search and resolve metadata (cheap)
|
// Phase 1: Search and resolve metadata (cheap)
|
||||||
let resolved = query.run(move |q| q.resolve(params, max_weight(&addr))).await?;
|
let resolved = state.run(move |q| q.resolve(params, max_weight(&addr))).await?;
|
||||||
|
|
||||||
let format = resolved.format();
|
let format = resolved.format();
|
||||||
let etag = resolved.etag();
|
let etag = resolved.etag();
|
||||||
|
|
||||||
// Check if client has fresh cache
|
|
||||||
if headers.has_etag(etag.as_str()) {
|
if headers.has_etag(etag.as_str()) {
|
||||||
let response = (StatusCode::NOT_MODIFIED, "").into_response();
|
return Ok((StatusCode::NOT_MODIFIED, "").into_response());
|
||||||
return Ok(response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check server-side cache
|
// Phase 2: Format (expensive, server-side cached)
|
||||||
let cache_key = format!("bulk-{}{}{}", uri.path(), uri.query().unwrap_or(""), etag);
|
let cache_key = format!("bulk-{}{}{}", uri.path(), uri.query().unwrap_or(""), etag);
|
||||||
let guard_res = cache.get_value_or_guard(&cache_key, Some(Duration::from_millis(50)));
|
let query = &state;
|
||||||
|
let bytes = state
|
||||||
let mut response = if let GuardResult::Value(v) = guard_res {
|
.get_or_insert(&cache_key, async move {
|
||||||
Response::new(Body::from(v))
|
let out = query.run(move |q| q.format(resolved)).await?;
|
||||||
} else {
|
Ok(match out.output {
|
||||||
// Phase 2: Format (expensive, only on cache miss)
|
Output::CSV(s) => Bytes::from(s),
|
||||||
let metric_output = query.run(move |q| q.format(resolved)).await?;
|
Output::Json(v) => Bytes::from(v),
|
||||||
|
})
|
||||||
match metric_output.output {
|
})
|
||||||
Output::CSV(s) => {
|
.await?;
|
||||||
if let GuardResult::Guard(g) = guard_res {
|
|
||||||
let _ = g.insert(s.clone().into());
|
|
||||||
}
|
|
||||||
s.into_response()
|
|
||||||
}
|
|
||||||
Output::Json(v) => {
|
|
||||||
if let GuardResult::Guard(g) = guard_res {
|
|
||||||
let _ = g.insert(v.clone().into());
|
|
||||||
}
|
|
||||||
Response::new(Body::from(v))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let headers = response.headers_mut();
|
|
||||||
headers.insert_etag(etag.as_str());
|
|
||||||
headers.insert_cache_control(CACHE_CONTROL);
|
|
||||||
|
|
||||||
|
let mut response = Response::new(Body::from(bytes));
|
||||||
|
let h = response.headers_mut();
|
||||||
|
h.insert_etag(etag.as_str());
|
||||||
|
h.insert_cache_control(CACHE_CONTROL);
|
||||||
match format {
|
match format {
|
||||||
Format::CSV => {
|
Format::CSV => {
|
||||||
headers.insert_content_disposition_attachment();
|
h.insert_content_disposition_attachment();
|
||||||
headers.insert_content_type_text_csv()
|
h.insert_content_type_text_csv()
|
||||||
}
|
}
|
||||||
Format::JSON => headers.insert_content_type_application_json(),
|
Format::JSON => h.insert_content_type_application_json(),
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(response)
|
Ok(response)
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
use std::{net::SocketAddr, time::Duration};
|
use std::net::SocketAddr;
|
||||||
|
|
||||||
use axum::{
|
use axum::{
|
||||||
Extension,
|
Extension,
|
||||||
body::Body,
|
body::{Body, Bytes},
|
||||||
extract::{Query, State},
|
extract::{Query, State},
|
||||||
http::{HeaderMap, StatusCode, Uri},
|
http::{HeaderMap, StatusCode, Uri},
|
||||||
response::{IntoResponse, Response},
|
response::{IntoResponse, Response},
|
||||||
};
|
};
|
||||||
use brk_types::{Format, MetricSelection, Output};
|
use brk_types::{Format, MetricSelection, Output};
|
||||||
use quick_cache::sync::GuardResult;
|
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
Result,
|
Result,
|
||||||
@@ -23,56 +22,41 @@ pub async fn handler(
|
|||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Extension(addr): Extension<SocketAddr>,
|
Extension(addr): Extension<SocketAddr>,
|
||||||
Query(params): Query<MetricSelection>,
|
Query(params): Query<MetricSelection>,
|
||||||
State(AppState { query, cache, .. }): State<AppState>,
|
State(state): State<AppState>,
|
||||||
) -> Result<Response> {
|
) -> Result<Response> {
|
||||||
// Phase 1: Search and resolve metadata (cheap)
|
// Phase 1: Search and resolve metadata (cheap)
|
||||||
let resolved = query.run(move |q| q.resolve(params, max_weight(&addr))).await?;
|
let resolved = state.run(move |q| q.resolve(params, max_weight(&addr))).await?;
|
||||||
|
|
||||||
let format = resolved.format();
|
let format = resolved.format();
|
||||||
let etag = resolved.etag();
|
let etag = resolved.etag();
|
||||||
|
|
||||||
// Check if client has fresh cache
|
|
||||||
if headers.has_etag(etag.as_str()) {
|
if headers.has_etag(etag.as_str()) {
|
||||||
let response = (StatusCode::NOT_MODIFIED, "").into_response();
|
return Ok((StatusCode::NOT_MODIFIED, "").into_response());
|
||||||
return Ok(response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check server-side cache
|
// Phase 2: Format (expensive, server-side cached)
|
||||||
let cache_key = format!("single-{}{}{}", uri.path(), uri.query().unwrap_or(""), etag);
|
let cache_key = format!("single-{}{}{}", uri.path(), uri.query().unwrap_or(""), etag);
|
||||||
let guard_res = cache.get_value_or_guard(&cache_key, Some(Duration::from_millis(50)));
|
let query = &state;
|
||||||
|
let bytes = state
|
||||||
let mut response = if let GuardResult::Value(v) = guard_res {
|
.get_or_insert(&cache_key, async move {
|
||||||
Response::new(Body::from(v))
|
let out = query.run(move |q| q.format(resolved)).await?;
|
||||||
} else {
|
Ok(match out.output {
|
||||||
// Phase 2: Format (expensive, only on cache miss)
|
Output::CSV(s) => Bytes::from(s),
|
||||||
let metric_output = query.run(move |q| q.format(resolved)).await?;
|
Output::Json(v) => Bytes::from(v),
|
||||||
|
})
|
||||||
match metric_output.output {
|
})
|
||||||
Output::CSV(s) => {
|
.await?;
|
||||||
if let GuardResult::Guard(g) = guard_res {
|
|
||||||
let _ = g.insert(s.clone().into());
|
|
||||||
}
|
|
||||||
s.into_response()
|
|
||||||
}
|
|
||||||
Output::Json(v) => {
|
|
||||||
if let GuardResult::Guard(g) = guard_res {
|
|
||||||
let _ = g.insert(v.clone().into());
|
|
||||||
}
|
|
||||||
Response::new(Body::from(v))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let headers = response.headers_mut();
|
|
||||||
headers.insert_etag(etag.as_str());
|
|
||||||
headers.insert_cache_control(CACHE_CONTROL);
|
|
||||||
|
|
||||||
|
let mut response = Response::new(Body::from(bytes));
|
||||||
|
let h = response.headers_mut();
|
||||||
|
h.insert_etag(etag.as_str());
|
||||||
|
h.insert_cache_control(CACHE_CONTROL);
|
||||||
match format {
|
match format {
|
||||||
Format::CSV => {
|
Format::CSV => {
|
||||||
headers.insert_content_disposition_attachment();
|
h.insert_content_disposition_attachment();
|
||||||
headers.insert_content_type_text_csv()
|
h.insert_content_type_text_csv()
|
||||||
}
|
}
|
||||||
Format::JSON => headers.insert_content_type_application_json(),
|
Format::JSON => h.insert_content_type_application_json(),
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(response)
|
Ok(response)
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
use std::{net::SocketAddr, time::Duration};
|
use std::net::SocketAddr;
|
||||||
|
|
||||||
use axum::{
|
use axum::{
|
||||||
Extension,
|
Extension,
|
||||||
body::Body,
|
body::{Body, Bytes},
|
||||||
extract::{Query, State},
|
extract::{Query, State},
|
||||||
http::{HeaderMap, StatusCode, Uri},
|
http::{HeaderMap, StatusCode, Uri},
|
||||||
response::{IntoResponse, Response},
|
response::{IntoResponse, Response},
|
||||||
};
|
};
|
||||||
use brk_types::{Format, MetricSelection, OutputLegacy};
|
use brk_types::{Format, MetricSelection, OutputLegacy};
|
||||||
use quick_cache::sync::GuardResult;
|
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
Result,
|
Result,
|
||||||
@@ -23,57 +22,41 @@ pub async fn handler(
|
|||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Extension(addr): Extension<SocketAddr>,
|
Extension(addr): Extension<SocketAddr>,
|
||||||
Query(params): Query<MetricSelection>,
|
Query(params): Query<MetricSelection>,
|
||||||
State(AppState { query, cache, .. }): State<AppState>,
|
State(state): State<AppState>,
|
||||||
) -> Result<Response> {
|
) -> Result<Response> {
|
||||||
// Phase 1: Search and resolve metadata (cheap)
|
// Phase 1: Search and resolve metadata (cheap)
|
||||||
let resolved = query.run(move |q| q.resolve(params, max_weight(&addr))).await?;
|
let resolved = state.run(move |q| q.resolve(params, max_weight(&addr))).await?;
|
||||||
|
|
||||||
let format = resolved.format();
|
let format = resolved.format();
|
||||||
let etag = resolved.etag();
|
let etag = resolved.etag();
|
||||||
|
|
||||||
// Check if client has fresh cache
|
|
||||||
if headers.has_etag(etag.as_str()) {
|
if headers.has_etag(etag.as_str()) {
|
||||||
let response = (StatusCode::NOT_MODIFIED, "").into_response();
|
return Ok((StatusCode::NOT_MODIFIED, "").into_response());
|
||||||
return Ok(response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check server-side cache
|
// Phase 2: Format (expensive, server-side cached)
|
||||||
let cache_key = format!("legacy-{}{}{}", uri.path(), uri.query().unwrap_or(""), etag);
|
let cache_key = format!("legacy-{}{}{}", uri.path(), uri.query().unwrap_or(""), etag);
|
||||||
let guard_res = cache.get_value_or_guard(&cache_key, Some(Duration::from_millis(50)));
|
let query = &state;
|
||||||
|
let bytes = state
|
||||||
let mut response = if let GuardResult::Value(v) = guard_res {
|
.get_or_insert(&cache_key, async move {
|
||||||
Response::new(Body::from(v))
|
let out = query.run(move |q| q.format_legacy(resolved)).await?;
|
||||||
} else {
|
Ok(match out.output {
|
||||||
// Phase 2: Format (expensive, only on cache miss)
|
OutputLegacy::CSV(s) => Bytes::from(s),
|
||||||
let metric_output = query.run(move |q| q.format_legacy(resolved)).await?;
|
OutputLegacy::Json(v) => Bytes::from(v.to_vec()),
|
||||||
|
})
|
||||||
match metric_output.output {
|
})
|
||||||
OutputLegacy::CSV(s) => {
|
.await?;
|
||||||
if let GuardResult::Guard(g) = guard_res {
|
|
||||||
let _ = g.insert(s.clone().into());
|
|
||||||
}
|
|
||||||
s.into_response()
|
|
||||||
}
|
|
||||||
OutputLegacy::Json(v) => {
|
|
||||||
let json = v.to_vec();
|
|
||||||
if let GuardResult::Guard(g) = guard_res {
|
|
||||||
let _ = g.insert(json.clone().into());
|
|
||||||
}
|
|
||||||
json.into_response()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let headers = response.headers_mut();
|
|
||||||
headers.insert_etag(etag.as_str());
|
|
||||||
headers.insert_cache_control(CACHE_CONTROL);
|
|
||||||
|
|
||||||
|
let mut response = Response::new(Body::from(bytes));
|
||||||
|
let h = response.headers_mut();
|
||||||
|
h.insert_etag(etag.as_str());
|
||||||
|
h.insert_cache_control(CACHE_CONTROL);
|
||||||
match format {
|
match format {
|
||||||
Format::CSV => {
|
Format::CSV => {
|
||||||
headers.insert_content_disposition_attachment();
|
h.insert_content_disposition_attachment();
|
||||||
headers.insert_content_type_text_csv()
|
h.insert_content_type_text_csv()
|
||||||
}
|
}
|
||||||
Format::JSON => headers.insert_content_type_application_json(),
|
Format::JSON => h.insert_content_type_application_json(),
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(response)
|
Ok(response)
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ impl ApiMetricsRoutes for ApiRouter<AppState> {
|
|||||||
self.api_route(
|
self.api_route(
|
||||||
"/api/metrics",
|
"/api/metrics",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Static, |q| Ok(q.metrics_catalog().clone())).await
|
state.cached_json(&headers, CacheStrategy::Static, &uri, |q| Ok(q.metrics_catalog().clone())).await
|
||||||
},
|
},
|
||||||
|op| op
|
|op| op
|
||||||
.id("get_metrics_tree")
|
.id("get_metrics_tree")
|
||||||
@@ -67,10 +67,11 @@ impl ApiMetricsRoutes for ApiRouter<AppState> {
|
|||||||
"/api/metrics/count",
|
"/api/metrics/count",
|
||||||
get_with(
|
get_with(
|
||||||
async |
|
async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Static, |q| Ok(q.metric_count())).await
|
state.cached_json(&headers, CacheStrategy::Static, &uri, |q| Ok(q.metric_count())).await
|
||||||
},
|
},
|
||||||
|op| op
|
|op| op
|
||||||
.id("get_metrics_count")
|
.id("get_metrics_count")
|
||||||
@@ -85,10 +86,11 @@ impl ApiMetricsRoutes for ApiRouter<AppState> {
|
|||||||
"/api/metrics/indexes",
|
"/api/metrics/indexes",
|
||||||
get_with(
|
get_with(
|
||||||
async |
|
async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Static, |q| Ok(q.indexes().to_vec())).await
|
state.cached_json(&headers, CacheStrategy::Static, &uri, |q| Ok(q.indexes().to_vec())).await
|
||||||
},
|
},
|
||||||
|op| op
|
|op| op
|
||||||
.id("get_indexes")
|
.id("get_indexes")
|
||||||
@@ -105,11 +107,12 @@ impl ApiMetricsRoutes for ApiRouter<AppState> {
|
|||||||
"/api/metrics/list",
|
"/api/metrics/list",
|
||||||
get_with(
|
get_with(
|
||||||
async |
|
async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
State(state): State<AppState>,
|
State(state): State<AppState>,
|
||||||
Query(pagination): Query<Pagination>
|
Query(pagination): Query<Pagination>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Static, move |q| Ok(q.metrics(pagination))).await
|
state.cached_json(&headers, CacheStrategy::Static, &uri, move |q| Ok(q.metrics(pagination))).await
|
||||||
},
|
},
|
||||||
|op| op
|
|op| op
|
||||||
.id("list_metrics")
|
.id("list_metrics")
|
||||||
@@ -124,12 +127,13 @@ impl ApiMetricsRoutes for ApiRouter<AppState> {
|
|||||||
"/api/metrics/search/{metric}",
|
"/api/metrics/search/{metric}",
|
||||||
get_with(
|
get_with(
|
||||||
async |
|
async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
State(state): State<AppState>,
|
State(state): State<AppState>,
|
||||||
Path(path): Path<MetricParam>,
|
Path(path): Path<MetricParam>,
|
||||||
Query(query): Query<LimitParam>
|
Query(query): Query<LimitParam>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Static, move |q| Ok(q.match_metric(&path.metric, query.limit))).await
|
state.cached_json(&headers, CacheStrategy::Static, &uri, move |q| Ok(q.match_metric(&path.metric, query.limit))).await
|
||||||
},
|
},
|
||||||
|op| op
|
|op| op
|
||||||
.id("search_metrics")
|
.id("search_metrics")
|
||||||
@@ -145,11 +149,12 @@ impl ApiMetricsRoutes for ApiRouter<AppState> {
|
|||||||
"/api/metric/{metric}",
|
"/api/metric/{metric}",
|
||||||
get_with(
|
get_with(
|
||||||
async |
|
async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
State(state): State<AppState>,
|
State(state): State<AppState>,
|
||||||
Path(path): Path<MetricParam>
|
Path(path): Path<MetricParam>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Static, move |q| {
|
state.cached_json(&headers, CacheStrategy::Static, &uri, move |q| {
|
||||||
if let Some(indexes) = q.metric_to_indexes(path.metric.clone()) {
|
if let Some(indexes) = q.metric_to_indexes(path.metric.clone()) {
|
||||||
return Ok(indexes.clone())
|
return Ok(indexes.clone())
|
||||||
}
|
}
|
||||||
@@ -296,9 +301,9 @@ impl ApiMetricsRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/metrics/cost-basis",
|
"/api/metrics/cost-basis",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
state
|
state
|
||||||
.cached_json(&headers, CacheStrategy::Static, |q| q.cost_basis_cohorts())
|
.cached_json(&headers, CacheStrategy::Static, &uri, |q| q.cost_basis_cohorts())
|
||||||
.await
|
.await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
@@ -314,11 +319,12 @@ impl ApiMetricsRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/metrics/cost-basis/{cohort}/dates",
|
"/api/metrics/cost-basis/{cohort}/dates",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |uri: Uri,
|
||||||
|
headers: HeaderMap,
|
||||||
Path(params): Path<CostBasisCohortParam>,
|
Path(params): Path<CostBasisCohortParam>,
|
||||||
State(state): State<AppState>| {
|
State(state): State<AppState>| {
|
||||||
state
|
state
|
||||||
.cached_json(&headers, CacheStrategy::Height, move |q| {
|
.cached_json(&headers, CacheStrategy::Height, &uri, move |q| {
|
||||||
q.cost_basis_dates(¶ms.cohort)
|
q.cost_basis_dates(¶ms.cohort)
|
||||||
})
|
})
|
||||||
.await
|
.await
|
||||||
@@ -337,12 +343,13 @@ impl ApiMetricsRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/metrics/cost-basis/{cohort}/{date}",
|
"/api/metrics/cost-basis/{cohort}/{date}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap,
|
async |uri: Uri,
|
||||||
|
headers: HeaderMap,
|
||||||
Path(params): Path<CostBasisParams>,
|
Path(params): Path<CostBasisParams>,
|
||||||
Query(query): Query<CostBasisQuery>,
|
Query(query): Query<CostBasisQuery>,
|
||||||
State(state): State<AppState>| {
|
State(state): State<AppState>| {
|
||||||
state
|
state
|
||||||
.cached_json(&headers, CacheStrategy::Static, move |q| {
|
.cached_json(&headers, CacheStrategy::Static, &uri, move |q| {
|
||||||
q.cost_basis_formatted(
|
q.cost_basis_formatted(
|
||||||
¶ms.cohort,
|
¶ms.cohort,
|
||||||
params.date,
|
params.date,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use aide::axum::{ApiRouter, routing::get_with};
|
use aide::axum::{ApiRouter, routing::get_with};
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::{Path, State},
|
extract::{Path, State},
|
||||||
http::HeaderMap,
|
http::{HeaderMap, Uri},
|
||||||
response::Redirect,
|
response::Redirect,
|
||||||
routing::get,
|
routing::get,
|
||||||
};
|
};
|
||||||
@@ -28,8 +28,8 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/difficulty-adjustment",
|
"/api/v1/difficulty-adjustment",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, |q| q.difficulty_adjustment()).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, |q| q.difficulty_adjustment()).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_difficulty_adjustment")
|
op.id("get_difficulty_adjustment")
|
||||||
@@ -45,9 +45,9 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/pools",
|
"/api/v1/mining/pools",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
// Pool list is static, only changes on code update
|
// Pool list is static, only changes on code update
|
||||||
state.cached_json(&headers, CacheStrategy::Static, |q| Ok(q.all_pools())).await
|
state.cached_json(&headers, CacheStrategy::Static, &uri, |q| Ok(q.all_pools())).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_pools")
|
op.id("get_pools")
|
||||||
@@ -63,8 +63,8 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/pools/{time_period}",
|
"/api/v1/mining/pools/{time_period}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.mining_pools(path.time_period)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.mining_pools(path.time_period)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_pool_stats")
|
op.id("get_pool_stats")
|
||||||
@@ -80,8 +80,8 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/pool/{slug}",
|
"/api/v1/mining/pool/{slug}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, Path(path): Path<PoolSlugParam>, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, Path(path): Path<PoolSlugParam>, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.pool_detail(path.slug)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.pool_detail(path.slug)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_pool")
|
op.id("get_pool")
|
||||||
@@ -98,8 +98,8 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/hashrate",
|
"/api/v1/mining/hashrate",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, |q| q.hashrate(None)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, |q| q.hashrate(None)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_hashrate")
|
op.id("get_hashrate")
|
||||||
@@ -115,8 +115,8 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/hashrate/{time_period}",
|
"/api/v1/mining/hashrate/{time_period}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.hashrate(Some(path.time_period))).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.hashrate(Some(path.time_period))).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_hashrate_by_period")
|
op.id("get_hashrate_by_period")
|
||||||
@@ -132,8 +132,8 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/difficulty-adjustments",
|
"/api/v1/mining/difficulty-adjustments",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, |q| q.difficulty_adjustments(None)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, |q| q.difficulty_adjustments(None)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_difficulty_adjustments")
|
op.id("get_difficulty_adjustments")
|
||||||
@@ -149,8 +149,8 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/difficulty-adjustments/{time_period}",
|
"/api/v1/mining/difficulty-adjustments/{time_period}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.difficulty_adjustments(Some(path.time_period))).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.difficulty_adjustments(Some(path.time_period))).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_difficulty_adjustments_by_period")
|
op.id("get_difficulty_adjustments_by_period")
|
||||||
@@ -166,8 +166,8 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/blocks/fees/{time_period}",
|
"/api/v1/mining/blocks/fees/{time_period}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.block_fees(path.time_period)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.block_fees(path.time_period)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_block_fees")
|
op.id("get_block_fees")
|
||||||
@@ -183,8 +183,8 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/blocks/rewards/{time_period}",
|
"/api/v1/mining/blocks/rewards/{time_period}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.block_rewards(path.time_period)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.block_rewards(path.time_period)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_block_rewards")
|
op.id("get_block_rewards")
|
||||||
@@ -218,8 +218,8 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/blocks/sizes-weights/{time_period}",
|
"/api/v1/mining/blocks/sizes-weights/{time_period}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, Path(path): Path<TimePeriodParam>, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.block_sizes_weights(path.time_period)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.block_sizes_weights(path.time_period)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_block_sizes_weights")
|
op.id("get_block_sizes_weights")
|
||||||
@@ -235,8 +235,8 @@ impl MiningRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/v1/mining/reward-stats/{block_count}",
|
"/api/v1/mining/reward-stats/{block_count}",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, Path(path): Path<BlockCountParam>, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, Path(path): Path<BlockCountParam>, State(state): State<AppState>| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.reward_stats(path.block_count)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.reward_stats(path.block_count)).await
|
||||||
},
|
},
|
||||||
|op| {
|
|op| {
|
||||||
op.id("get_reward_stats")
|
op.id("get_reward_stats")
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use std::{borrow::Cow, fs, path};
|
use std::{borrow::Cow, fs, path};
|
||||||
|
|
||||||
use aide::axum::{ApiRouter, routing::get_with};
|
use aide::axum::{ApiRouter, routing::get_with};
|
||||||
use axum::{extract::State, http::HeaderMap};
|
use axum::{extract::State, http::{HeaderMap, Uri}};
|
||||||
use brk_types::{DiskUsage, Health, Height, SyncStatus};
|
use brk_types::{DiskUsage, Health, Height, SyncStatus};
|
||||||
use vecdb::GenericStoredVec;
|
use vecdb::GenericStoredVec;
|
||||||
|
|
||||||
@@ -18,11 +18,11 @@ impl ServerRoutes for ApiRouter<AppState> {
|
|||||||
self.api_route(
|
self.api_route(
|
||||||
"/api/server/sync",
|
"/api/server/sync",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
let tip_height = state.client.get_last_height();
|
let tip_height = state.client.get_last_height();
|
||||||
|
|
||||||
state
|
state
|
||||||
.cached_json(&headers, CacheStrategy::Height, move |q| {
|
.cached_json(&headers, CacheStrategy::Height, &uri, move |q| {
|
||||||
let indexed_height = q.height();
|
let indexed_height = q.height();
|
||||||
let tip_height = tip_height?;
|
let tip_height = tip_height?;
|
||||||
let blocks_behind = Height::from(tip_height.saturating_sub(*indexed_height));
|
let blocks_behind = Height::from(tip_height.saturating_sub(*indexed_height));
|
||||||
@@ -59,10 +59,10 @@ impl ServerRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/api/server/disk",
|
"/api/server/disk",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
let brk_path = state.data_path.clone();
|
let brk_path = state.data_path.clone();
|
||||||
state
|
state
|
||||||
.cached_json(&headers, CacheStrategy::Height, move |q| {
|
.cached_json(&headers, CacheStrategy::Height, &uri, move |q| {
|
||||||
let brk_bytes = dir_size(&brk_path)?;
|
let brk_bytes = dir_size(&brk_path)?;
|
||||||
let bitcoin_bytes = dir_size(q.blocks_dir())?;
|
let bitcoin_bytes = dir_size(q.blocks_dir())?;
|
||||||
Ok(DiskUsage::new(brk_bytes, bitcoin_bytes))
|
Ok(DiskUsage::new(brk_bytes, bitcoin_bytes))
|
||||||
@@ -106,9 +106,9 @@ impl ServerRoutes for ApiRouter<AppState> {
|
|||||||
.api_route(
|
.api_route(
|
||||||
"/version",
|
"/version",
|
||||||
get_with(
|
get_with(
|
||||||
async |headers: HeaderMap, State(state): State<AppState>| {
|
async |uri: Uri, headers: HeaderMap, State(state): State<AppState>| {
|
||||||
state
|
state
|
||||||
.cached_json(&headers, CacheStrategy::Static, |_| {
|
.cached_json(&headers, CacheStrategy::Static, &uri, |_| {
|
||||||
Ok(env!("CARGO_PKG_VERSION"))
|
Ok(env!("CARGO_PKG_VERSION"))
|
||||||
})
|
})
|
||||||
.await
|
.await
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use aide::axum::{ApiRouter, routing::get_with};
|
use aide::axum::{ApiRouter, routing::get_with};
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::{Path, State},
|
extract::{Path, State},
|
||||||
http::HeaderMap,
|
http::{HeaderMap, Uri},
|
||||||
response::Redirect,
|
response::Redirect,
|
||||||
routing::get,
|
routing::get,
|
||||||
};
|
};
|
||||||
@@ -24,11 +24,12 @@ impl TxRoutes for ApiRouter<AppState> {
|
|||||||
"/api/tx/{txid}",
|
"/api/tx/{txid}",
|
||||||
get_with(
|
get_with(
|
||||||
async |
|
async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Path(txid): Path<TxidParam>,
|
Path(txid): Path<TxidParam>,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.transaction(txid)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.transaction(txid)).await
|
||||||
},
|
},
|
||||||
|op| op
|
|op| op
|
||||||
.id("get_tx")
|
.id("get_tx")
|
||||||
@@ -48,11 +49,12 @@ impl TxRoutes for ApiRouter<AppState> {
|
|||||||
"/api/tx/{txid}/status",
|
"/api/tx/{txid}/status",
|
||||||
get_with(
|
get_with(
|
||||||
async |
|
async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Path(txid): Path<TxidParam>,
|
Path(txid): Path<TxidParam>,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.transaction_status(txid)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.transaction_status(txid)).await
|
||||||
},
|
},
|
||||||
|op| op
|
|op| op
|
||||||
.id("get_tx_status")
|
.id("get_tx_status")
|
||||||
@@ -72,11 +74,12 @@ impl TxRoutes for ApiRouter<AppState> {
|
|||||||
"/api/tx/{txid}/hex",
|
"/api/tx/{txid}/hex",
|
||||||
get_with(
|
get_with(
|
||||||
async |
|
async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Path(txid): Path<TxidParam>,
|
Path(txid): Path<TxidParam>,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
state.cached_text(&headers, CacheStrategy::Height, move |q| q.transaction_hex(txid)).await
|
state.cached_text(&headers, CacheStrategy::Height, &uri, move |q| q.transaction_hex(txid)).await
|
||||||
},
|
},
|
||||||
|op| op
|
|op| op
|
||||||
.id("get_tx_hex")
|
.id("get_tx_hex")
|
||||||
@@ -96,12 +99,13 @@ impl TxRoutes for ApiRouter<AppState> {
|
|||||||
"/api/tx/{txid}/outspend/{vout}",
|
"/api/tx/{txid}/outspend/{vout}",
|
||||||
get_with(
|
get_with(
|
||||||
async |
|
async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Path(path): Path<TxidVout>,
|
Path(path): Path<TxidVout>,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
let txid = TxidParam { txid: path.txid };
|
let txid = TxidParam { txid: path.txid };
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.outspend(txid, path.vout)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.outspend(txid, path.vout)).await
|
||||||
},
|
},
|
||||||
|op| op
|
|op| op
|
||||||
.id("get_tx_outspend")
|
.id("get_tx_outspend")
|
||||||
@@ -121,11 +125,12 @@ impl TxRoutes for ApiRouter<AppState> {
|
|||||||
"/api/tx/{txid}/outspends",
|
"/api/tx/{txid}/outspends",
|
||||||
get_with(
|
get_with(
|
||||||
async |
|
async |
|
||||||
|
uri: Uri,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Path(txid): Path<TxidParam>,
|
Path(txid): Path<TxidParam>,
|
||||||
State(state): State<AppState>
|
State(state): State<AppState>
|
||||||
| {
|
| {
|
||||||
state.cached_json(&headers, CacheStrategy::Height, move |q| q.outspends(txid)).await
|
state.cached_json(&headers, CacheStrategy::Height, &uri, move |q| q.outspends(txid)).await
|
||||||
},
|
},
|
||||||
|op| op
|
|op| op
|
||||||
.id("get_tx_outspends")
|
.id("get_tx_outspends")
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ pub enum CacheStrategy {
|
|||||||
/// Etag = VERSION only, Cache-Control: must-revalidate
|
/// Etag = VERSION only, Cache-Control: must-revalidate
|
||||||
Static,
|
Static,
|
||||||
|
|
||||||
/// Volatile data (mempool) - no etag, just max-age
|
/// Mempool data - etag from next projected block hash + short max-age
|
||||||
/// Cache-Control: max-age={seconds}
|
/// Etag = VERSION-m{hash:x}, Cache-Control: max-age=1, must-revalidate
|
||||||
MaxAge(u64),
|
MempoolHash(u64),
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Resolved cache parameters
|
/// Resolved cache parameters
|
||||||
@@ -50,9 +50,9 @@ impl CacheParams {
|
|||||||
etag: Some(VERSION.to_string()),
|
etag: Some(VERSION.to_string()),
|
||||||
cache_control: "public, max-age=1, must-revalidate".into(),
|
cache_control: "public, max-age=1, must-revalidate".into(),
|
||||||
},
|
},
|
||||||
MaxAge(secs) => Self {
|
MempoolHash(hash) => Self {
|
||||||
etag: None,
|
etag: Some(format!("{VERSION}-m{hash:x}")),
|
||||||
cache_control: format!("public, max-age={secs}"),
|
cache_control: "public, max-age=1, must-revalidate".into(),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,10 +27,8 @@ where
|
|||||||
T: Serialize;
|
T: Serialize;
|
||||||
fn new_text(value: &str, etag: &str) -> Self;
|
fn new_text(value: &str, etag: &str) -> Self;
|
||||||
fn new_text_with(status: StatusCode, value: &str, etag: &str) -> Self;
|
fn new_text_with(status: StatusCode, value: &str, etag: &str) -> Self;
|
||||||
fn new_text_cached(value: &str, params: &CacheParams) -> Self;
|
|
||||||
fn new_bytes(value: Vec<u8>, etag: &str) -> Self;
|
fn new_bytes(value: Vec<u8>, etag: &str) -> Self;
|
||||||
fn new_bytes_with(status: StatusCode, value: Vec<u8>, etag: &str) -> Self;
|
fn new_bytes_with(status: StatusCode, value: Vec<u8>, etag: &str) -> Self;
|
||||||
fn new_bytes_cached(value: Vec<u8>, params: &CacheParams) -> Self;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ResponseExtended for Response<Body> {
|
impl ResponseExtended for Response<Body> {
|
||||||
@@ -114,26 +112,4 @@ impl ResponseExtended for Response<Body> {
|
|||||||
}
|
}
|
||||||
Self::new_json_cached(value, ¶ms)
|
Self::new_json_cached(value, ¶ms)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new_text_cached(value: &str, params: &CacheParams) -> Self {
|
|
||||||
let mut response = Response::builder().body(value.to_string().into()).unwrap();
|
|
||||||
let headers = response.headers_mut();
|
|
||||||
headers.insert_content_type_text_plain();
|
|
||||||
headers.insert_cache_control(¶ms.cache_control);
|
|
||||||
if let Some(etag) = ¶ms.etag {
|
|
||||||
headers.insert_etag(etag);
|
|
||||||
}
|
|
||||||
response
|
|
||||||
}
|
|
||||||
|
|
||||||
fn new_bytes_cached(value: Vec<u8>, params: &CacheParams) -> Self {
|
|
||||||
let mut response = Response::builder().body(value.into()).unwrap();
|
|
||||||
let headers = response.headers_mut();
|
|
||||||
headers.insert_content_type_octet_stream();
|
|
||||||
headers.insert_cache_control(¶ms.cache_control);
|
|
||||||
if let Some(etag) = ¶ms.etag {
|
|
||||||
headers.insert_etag(etag);
|
|
||||||
}
|
|
||||||
response
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,18 @@ impl Server {
|
|||||||
mut request: Request<Body>,
|
mut request: Request<Body>,
|
||||||
next: Next|
|
next: Next|
|
||||||
-> Response<Body> {
|
-> Response<Body> {
|
||||||
request.extensions_mut().insert(connect_info.0);
|
let mut addr = connect_info.0;
|
||||||
|
|
||||||
|
// When behind a reverse proxy (e.g. cloudflared), the direct
|
||||||
|
// connection comes from loopback but the request is external.
|
||||||
|
// Mark it as non-loopback so it gets the stricter limit.
|
||||||
|
if addr.ip().is_loopback()
|
||||||
|
&& request.headers().contains_key("CF-Connecting-IP")
|
||||||
|
{
|
||||||
|
addr.set_ip(std::net::Ipv4Addr::UNSPECIFIED.into());
|
||||||
|
}
|
||||||
|
|
||||||
|
request.extensions_mut().insert(addr);
|
||||||
next.run(request).await
|
next.run(request).await
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
use std::{path::PathBuf, sync::Arc, time::Instant};
|
use std::{future::Future, path::PathBuf, sync::Arc, time::{Duration, Instant}};
|
||||||
|
|
||||||
use derive_more::Deref;
|
use derive_more::Deref;
|
||||||
|
|
||||||
use axum::{
|
use axum::{
|
||||||
body::{Body, Bytes},
|
body::{Body, Bytes},
|
||||||
http::{HeaderMap, Response},
|
http::{HeaderMap, Response, Uri},
|
||||||
};
|
};
|
||||||
use brk_query::AsyncQuery;
|
use brk_query::AsyncQuery;
|
||||||
use brk_rpc::Client;
|
use brk_rpc::Client;
|
||||||
use jiff::Timestamp;
|
use jiff::Timestamp;
|
||||||
use quick_cache::sync::Cache;
|
use quick_cache::sync::{Cache, GuardResult};
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
CacheParams, CacheStrategy, Website,
|
CacheParams, CacheStrategy, Website,
|
||||||
extended::{ResponseExtended, ResultExtended},
|
extended::{HeaderMapExtended, ResponseExtended, ResultExtended},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Clone, Deref)]
|
#[derive(Clone, Deref)]
|
||||||
@@ -30,11 +30,17 @@ pub struct AppState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl AppState {
|
impl AppState {
|
||||||
/// JSON response with caching
|
pub fn mempool_cache(&self) -> CacheStrategy {
|
||||||
|
let hash = self.sync(|q| q.mempool().map(|m| m.next_block_hash()).unwrap_or(0));
|
||||||
|
CacheStrategy::MempoolHash(hash)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// JSON response with HTTP + server-side caching
|
||||||
pub async fn cached_json<T, F>(
|
pub async fn cached_json<T, F>(
|
||||||
&self,
|
&self,
|
||||||
headers: &HeaderMap,
|
headers: &HeaderMap,
|
||||||
strategy: CacheStrategy,
|
strategy: CacheStrategy,
|
||||||
|
uri: &Uri,
|
||||||
f: F,
|
f: F,
|
||||||
) -> Response<Body>
|
) -> Response<Body>
|
||||||
where
|
where
|
||||||
@@ -45,17 +51,36 @@ impl AppState {
|
|||||||
if params.matches_etag(headers) {
|
if params.matches_etag(headers) {
|
||||||
return ResponseExtended::new_not_modified();
|
return ResponseExtended::new_not_modified();
|
||||||
}
|
}
|
||||||
match self.run(f).await {
|
|
||||||
Ok(value) => ResponseExtended::new_json_cached(&value, ¶ms),
|
let full_key = format!("{}-{}", uri, params.etag_str());
|
||||||
|
let result = self
|
||||||
|
.get_or_insert(&full_key, async move {
|
||||||
|
let value = self.run(f).await?;
|
||||||
|
Ok(serde_json::to_vec(&value).unwrap().into())
|
||||||
|
})
|
||||||
|
.await;
|
||||||
|
|
||||||
|
match result {
|
||||||
|
Ok(bytes) => {
|
||||||
|
let mut response = Response::new(Body::from(bytes));
|
||||||
|
let h = response.headers_mut();
|
||||||
|
h.insert_content_type_application_json();
|
||||||
|
h.insert_cache_control(¶ms.cache_control);
|
||||||
|
if let Some(etag) = ¶ms.etag {
|
||||||
|
h.insert_etag(etag);
|
||||||
|
}
|
||||||
|
response
|
||||||
|
}
|
||||||
Err(e) => ResultExtended::<T>::to_json_response(Err(e), params.etag_str()),
|
Err(e) => ResultExtended::<T>::to_json_response(Err(e), params.etag_str()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Text response with caching
|
/// Text response with HTTP + server-side caching
|
||||||
pub async fn cached_text<T, F>(
|
pub async fn cached_text<T, F>(
|
||||||
&self,
|
&self,
|
||||||
headers: &HeaderMap,
|
headers: &HeaderMap,
|
||||||
strategy: CacheStrategy,
|
strategy: CacheStrategy,
|
||||||
|
uri: &Uri,
|
||||||
f: F,
|
f: F,
|
||||||
) -> Response<Body>
|
) -> Response<Body>
|
||||||
where
|
where
|
||||||
@@ -66,17 +91,36 @@ impl AppState {
|
|||||||
if params.matches_etag(headers) {
|
if params.matches_etag(headers) {
|
||||||
return ResponseExtended::new_not_modified();
|
return ResponseExtended::new_not_modified();
|
||||||
}
|
}
|
||||||
match self.run(f).await {
|
|
||||||
Ok(value) => ResponseExtended::new_text_cached(value.as_ref(), ¶ms),
|
let full_key = format!("{}-{}", uri, params.etag_str());
|
||||||
|
let result = self
|
||||||
|
.get_or_insert(&full_key, async move {
|
||||||
|
let value = self.run(f).await?;
|
||||||
|
Ok(Bytes::from(value.as_ref().to_owned()))
|
||||||
|
})
|
||||||
|
.await;
|
||||||
|
|
||||||
|
match result {
|
||||||
|
Ok(bytes) => {
|
||||||
|
let mut response = Response::new(Body::from(bytes));
|
||||||
|
let h = response.headers_mut();
|
||||||
|
h.insert_content_type_text_plain();
|
||||||
|
h.insert_cache_control(¶ms.cache_control);
|
||||||
|
if let Some(etag) = ¶ms.etag {
|
||||||
|
h.insert_etag(etag);
|
||||||
|
}
|
||||||
|
response
|
||||||
|
}
|
||||||
Err(e) => ResultExtended::<T>::to_text_response(Err(e), params.etag_str()),
|
Err(e) => ResultExtended::<T>::to_text_response(Err(e), params.etag_str()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Binary response with caching
|
/// Binary response with HTTP + server-side caching
|
||||||
pub async fn cached_bytes<T, F>(
|
pub async fn cached_bytes<T, F>(
|
||||||
&self,
|
&self,
|
||||||
headers: &HeaderMap,
|
headers: &HeaderMap,
|
||||||
strategy: CacheStrategy,
|
strategy: CacheStrategy,
|
||||||
|
uri: &Uri,
|
||||||
f: F,
|
f: F,
|
||||||
) -> Response<Body>
|
) -> Response<Body>
|
||||||
where
|
where
|
||||||
@@ -87,9 +131,50 @@ impl AppState {
|
|||||||
if params.matches_etag(headers) {
|
if params.matches_etag(headers) {
|
||||||
return ResponseExtended::new_not_modified();
|
return ResponseExtended::new_not_modified();
|
||||||
}
|
}
|
||||||
match self.run(f).await {
|
|
||||||
Ok(value) => ResponseExtended::new_bytes_cached(value.into(), ¶ms),
|
let full_key = format!("{}-{}", uri, params.etag_str());
|
||||||
|
let result = self
|
||||||
|
.get_or_insert(&full_key, async move {
|
||||||
|
let value = self.run(f).await?;
|
||||||
|
Ok(Bytes::from(value.into()))
|
||||||
|
})
|
||||||
|
.await;
|
||||||
|
|
||||||
|
match result {
|
||||||
|
Ok(bytes) => {
|
||||||
|
let mut response = Response::new(Body::from(bytes));
|
||||||
|
let h = response.headers_mut();
|
||||||
|
h.insert_content_type_octet_stream();
|
||||||
|
h.insert_cache_control(¶ms.cache_control);
|
||||||
|
if let Some(etag) = ¶ms.etag {
|
||||||
|
h.insert_etag(etag);
|
||||||
|
}
|
||||||
|
response
|
||||||
|
}
|
||||||
Err(e) => ResultExtended::<T>::to_bytes_response(Err(e), params.etag_str()),
|
Err(e) => ResultExtended::<T>::to_bytes_response(Err(e), params.etag_str()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Check server-side cache, compute on miss
|
||||||
|
pub async fn get_or_insert(
|
||||||
|
&self,
|
||||||
|
cache_key: &str,
|
||||||
|
compute: impl Future<Output = brk_error::Result<Bytes>>,
|
||||||
|
) -> brk_error::Result<Bytes> {
|
||||||
|
let guard_res = self
|
||||||
|
.cache
|
||||||
|
.get_value_or_guard(cache_key, Some(Duration::from_millis(50)));
|
||||||
|
|
||||||
|
if let GuardResult::Value(bytes) = guard_res {
|
||||||
|
return Ok(bytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
let bytes = compute.await?;
|
||||||
|
|
||||||
|
if let GuardResult::Guard(g) = guard_res {
|
||||||
|
let _ = g.insert(bytes.clone());
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(bytes)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ indexmap = { workspace = true }
|
|||||||
itoa = "1.0.17"
|
itoa = "1.0.17"
|
||||||
jiff = { workspace = true }
|
jiff = { workspace = true }
|
||||||
pco = { workspace = true }
|
pco = { workspace = true }
|
||||||
rapidhash = "4.2.1"
|
rapidhash = "4.3.0"
|
||||||
rustc-hash = { workspace = true }
|
rustc-hash = { workspace = true }
|
||||||
ryu = "1.0.22"
|
ryu = "1.0.23"
|
||||||
schemars = { workspace = true }
|
schemars = { workspace = true }
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
serde_json = { workspace = true }
|
serde_json = { workspace = true }
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize};
|
|||||||
///
|
///
|
||||||
/// Based on mempool.space's format.
|
/// Based on mempool.space's format.
|
||||||
///
|
///
|
||||||
#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema)]
|
#[derive(Debug, Default, Clone, Hash, Serialize, Deserialize, JsonSchema)]
|
||||||
pub struct AddressMempoolStats {
|
pub struct AddressMempoolStats {
|
||||||
/// Number of unconfirmed transaction outputs funding this address
|
/// Number of unconfirmed transaction outputs funding this address
|
||||||
#[schemars(example = 0)]
|
#[schemars(example = 0)]
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ use super::{Bitcoin, CentsUnsigned, Dollars, Height};
|
|||||||
Default,
|
Default,
|
||||||
Serialize,
|
Serialize,
|
||||||
Deserialize,
|
Deserialize,
|
||||||
|
Hash,
|
||||||
Pco,
|
Pco,
|
||||||
JsonSchema,
|
JsonSchema,
|
||||||
)]
|
)]
|
||||||
@@ -76,38 +77,19 @@ impl Sats {
|
|||||||
*self == Self::MAX
|
*self == Self::MAX
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Check if value is a "round" BTC amount (±0.1% of common round values).
|
/// Check if value is a "round" BTC amount (±0.1% of d × 10^n, d ∈ {1,2,3,5,6}).
|
||||||
/// Used to filter out non-price-related transactions.
|
/// Used to filter out non-price-related transactions.
|
||||||
/// Round amounts: 1k, 10k, 20k, 30k, 50k, 100k, 200k, 300k, 500k sats,
|
pub fn is_common_round_value(&self) -> bool {
|
||||||
/// 0.01, 0.02, 0.03, 0.05, 0.1, 0.2, 0.3, 0.5, 1, 10 BTC
|
if self.0 == 0 {
|
||||||
pub fn is_round_btc(&self) -> bool {
|
return false;
|
||||||
const ROUND_SATS: [u64; 19] = [
|
}
|
||||||
1_000, // 1k sats
|
let mag = 10u64.pow(self.0.ilog10());
|
||||||
10_000, // 10k sats
|
let leading = (self.0 + mag / 2) / mag;
|
||||||
20_000, // 20k sats
|
if !matches!(leading, 1 | 2 | 3 | 5 | 6 | 10) {
|
||||||
30_000, // 30k sats
|
return false;
|
||||||
50_000, // 50k sats
|
}
|
||||||
100_000, // 100k sats (0.001 BTC)
|
let round_val = leading * mag;
|
||||||
200_000, // 200k sats
|
self.0.abs_diff(round_val) * 1000 <= round_val
|
||||||
300_000, // 300k sats
|
|
||||||
500_000, // 500k sats
|
|
||||||
1_000_000, // 0.01 BTC
|
|
||||||
2_000_000, // 0.02 BTC
|
|
||||||
3_000_000, // 0.03 BTC
|
|
||||||
5_000_000, // 0.05 BTC
|
|
||||||
10_000_000, // 0.1 BTC
|
|
||||||
20_000_000, // 0.2 BTC
|
|
||||||
30_000_000, // 0.3 BTC
|
|
||||||
50_000_000, // 0.5 BTC
|
|
||||||
100_000_000, // 1 BTC
|
|
||||||
1_000_000_000, // 10 BTC
|
|
||||||
];
|
|
||||||
const TOLERANCE: f64 = 0.001; // 0.1%
|
|
||||||
|
|
||||||
let v = self.0 as f64;
|
|
||||||
ROUND_SATS
|
|
||||||
.iter()
|
|
||||||
.any(|&r| (v - r as f64).abs() <= r as f64 * TOLERANCE)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Class: BrkClient
|
# Class: BrkClient
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:4994](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L4994)
|
Defined in: [Developer/brk/modules/brk-client/index.js:5007](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L5007)
|
||||||
|
|
||||||
Main BRK client with metrics tree and API methods
|
Main BRK client with metrics tree and API methods
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ Main BRK client with metrics tree and API methods
|
|||||||
|
|
||||||
> **new BrkClient**(`options`): `BrkClient`
|
> **new BrkClient**(`options`): `BrkClient`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:5911](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L5911)
|
Defined in: [Developer/brk/modules/brk-client/index.js:5924](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L5924)
|
||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:5911](https://github.com/
|
|||||||
|
|
||||||
> **\_cache**: `Cache` \| `null`
|
> **\_cache**: `Cache` \| `null`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1167](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1167)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1167](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1167)
|
||||||
|
|
||||||
#### Inherited from
|
#### Inherited from
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1167](https://github.com/
|
|||||||
|
|
||||||
> **\_cachePromise**: `Promise`\<`Cache` \| `null`\>
|
> **\_cachePromise**: `Promise`\<`Cache` \| `null`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1165](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1165)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1165](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1165)
|
||||||
|
|
||||||
#### Inherited from
|
#### Inherited from
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1165](https://github.com/
|
|||||||
|
|
||||||
> **metrics**: [`MetricsTree`](../interfaces/MetricsTree.md)
|
> **metrics**: [`MetricsTree`](../interfaces/MetricsTree.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:5914](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L5914)
|
Defined in: [Developer/brk/modules/brk-client/index.js:5927](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L5927)
|
||||||
|
|
||||||
## Methods
|
## Methods
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:5914](https://github.com/
|
|||||||
|
|
||||||
> **\_fetchMetricData**\<`T`\>(`path`, `onUpdate?`): `Promise`\<[`MetricData`](../interfaces/MetricData.md)\<`T`\>\>
|
> **\_fetchMetricData**\<`T`\>(`path`, `onUpdate?`): `Promise`\<[`MetricData`](../interfaces/MetricData.md)\<`T`\>\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1257](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1257)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1257](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1257)
|
||||||
|
|
||||||
Fetch metric data and wrap with helper methods (internal)
|
Fetch metric data and wrap with helper methods (internal)
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ Fetch metric data and wrap with helper methods (internal)
|
|||||||
|
|
||||||
> **get**(`path`): `Promise`\<`Response`\>
|
> **get**(`path`): `Promise`\<`Response`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1175](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1175)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1175](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1175)
|
||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1175](https://github.com/
|
|||||||
|
|
||||||
> **getAddress**(`address`): `Promise`\<[`AddressStats`](../interfaces/AddressStats.md)\>
|
> **getAddress**(`address`): `Promise`\<[`AddressStats`](../interfaces/AddressStats.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7102](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7102)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7125](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7125)
|
||||||
|
|
||||||
Address information
|
Address information
|
||||||
|
|
||||||
@@ -156,7 +156,7 @@ Endpoint: `GET /api/address/{address}`
|
|||||||
|
|
||||||
> **getAddressConfirmedTxs**(`address`, `after_txid?`, `limit?`): `Promise`\<`string`[]\>
|
> **getAddressConfirmedTxs**(`address`, `after_txid?`, `limit?`): `Promise`\<`string`[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7143](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7143)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7166](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7166)
|
||||||
|
|
||||||
Address confirmed transactions
|
Address confirmed transactions
|
||||||
|
|
||||||
@@ -194,7 +194,7 @@ Maximum number of results to return. Defaults to 25 if not specified.
|
|||||||
|
|
||||||
> **getAddressMempoolTxs**(`address`): `Promise`\<`string`[]\>
|
> **getAddressMempoolTxs**(`address`): `Promise`\<`string`[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7164](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7164)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7187](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7187)
|
||||||
|
|
||||||
Address mempool transactions
|
Address mempool transactions
|
||||||
|
|
||||||
@@ -220,7 +220,7 @@ Endpoint: `GET /api/address/{address}/txs/mempool`
|
|||||||
|
|
||||||
> **getAddressTxs**(`address`, `after_txid?`, `limit?`): `Promise`\<`string`[]\>
|
> **getAddressTxs**(`address`, `after_txid?`, `limit?`): `Promise`\<`string`[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7120](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7120)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7143](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7143)
|
||||||
|
|
||||||
Address transaction IDs
|
Address transaction IDs
|
||||||
|
|
||||||
@@ -258,7 +258,7 @@ Maximum number of results to return. Defaults to 25 if not specified.
|
|||||||
|
|
||||||
> **getAddressUtxos**(`address`): `Promise`\<[`Utxo`](../interfaces/Utxo.md)[]\>
|
> **getAddressUtxos**(`address`): `Promise`\<[`Utxo`](../interfaces/Utxo.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7180](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7180)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7203](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7203)
|
||||||
|
|
||||||
Address UTXOs
|
Address UTXOs
|
||||||
|
|
||||||
@@ -284,7 +284,7 @@ Endpoint: `GET /api/address/{address}/utxo`
|
|||||||
|
|
||||||
> **getApi**(): `Promise`\<`any`\>
|
> **getApi**(): `Promise`\<`any`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7086](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7086)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7109](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7109)
|
||||||
|
|
||||||
Compact OpenAPI specification
|
Compact OpenAPI specification
|
||||||
|
|
||||||
@@ -302,7 +302,7 @@ Endpoint: `GET /api.json`
|
|||||||
|
|
||||||
> **getBlock**(`hash`): `Promise`\<[`BlockInfo`](../interfaces/BlockInfo.md)\>
|
> **getBlock**(`hash`): `Promise`\<[`BlockInfo`](../interfaces/BlockInfo.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7212](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7212)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7235](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7235)
|
||||||
|
|
||||||
Block information
|
Block information
|
||||||
|
|
||||||
@@ -328,7 +328,7 @@ Endpoint: `GET /api/block/{hash}`
|
|||||||
|
|
||||||
> **getBlockByHeight**(`height`): `Promise`\<[`BlockInfo`](../interfaces/BlockInfo.md)\>
|
> **getBlockByHeight**(`height`): `Promise`\<[`BlockInfo`](../interfaces/BlockInfo.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7196](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7196)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7219](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7219)
|
||||||
|
|
||||||
Block by height
|
Block by height
|
||||||
|
|
||||||
@@ -354,7 +354,7 @@ Endpoint: `GET /api/block-height/{height}`
|
|||||||
|
|
||||||
> **getBlockByTimestamp**(`timestamp`): `Promise`\<[`BlockTimestamp`](../interfaces/BlockTimestamp.md)\>
|
> **getBlockByTimestamp**(`timestamp`): `Promise`\<[`BlockTimestamp`](../interfaces/BlockTimestamp.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7778](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7778)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7813](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7813)
|
||||||
|
|
||||||
Block by timestamp
|
Block by timestamp
|
||||||
|
|
||||||
@@ -380,7 +380,7 @@ Endpoint: `GET /api/v1/mining/blocks/timestamp/{timestamp}`
|
|||||||
|
|
||||||
> **getBlockFeeRates**(`time_period`): `Promise`\<`any`\>
|
> **getBlockFeeRates**(`time_period`): `Promise`\<`any`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7714](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7714)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7749](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7749)
|
||||||
|
|
||||||
Block fee rates (WIP)
|
Block fee rates (WIP)
|
||||||
|
|
||||||
@@ -406,7 +406,7 @@ Endpoint: `GET /api/v1/mining/blocks/fee-rates/{time_period}`
|
|||||||
|
|
||||||
> **getBlockFees**(`time_period`): `Promise`\<[`BlockFeesEntry`](../interfaces/BlockFeesEntry.md)[]\>
|
> **getBlockFees**(`time_period`): `Promise`\<[`BlockFeesEntry`](../interfaces/BlockFeesEntry.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7730](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7730)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7765](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7765)
|
||||||
|
|
||||||
Block fees
|
Block fees
|
||||||
|
|
||||||
@@ -432,7 +432,7 @@ Endpoint: `GET /api/v1/mining/blocks/fees/{time_period}`
|
|||||||
|
|
||||||
> **getBlockRaw**(`hash`): `Promise`\<`number`[]\>
|
> **getBlockRaw**(`hash`): `Promise`\<`number`[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7228](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7228)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7251](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7251)
|
||||||
|
|
||||||
Raw block
|
Raw block
|
||||||
|
|
||||||
@@ -458,7 +458,7 @@ Endpoint: `GET /api/block/{hash}/raw`
|
|||||||
|
|
||||||
> **getBlockRewards**(`time_period`): `Promise`\<[`BlockRewardsEntry`](../interfaces/BlockRewardsEntry.md)[]\>
|
> **getBlockRewards**(`time_period`): `Promise`\<[`BlockRewardsEntry`](../interfaces/BlockRewardsEntry.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7746](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7746)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7781](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7781)
|
||||||
|
|
||||||
Block rewards
|
Block rewards
|
||||||
|
|
||||||
@@ -484,7 +484,7 @@ Endpoint: `GET /api/v1/mining/blocks/rewards/{time_period}`
|
|||||||
|
|
||||||
> **getBlocks**(): `Promise`\<[`BlockInfo`](../interfaces/BlockInfo.md)[]\>
|
> **getBlocks**(): `Promise`\<[`BlockInfo`](../interfaces/BlockInfo.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7308](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7308)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7331](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7331)
|
||||||
|
|
||||||
Recent blocks
|
Recent blocks
|
||||||
|
|
||||||
@@ -504,7 +504,7 @@ Endpoint: `GET /api/blocks`
|
|||||||
|
|
||||||
> **getBlocksFromHeight**(`height`): `Promise`\<[`BlockInfo`](../interfaces/BlockInfo.md)[]\>
|
> **getBlocksFromHeight**(`height`): `Promise`\<[`BlockInfo`](../interfaces/BlockInfo.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7324](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7324)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7347](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7347)
|
||||||
|
|
||||||
Blocks from height
|
Blocks from height
|
||||||
|
|
||||||
@@ -530,7 +530,7 @@ Endpoint: `GET /api/blocks/{height}`
|
|||||||
|
|
||||||
> **getBlockSizesWeights**(`time_period`): `Promise`\<[`BlockSizesWeights`](../interfaces/BlockSizesWeights.md)\>
|
> **getBlockSizesWeights**(`time_period`): `Promise`\<[`BlockSizesWeights`](../interfaces/BlockSizesWeights.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7762](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7762)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7797](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7797)
|
||||||
|
|
||||||
Block sizes and weights
|
Block sizes and weights
|
||||||
|
|
||||||
@@ -556,7 +556,7 @@ Endpoint: `GET /api/v1/mining/blocks/sizes-weights/{time_period}`
|
|||||||
|
|
||||||
> **getBlockStatus**(`hash`): `Promise`\<[`BlockStatus`](../interfaces/BlockStatus.md)\>
|
> **getBlockStatus**(`hash`): `Promise`\<[`BlockStatus`](../interfaces/BlockStatus.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7244](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7244)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7267](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7267)
|
||||||
|
|
||||||
Block status
|
Block status
|
||||||
|
|
||||||
@@ -582,7 +582,7 @@ Endpoint: `GET /api/block/{hash}/status`
|
|||||||
|
|
||||||
> **getBlockTxid**(`hash`, `index`): `Promise`\<`string`\>
|
> **getBlockTxid**(`hash`, `index`): `Promise`\<`string`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7261](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7261)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7284](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7284)
|
||||||
|
|
||||||
Transaction ID at index
|
Transaction ID at index
|
||||||
|
|
||||||
@@ -616,7 +616,7 @@ Transaction index within the block (0-based)
|
|||||||
|
|
||||||
> **getBlockTxids**(`hash`): `Promise`\<`string`[]\>
|
> **getBlockTxids**(`hash`): `Promise`\<`string`[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7277](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7277)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7300](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7300)
|
||||||
|
|
||||||
Block transaction IDs
|
Block transaction IDs
|
||||||
|
|
||||||
@@ -642,7 +642,7 @@ Endpoint: `GET /api/block/{hash}/txids`
|
|||||||
|
|
||||||
> **getBlockTxs**(`hash`, `start_index`): `Promise`\<[`Transaction`](../interfaces/Transaction.md)[]\>
|
> **getBlockTxs**(`hash`, `start_index`): `Promise`\<[`Transaction`](../interfaces/Transaction.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7294](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7294)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7317](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7317)
|
||||||
|
|
||||||
Block transactions (paginated)
|
Block transactions (paginated)
|
||||||
|
|
||||||
@@ -676,7 +676,7 @@ Starting transaction index within the block (0-based)
|
|||||||
|
|
||||||
> **getCostBasis**(`cohort`, `date`, `bucket?`, `value?`): `Promise`\<`Object`\>
|
> **getCostBasis**(`cohort`, `date`, `bucket?`, `value?`): `Promise`\<`Object`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7485](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7485)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7520](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7520)
|
||||||
|
|
||||||
Cost basis distribution
|
Cost basis distribution
|
||||||
|
|
||||||
@@ -720,7 +720,7 @@ Value type to return. Default: supply.
|
|||||||
|
|
||||||
> **getCostBasisCohorts**(): `Promise`\<`string`[]\>
|
> **getCostBasisCohorts**(): `Promise`\<`string`[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7450](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7450)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7485](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7485)
|
||||||
|
|
||||||
Available cost basis cohorts
|
Available cost basis cohorts
|
||||||
|
|
||||||
@@ -738,7 +738,7 @@ Endpoint: `GET /api/metrics/cost-basis`
|
|||||||
|
|
||||||
> **getCostBasisDates**(`cohort`): `Promise`\<`number`[]\>
|
> **getCostBasisDates**(`cohort`): `Promise`\<`number`[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7464](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7464)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7499](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7499)
|
||||||
|
|
||||||
Available cost basis dates
|
Available cost basis dates
|
||||||
|
|
||||||
@@ -762,7 +762,7 @@ Endpoint: `GET /api/metrics/cost-basis/{cohort}/dates`
|
|||||||
|
|
||||||
> **getDifficultyAdjustment**(): `Promise`\<[`DifficultyAdjustment`](../interfaces/DifficultyAdjustment.md)\>
|
> **getDifficultyAdjustment**(): `Promise`\<[`DifficultyAdjustment`](../interfaces/DifficultyAdjustment.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7670](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7670)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7705](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7705)
|
||||||
|
|
||||||
Difficulty adjustment
|
Difficulty adjustment
|
||||||
|
|
||||||
@@ -782,7 +782,7 @@ Endpoint: `GET /api/v1/difficulty-adjustment`
|
|||||||
|
|
||||||
> **getDifficultyAdjustments**(): `Promise`\<[`DifficultyAdjustmentEntry`](../interfaces/DifficultyAdjustmentEntry.md)[]\>
|
> **getDifficultyAdjustments**(): `Promise`\<[`DifficultyAdjustmentEntry`](../interfaces/DifficultyAdjustmentEntry.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7792](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7792)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7827](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7827)
|
||||||
|
|
||||||
Difficulty adjustments (all time)
|
Difficulty adjustments (all time)
|
||||||
|
|
||||||
@@ -802,7 +802,7 @@ Endpoint: `GET /api/v1/mining/difficulty-adjustments`
|
|||||||
|
|
||||||
> **getDifficultyAdjustmentsByPeriod**(`time_period`): `Promise`\<[`DifficultyAdjustmentEntry`](../interfaces/DifficultyAdjustmentEntry.md)[]\>
|
> **getDifficultyAdjustmentsByPeriod**(`time_period`): `Promise`\<[`DifficultyAdjustmentEntry`](../interfaces/DifficultyAdjustmentEntry.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7808](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7808)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7843](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7843)
|
||||||
|
|
||||||
Difficulty adjustments
|
Difficulty adjustments
|
||||||
|
|
||||||
@@ -828,7 +828,7 @@ Endpoint: `GET /api/v1/mining/difficulty-adjustments/{time_period}`
|
|||||||
|
|
||||||
> **getDiskUsage**(): `Promise`\<[`DiskUsage`](../interfaces/DiskUsage.md)\>
|
> **getDiskUsage**(): `Promise`\<[`DiskUsage`](../interfaces/DiskUsage.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7563](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7563)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7598](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7598)
|
||||||
|
|
||||||
Disk usage
|
Disk usage
|
||||||
|
|
||||||
@@ -846,7 +846,7 @@ Endpoint: `GET /api/server/disk`
|
|||||||
|
|
||||||
> **getHashrate**(): `Promise`\<[`HashrateSummary`](../interfaces/HashrateSummary.md)\>
|
> **getHashrate**(): `Promise`\<[`HashrateSummary`](../interfaces/HashrateSummary.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7822](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7822)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7857](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7857)
|
||||||
|
|
||||||
Network hashrate (all time)
|
Network hashrate (all time)
|
||||||
|
|
||||||
@@ -866,7 +866,7 @@ Endpoint: `GET /api/v1/mining/hashrate`
|
|||||||
|
|
||||||
> **getHashrateByPeriod**(`time_period`): `Promise`\<[`HashrateSummary`](../interfaces/HashrateSummary.md)\>
|
> **getHashrateByPeriod**(`time_period`): `Promise`\<[`HashrateSummary`](../interfaces/HashrateSummary.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7838](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7838)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7873](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7873)
|
||||||
|
|
||||||
Network hashrate
|
Network hashrate
|
||||||
|
|
||||||
@@ -892,7 +892,7 @@ Endpoint: `GET /api/v1/mining/hashrate/{time_period}`
|
|||||||
|
|
||||||
> **getHealth**(): `Promise`\<[`Health`](../interfaces/Health.md)\>
|
> **getHealth**(): `Promise`\<[`Health`](../interfaces/Health.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7928](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7928)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7963](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7963)
|
||||||
|
|
||||||
Health check
|
Health check
|
||||||
|
|
||||||
@@ -910,7 +910,7 @@ Endpoint: `GET /health`
|
|||||||
|
|
||||||
> **getIndexes**(): `Promise`\<[`IndexInfo`](../interfaces/IndexInfo.md)[]\>
|
> **getIndexes**(): `Promise`\<[`IndexInfo`](../interfaces/IndexInfo.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7514](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7514)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7549](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7549)
|
||||||
|
|
||||||
List available indexes
|
List available indexes
|
||||||
|
|
||||||
@@ -928,7 +928,7 @@ Endpoint: `GET /api/metrics/indexes`
|
|||||||
|
|
||||||
> **getJson**\<`T`\>(`path`, `onUpdate?`): `Promise`\<`T`\>
|
> **getJson**\<`T`\>(`path`, `onUpdate?`): `Promise`\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1190](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1190)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1190](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1190)
|
||||||
|
|
||||||
Make a GET request - races cache vs network, first to resolve calls onUpdate
|
Make a GET request - races cache vs network, first to resolve calls onUpdate
|
||||||
|
|
||||||
@@ -960,11 +960,29 @@ Called when data is available (may be called twice: cache then network)
|
|||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
|
### getLivePrice()
|
||||||
|
|
||||||
|
> **getLivePrice**(): `Promise`\<`number`\>
|
||||||
|
|
||||||
|
Defined in: [Developer/brk/modules/brk-client/index.js:7373](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7373)
|
||||||
|
|
||||||
|
Live BTC/USD price
|
||||||
|
|
||||||
|
Returns the current BTC/USD price in dollars, derived from on-chain round-dollar output patterns in the last 12 blocks plus mempool.
|
||||||
|
|
||||||
|
Endpoint: `GET /api/mempool/price`
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
|
||||||
|
`Promise`\<`number`\>
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
### getMempool()
|
### getMempool()
|
||||||
|
|
||||||
> **getMempool**(): `Promise`\<[`MempoolInfo`](../interfaces/MempoolInfo.md)\>
|
> **getMempool**(): `Promise`\<[`MempoolInfo`](../interfaces/MempoolInfo.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7338](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7338)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7361](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7361)
|
||||||
|
|
||||||
Mempool statistics
|
Mempool statistics
|
||||||
|
|
||||||
@@ -984,7 +1002,7 @@ Endpoint: `GET /api/mempool/info`
|
|||||||
|
|
||||||
> **getMempoolBlocks**(): `Promise`\<[`MempoolBlock`](../interfaces/MempoolBlock.md)[]\>
|
> **getMempoolBlocks**(): `Promise`\<[`MempoolBlock`](../interfaces/MempoolBlock.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7684](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7684)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7719](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7719)
|
||||||
|
|
||||||
Projected mempool blocks
|
Projected mempool blocks
|
||||||
|
|
||||||
@@ -1004,7 +1022,7 @@ Endpoint: `GET /api/v1/fees/mempool-blocks`
|
|||||||
|
|
||||||
> **getMempoolTxids**(): `Promise`\<`string`[]\>
|
> **getMempoolTxids**(): `Promise`\<`string`[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7352](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7352)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7387](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7387)
|
||||||
|
|
||||||
Mempool transaction IDs
|
Mempool transaction IDs
|
||||||
|
|
||||||
@@ -1024,7 +1042,7 @@ Endpoint: `GET /api/mempool/txids`
|
|||||||
|
|
||||||
> **getMetric**(`metric`, `index`, `start?`, `end?`, `limit?`, `format?`): `Promise`\<`string` \| [`AnyMetricData`](../type-aliases/AnyMetricData.md)\>
|
> **getMetric**(`metric`, `index`, `start?`, `end?`, `limit?`, `format?`): `Promise`\<`string` \| [`AnyMetricData`](../type-aliases/AnyMetricData.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7385](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7385)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7420](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7420)
|
||||||
|
|
||||||
Get metric data
|
Get metric data
|
||||||
|
|
||||||
@@ -1080,7 +1098,7 @@ Format of the output
|
|||||||
|
|
||||||
> **getMetricInfo**(`metric`): `Promise`\<[`Index`](../type-aliases/Index.md)[]\>
|
> **getMetricInfo**(`metric`): `Promise`\<[`Index`](../type-aliases/Index.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7366](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7366)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7401](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7401)
|
||||||
|
|
||||||
Get supported indexes for a metric
|
Get supported indexes for a metric
|
||||||
|
|
||||||
@@ -1104,7 +1122,7 @@ Endpoint: `GET /api/metric/{metric}`
|
|||||||
|
|
||||||
> **getMetrics**(`metrics?`, `index?`, `start?`, `end?`, `limit?`, `format?`): `Promise`\<`string` \| [`AnyMetricData`](../type-aliases/AnyMetricData.md)[]\>
|
> **getMetrics**(`metrics?`, `index?`, `start?`, `end?`, `limit?`, `format?`): `Promise`\<`string` \| [`AnyMetricData`](../type-aliases/AnyMetricData.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7426](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7426)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7461](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7461)
|
||||||
|
|
||||||
Bulk metric data
|
Bulk metric data
|
||||||
|
|
||||||
@@ -1160,7 +1178,7 @@ Format of the output
|
|||||||
|
|
||||||
> **getMetricsCount**(): `Promise`\<[`MetricCount`](../interfaces/MetricCount.md)[]\>
|
> **getMetricsCount**(): `Promise`\<[`MetricCount`](../interfaces/MetricCount.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7502](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7502)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7537](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7537)
|
||||||
|
|
||||||
Metric count
|
Metric count
|
||||||
|
|
||||||
@@ -1178,7 +1196,7 @@ Endpoint: `GET /api/metrics/count`
|
|||||||
|
|
||||||
> **getMetricsTree**(): `Promise`\<[`TreeNode`](../type-aliases/TreeNode.md)\>
|
> **getMetricsTree**(): `Promise`\<[`TreeNode`](../type-aliases/TreeNode.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7407](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7407)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7442](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7442)
|
||||||
|
|
||||||
Metrics catalog
|
Metrics catalog
|
||||||
|
|
||||||
@@ -1196,7 +1214,7 @@ Endpoint: `GET /api/metrics`
|
|||||||
|
|
||||||
> **getOpenapi**(): `Promise`\<`any`\>
|
> **getOpenapi**(): `Promise`\<`any`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7940](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7940)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7975](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7975)
|
||||||
|
|
||||||
OpenAPI specification
|
OpenAPI specification
|
||||||
|
|
||||||
@@ -1214,7 +1232,7 @@ Endpoint: `GET /openapi.json`
|
|||||||
|
|
||||||
> **getPool**(`slug`): `Promise`\<[`PoolDetail`](../interfaces/PoolDetail.md)\>
|
> **getPool**(`slug`): `Promise`\<[`PoolDetail`](../interfaces/PoolDetail.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7854](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7854)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7889](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7889)
|
||||||
|
|
||||||
Mining pool details
|
Mining pool details
|
||||||
|
|
||||||
@@ -1240,7 +1258,7 @@ Endpoint: `GET /api/v1/mining/pool/{slug}`
|
|||||||
|
|
||||||
> **getPools**(): `Promise`\<[`PoolInfo`](../interfaces/PoolInfo.md)[]\>
|
> **getPools**(): `Promise`\<[`PoolInfo`](../interfaces/PoolInfo.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7868](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7868)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7903](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7903)
|
||||||
|
|
||||||
List all mining pools
|
List all mining pools
|
||||||
|
|
||||||
@@ -1260,7 +1278,7 @@ Endpoint: `GET /api/v1/mining/pools`
|
|||||||
|
|
||||||
> **getPoolStats**(`time_period`): `Promise`\<[`PoolsSummary`](../interfaces/PoolsSummary.md)\>
|
> **getPoolStats**(`time_period`): `Promise`\<[`PoolsSummary`](../interfaces/PoolsSummary.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7884](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7884)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7919](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7919)
|
||||||
|
|
||||||
Mining pool statistics
|
Mining pool statistics
|
||||||
|
|
||||||
@@ -1286,7 +1304,7 @@ Endpoint: `GET /api/v1/mining/pools/{time_period}`
|
|||||||
|
|
||||||
> **getRecommendedFees**(): `Promise`\<[`RecommendedFees`](../interfaces/RecommendedFees.md)\>
|
> **getRecommendedFees**(): `Promise`\<[`RecommendedFees`](../interfaces/RecommendedFees.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7698](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7698)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7733](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7733)
|
||||||
|
|
||||||
Recommended fees
|
Recommended fees
|
||||||
|
|
||||||
@@ -1306,7 +1324,7 @@ Endpoint: `GET /api/v1/fees/recommended`
|
|||||||
|
|
||||||
> **getRewardStats**(`block_count`): `Promise`\<[`RewardStats`](../interfaces/RewardStats.md)\>
|
> **getRewardStats**(`block_count`): `Promise`\<[`RewardStats`](../interfaces/RewardStats.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7900](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7900)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7935](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7935)
|
||||||
|
|
||||||
Mining reward statistics
|
Mining reward statistics
|
||||||
|
|
||||||
@@ -1334,7 +1352,7 @@ Number of recent blocks to include
|
|||||||
|
|
||||||
> **getSyncStatus**(): `Promise`\<[`SyncStatus`](../interfaces/SyncStatus.md)\>
|
> **getSyncStatus**(): `Promise`\<[`SyncStatus`](../interfaces/SyncStatus.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7575](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7575)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7610](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7610)
|
||||||
|
|
||||||
Sync status
|
Sync status
|
||||||
|
|
||||||
@@ -1352,7 +1370,7 @@ Endpoint: `GET /api/server/sync`
|
|||||||
|
|
||||||
> **getText**(`path`): `Promise`\<`string`\>
|
> **getText**(`path`): `Promise`\<`string`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1245](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1245)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1245](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1245)
|
||||||
|
|
||||||
Make a GET request and return raw text (for CSV responses)
|
Make a GET request and return raw text (for CSV responses)
|
||||||
|
|
||||||
@@ -1376,7 +1394,7 @@ Make a GET request and return raw text (for CSV responses)
|
|||||||
|
|
||||||
> **getTx**(`txid`): `Promise`\<[`Transaction`](../interfaces/Transaction.md)\>
|
> **getTx**(`txid`): `Promise`\<[`Transaction`](../interfaces/Transaction.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7591](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7591)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7626](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7626)
|
||||||
|
|
||||||
Transaction information
|
Transaction information
|
||||||
|
|
||||||
@@ -1402,7 +1420,7 @@ Endpoint: `GET /api/tx/{txid}`
|
|||||||
|
|
||||||
> **getTxHex**(`txid`): `Promise`\<`string`\>
|
> **getTxHex**(`txid`): `Promise`\<`string`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7607](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7607)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7642](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7642)
|
||||||
|
|
||||||
Transaction hex
|
Transaction hex
|
||||||
|
|
||||||
@@ -1428,7 +1446,7 @@ Endpoint: `GET /api/tx/{txid}/hex`
|
|||||||
|
|
||||||
> **getTxOutspend**(`txid`, `vout`): `Promise`\<[`TxOutspend`](../interfaces/TxOutspend.md)\>
|
> **getTxOutspend**(`txid`, `vout`): `Promise`\<[`TxOutspend`](../interfaces/TxOutspend.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7624](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7624)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7659](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7659)
|
||||||
|
|
||||||
Output spend status
|
Output spend status
|
||||||
|
|
||||||
@@ -1462,7 +1480,7 @@ Output index
|
|||||||
|
|
||||||
> **getTxOutspends**(`txid`): `Promise`\<[`TxOutspend`](../interfaces/TxOutspend.md)[]\>
|
> **getTxOutspends**(`txid`): `Promise`\<[`TxOutspend`](../interfaces/TxOutspend.md)[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7640](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7640)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7675](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7675)
|
||||||
|
|
||||||
All output spend statuses
|
All output spend statuses
|
||||||
|
|
||||||
@@ -1488,7 +1506,7 @@ Endpoint: `GET /api/tx/{txid}/outspends`
|
|||||||
|
|
||||||
> **getTxStatus**(`txid`): `Promise`\<[`TxStatus`](../interfaces/TxStatus.md)\>
|
> **getTxStatus**(`txid`): `Promise`\<[`TxStatus`](../interfaces/TxStatus.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7656](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7656)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7691](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7691)
|
||||||
|
|
||||||
Transaction status
|
Transaction status
|
||||||
|
|
||||||
@@ -1514,7 +1532,7 @@ Endpoint: `GET /api/tx/{txid}/status`
|
|||||||
|
|
||||||
> **getVersion**(): `Promise`\<`string`\>
|
> **getVersion**(): `Promise`\<`string`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7952](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7952)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7987](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7987)
|
||||||
|
|
||||||
API version
|
API version
|
||||||
|
|
||||||
@@ -1532,7 +1550,7 @@ Endpoint: `GET /version`
|
|||||||
|
|
||||||
> **indexToDate**(`index`, `i`): `Date`
|
> **indexToDate**(`index`, `i`): `Date`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:5895](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L5895)
|
Defined in: [Developer/brk/modules/brk-client/index.js:5908](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L5908)
|
||||||
|
|
||||||
Convert an index value to a Date for date-based indexes.
|
Convert an index value to a Date for date-based indexes.
|
||||||
|
|
||||||
@@ -1560,7 +1578,7 @@ The index value
|
|||||||
|
|
||||||
> **isDateIndex**(`index`): `boolean`
|
> **isDateIndex**(`index`): `boolean`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:5904](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L5904)
|
Defined in: [Developer/brk/modules/brk-client/index.js:5917](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L5917)
|
||||||
|
|
||||||
Check if an index type is date-based.
|
Check if an index type is date-based.
|
||||||
|
|
||||||
@@ -1580,7 +1598,7 @@ Check if an index type is date-based.
|
|||||||
|
|
||||||
> **listMetrics**(`page?`): `Promise`\<[`PaginatedMetrics`](../interfaces/PaginatedMetrics.md)\>
|
> **listMetrics**(`page?`): `Promise`\<[`PaginatedMetrics`](../interfaces/PaginatedMetrics.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7528](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7528)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7563](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7563)
|
||||||
|
|
||||||
Metrics list
|
Metrics list
|
||||||
|
|
||||||
@@ -1606,7 +1624,7 @@ Pagination index
|
|||||||
|
|
||||||
> **metric**(`metric`, `index`): [`MetricEndpointBuilder`](../interfaces/MetricEndpointBuilder.md)\<`unknown`\>
|
> **metric**(`metric`, `index`): [`MetricEndpointBuilder`](../interfaces/MetricEndpointBuilder.md)\<`unknown`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7074](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7074)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7097](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7097)
|
||||||
|
|
||||||
Create a dynamic metric endpoint builder for any metric/index combination.
|
Create a dynamic metric endpoint builder for any metric/index combination.
|
||||||
|
|
||||||
@@ -1637,7 +1655,7 @@ The index name
|
|||||||
|
|
||||||
> **searchMetrics**(`metric`, `limit?`): `Promise`\<`string`[]\>
|
> **searchMetrics**(`metric`, `limit?`): `Promise`\<`string`[]\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7547](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7547)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7582](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7582)
|
||||||
|
|
||||||
Search metrics
|
Search metrics
|
||||||
|
|
||||||
@@ -1665,7 +1683,7 @@ Endpoint: `GET /api/metrics/search/{metric}`
|
|||||||
|
|
||||||
> **validateAddress**(`address`): `Promise`\<[`AddressValidation`](../interfaces/AddressValidation.md)\>
|
> **validateAddress**(`address`): `Promise`\<[`AddressValidation`](../interfaces/AddressValidation.md)\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:7916](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L7916)
|
Defined in: [Developer/brk/modules/brk-client/index.js:7951](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L7951)
|
||||||
|
|
||||||
Validate address
|
Validate address
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Class: BrkError
|
# Class: BrkError
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:892](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L892)
|
Defined in: [Developer/brk/modules/brk-client/index.js:892](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L892)
|
||||||
|
|
||||||
Custom error class for BRK client errors
|
Custom error class for BRK client errors
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ Custom error class for BRK client errors
|
|||||||
|
|
||||||
> **new BrkError**(`message`, `status?`): `BrkError`
|
> **new BrkError**(`message`, `status?`): `BrkError`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:897](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L897)
|
Defined in: [Developer/brk/modules/brk-client/index.js:897](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L897)
|
||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
|
|||||||
@@ -204,6 +204,7 @@
|
|||||||
- [MetricsTree\_Price](interfaces/MetricsTree_Price.md)
|
- [MetricsTree\_Price](interfaces/MetricsTree_Price.md)
|
||||||
- [MetricsTree\_Price\_Cents](interfaces/MetricsTree_Price_Cents.md)
|
- [MetricsTree\_Price\_Cents](interfaces/MetricsTree_Price_Cents.md)
|
||||||
- [MetricsTree\_Price\_Cents\_Split](interfaces/MetricsTree_Price_Cents_Split.md)
|
- [MetricsTree\_Price\_Cents\_Split](interfaces/MetricsTree_Price_Cents_Split.md)
|
||||||
|
- [MetricsTree\_Price\_Oracle](interfaces/MetricsTree_Price_Oracle.md)
|
||||||
- [MetricsTree\_Price\_Usd](interfaces/MetricsTree_Price_Usd.md)
|
- [MetricsTree\_Price\_Usd](interfaces/MetricsTree_Price_Usd.md)
|
||||||
- [MetricsTree\_Scripts](interfaces/MetricsTree_Scripts.md)
|
- [MetricsTree\_Scripts](interfaces/MetricsTree_Scripts.md)
|
||||||
- [MetricsTree\_Scripts\_Count](interfaces/MetricsTree_Scripts_Count.md)
|
- [MetricsTree\_Scripts\_Count](interfaces/MetricsTree_Scripts_Count.md)
|
||||||
|
|||||||
+29
-29
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: \_0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdSmaZscorePattern
|
# Interface: \_0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdSmaZscorePattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1913](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1913)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1913](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1913)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1913](https://github.com/
|
|||||||
|
|
||||||
> **\_0sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **\_0sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1914](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1914)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1914](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1914)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1914](https://github.com/
|
|||||||
|
|
||||||
> **m05sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **m05sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1915](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1915)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1915](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1915)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1915](https://github.com/
|
|||||||
|
|
||||||
> **m05sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **m05sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1916](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1916)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1916](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1916)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1916](https://github.com/
|
|||||||
|
|
||||||
> **m15sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **m15sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1917](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1917)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1917](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1917)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1917](https://github.com/
|
|||||||
|
|
||||||
> **m15sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **m15sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1918](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1918)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1918](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1918)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1918](https://github.com/
|
|||||||
|
|
||||||
> **m1sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **m1sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1919](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1919)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1919](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1919)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1919](https://github.com/
|
|||||||
|
|
||||||
> **m1sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **m1sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1920](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1920)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1920](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1920)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1920](https://github.com/
|
|||||||
|
|
||||||
> **m25sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **m25sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1921](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1921)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1921](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1921)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1921](https://github.com/
|
|||||||
|
|
||||||
> **m25sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **m25sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1922](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1922)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1922](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1922)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1922](https://github.com/
|
|||||||
|
|
||||||
> **m2sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **m2sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1923](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1923)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1923](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1923)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1923](https://github.com/
|
|||||||
|
|
||||||
> **m2sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **m2sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1924](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1924)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1924](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1924)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1924](https://github.com/
|
|||||||
|
|
||||||
> **m3sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **m3sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1925](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1925)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1925](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1925)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1925](https://github.com/
|
|||||||
|
|
||||||
> **m3sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **m3sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1926](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1926)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1926](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1926)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1926](https://github.com/
|
|||||||
|
|
||||||
> **p05sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **p05sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1927](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1927)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1927](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1927)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1927](https://github.com/
|
|||||||
|
|
||||||
> **p05sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **p05sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1928](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1928)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1928](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1928)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1928](https://github.com/
|
|||||||
|
|
||||||
> **p15sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **p15sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1929](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1929)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1929](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1929)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1929](https://github.com/
|
|||||||
|
|
||||||
> **p15sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **p15sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1930](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1930)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1930](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1930)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1930](https://github.com/
|
|||||||
|
|
||||||
> **p1sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **p1sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1931](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1931)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1931](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1931)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1931](https://github.com/
|
|||||||
|
|
||||||
> **p1sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **p1sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1932](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1932)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1932](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1932)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1932](https://github.com/
|
|||||||
|
|
||||||
> **p25sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **p25sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1933](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1933)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1933](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1933)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1933](https://github.com/
|
|||||||
|
|
||||||
> **p25sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **p25sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1934](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1934)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1934](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1934)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1934](https://github.com/
|
|||||||
|
|
||||||
> **p2sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **p2sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1935](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1935)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1935](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1935)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -190,7 +190,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1935](https://github.com/
|
|||||||
|
|
||||||
> **p2sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **p2sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1936](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1936)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1936](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1936)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1936](https://github.com/
|
|||||||
|
|
||||||
> **p3sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **p3sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1937](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1937)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1937](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1937)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1937](https://github.com/
|
|||||||
|
|
||||||
> **p3sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
> **p3sdUsd**: [`DollarsSatsPattern2`](DollarsSatsPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1938](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1938)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1938](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1938)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1938](https://github.com/
|
|||||||
|
|
||||||
> **sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **sd**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1939](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1939)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1939](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1939)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1939](https://github.com/
|
|||||||
|
|
||||||
> **sma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **sma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1940](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1940)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1940](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1940)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -230,4 +230,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1940](https://github.com/
|
|||||||
|
|
||||||
> **zscore**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **zscore**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1941](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1941)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1941](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1941)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: \_10y1m1w1y2y3m3y4y5y6m6y8yPattern2\<T\>
|
# Interface: \_10y1m1w1y2y3m3y4y5y6m6y8yPattern2\<T\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2502](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2502)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2502](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2502)
|
||||||
|
|
||||||
## Type Parameters
|
## Type Parameters
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2502](https://github.com/
|
|||||||
|
|
||||||
> **\_10y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_10y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2503](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2503)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2503](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2503)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2503](https://github.com/
|
|||||||
|
|
||||||
> **\_1m**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_1m**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2504](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2504)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2504](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2504)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2504](https://github.com/
|
|||||||
|
|
||||||
> **\_1w**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_1w**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2505](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2505)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2505](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2505)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2505](https://github.com/
|
|||||||
|
|
||||||
> **\_1y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_1y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2506](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2506)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2506](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2506)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2506](https://github.com/
|
|||||||
|
|
||||||
> **\_2y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2507](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2507)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2507](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2507)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2507](https://github.com/
|
|||||||
|
|
||||||
> **\_3m**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_3m**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2508](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2508)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2508](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2508)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2508](https://github.com/
|
|||||||
|
|
||||||
> **\_3y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_3y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2509](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2509)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2509](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2509)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2509](https://github.com/
|
|||||||
|
|
||||||
> **\_4y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_4y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2510](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2510)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2510](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2510)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2510](https://github.com/
|
|||||||
|
|
||||||
> **\_5y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_5y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2511](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2511)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2511](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2511)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2511](https://github.com/
|
|||||||
|
|
||||||
> **\_6m**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_6m**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2512](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2512)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2512](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2512)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2512](https://github.com/
|
|||||||
|
|
||||||
> **\_6y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_6y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2513](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2513)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2513](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2513)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -108,4 +108,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2513](https://github.com/
|
|||||||
|
|
||||||
> **\_8y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_8y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2514](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2514)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2514](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2514)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: \_10y1m1w1y2y3m3y4y5y6m6y8yPattern3
|
# Interface: \_10y1m1w1y2y3m3y4y5y6m6y8yPattern3
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2384](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2384)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2384](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2384)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2384](https://github.com/
|
|||||||
|
|
||||||
> **\_10y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_10y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2385](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2385)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2385](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2385)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2385](https://github.com/
|
|||||||
|
|
||||||
> **\_1m**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_1m**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2386](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2386)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2386](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2386)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2386](https://github.com/
|
|||||||
|
|
||||||
> **\_1w**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_1w**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2387](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2387)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2387](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2387)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2387](https://github.com/
|
|||||||
|
|
||||||
> **\_1y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_1y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2388](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2388)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2388](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2388)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2388](https://github.com/
|
|||||||
|
|
||||||
> **\_2y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_2y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2389](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2389)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2389](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2389)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2389](https://github.com/
|
|||||||
|
|
||||||
> **\_3m**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_3m**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2390](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2390)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2390](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2390)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2390](https://github.com/
|
|||||||
|
|
||||||
> **\_3y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_3y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2391](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2391)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2391](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2391)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2391](https://github.com/
|
|||||||
|
|
||||||
> **\_4y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_4y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2392](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2392)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2392](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2392)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2392](https://github.com/
|
|||||||
|
|
||||||
> **\_5y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_5y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2393](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2393)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2393](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2393)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2393](https://github.com/
|
|||||||
|
|
||||||
> **\_6m**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_6m**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2394](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2394)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2394](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2394)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2394](https://github.com/
|
|||||||
|
|
||||||
> **\_6y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_6y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2395](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2395)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2395](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2395)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -102,4 +102,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2395](https://github.com/
|
|||||||
|
|
||||||
> **\_8y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_8y**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2396](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2396)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2396](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2396)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: \_10y2y3y4y5y6y8yPattern
|
# Interface: \_10y2y3y4y5y6y8yPattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2832](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2832)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2832](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2832)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2832](https://github.com/
|
|||||||
|
|
||||||
> **\_10y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **\_10y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2833](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2833)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2833](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2833)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2833](https://github.com/
|
|||||||
|
|
||||||
> **\_2y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **\_2y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2834](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2834)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2834](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2834)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2834](https://github.com/
|
|||||||
|
|
||||||
> **\_3y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **\_3y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2835](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2835)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2835](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2835)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2835](https://github.com/
|
|||||||
|
|
||||||
> **\_4y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **\_4y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2836](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2836)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2836](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2836)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2836](https://github.com/
|
|||||||
|
|
||||||
> **\_5y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **\_5y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2837](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2837)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2837](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2837)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2837](https://github.com/
|
|||||||
|
|
||||||
> **\_6y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **\_6y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2838](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2838)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2838](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2838)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,4 +62,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2838](https://github.com/
|
|||||||
|
|
||||||
> **\_8y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **\_8y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2839](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2839)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2839](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2839)
|
||||||
|
|||||||
+16
-16
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: \_1m1w1y24hBlocksCoinbaseDaysDominanceFeeSubsidyPattern
|
# Interface: \_1m1w1y24hBlocksCoinbaseDaysDominanceFeeSubsidyPattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2298](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2298)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2298](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2298)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2298](https://github.com/
|
|||||||
|
|
||||||
> **\_1mBlocksMined**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **\_1mBlocksMined**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2299](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2299)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2299](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2299)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2299](https://github.com/
|
|||||||
|
|
||||||
> **\_1mDominance**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **\_1mDominance**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2300](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2300)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2300](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2300)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2300](https://github.com/
|
|||||||
|
|
||||||
> **\_1wBlocksMined**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **\_1wBlocksMined**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2301](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2301)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2301](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2301)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2301](https://github.com/
|
|||||||
|
|
||||||
> **\_1wDominance**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **\_1wDominance**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2302](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2302)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2302](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2302)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2302](https://github.com/
|
|||||||
|
|
||||||
> **\_1yBlocksMined**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **\_1yBlocksMined**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2303](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2303)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2303](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2303)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2303](https://github.com/
|
|||||||
|
|
||||||
> **\_1yDominance**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **\_1yDominance**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2304](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2304)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2304](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2304)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2304](https://github.com/
|
|||||||
|
|
||||||
> **\_24hBlocksMined**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **\_24hBlocksMined**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2305](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2305)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2305](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2305)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2305](https://github.com/
|
|||||||
|
|
||||||
> **\_24hDominance**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **\_24hDominance**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2306](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2306)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2306](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2306)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2306](https://github.com/
|
|||||||
|
|
||||||
> **blocksMined**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **blocksMined**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2307](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2307)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2307](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2307)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2307](https://github.com/
|
|||||||
|
|
||||||
> **blocksSinceBlock**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **blocksSinceBlock**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2308](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2308)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2308](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2308)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2308](https://github.com/
|
|||||||
|
|
||||||
> **coinbase**: [`BitcoinDollarsSatsPattern6`](BitcoinDollarsSatsPattern6.md)
|
> **coinbase**: [`BitcoinDollarsSatsPattern6`](BitcoinDollarsSatsPattern6.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2309](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2309)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2309](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2309)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2309](https://github.com/
|
|||||||
|
|
||||||
> **daysSinceBlock**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **daysSinceBlock**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2310](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2310)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2310](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2310)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2310](https://github.com/
|
|||||||
|
|
||||||
> **dominance**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **dominance**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2311](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2311)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2311](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2311)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2311](https://github.com/
|
|||||||
|
|
||||||
> **fee**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
> **fee**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2312](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2312)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2312](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2312)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -126,4 +126,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2312](https://github.com/
|
|||||||
|
|
||||||
> **subsidy**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
> **subsidy**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2313](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2313)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2313](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2313)
|
||||||
|
|||||||
+13
-13
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: \_201520162017201820192020202120222023202420252026Pattern2\<T\>
|
# Interface: \_201520162017201820192020202120222023202420252026Pattern2\<T\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2543](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2543)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2543](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2543)
|
||||||
|
|
||||||
## Type Parameters
|
## Type Parameters
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2543](https://github.com/
|
|||||||
|
|
||||||
> **\_2015**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2015**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2544](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2544)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2544](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2544)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2544](https://github.com/
|
|||||||
|
|
||||||
> **\_2016**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2016**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2545](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2545)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2545](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2545)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2545](https://github.com/
|
|||||||
|
|
||||||
> **\_2017**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2017**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2546](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2546)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2546](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2546)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2546](https://github.com/
|
|||||||
|
|
||||||
> **\_2018**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2018**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2547](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2547)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2547](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2547)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2547](https://github.com/
|
|||||||
|
|
||||||
> **\_2019**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2019**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2548](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2548)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2548](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2548)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2548](https://github.com/
|
|||||||
|
|
||||||
> **\_2020**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2020**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2549](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2549)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2549](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2549)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2549](https://github.com/
|
|||||||
|
|
||||||
> **\_2021**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2021**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2550](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2550)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2550](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2550)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2550](https://github.com/
|
|||||||
|
|
||||||
> **\_2022**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2022**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2551](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2551)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2551](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2551)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2551](https://github.com/
|
|||||||
|
|
||||||
> **\_2023**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2023**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2552](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2552)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2552](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2552)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2552](https://github.com/
|
|||||||
|
|
||||||
> **\_2024**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2024**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2553](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2553)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2553](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2553)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2553](https://github.com/
|
|||||||
|
|
||||||
> **\_2025**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2025**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2554](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2554)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2554](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2554)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -108,4 +108,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2554](https://github.com/
|
|||||||
|
|
||||||
> **\_2026**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
> **\_2026**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2555](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2555)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2555](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2555)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: \_30dCountPattern
|
# Interface: \_30dCountPattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3309](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3309)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3309](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3309)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3309](https://github.com/
|
|||||||
|
|
||||||
> **\_30dChange**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **\_30dChange**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3310](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3310)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3310](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3310)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,4 +22,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3310](https://github.com/
|
|||||||
|
|
||||||
> **count**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **count**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3311](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3311)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3311](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3311)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: \_30dHalvedTotalPattern
|
# Interface: \_30dHalvedTotalPattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3162](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3162)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3162](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3162)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3162](https://github.com/
|
|||||||
|
|
||||||
> **\_30dChange**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **\_30dChange**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3163](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3163)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3163](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3163)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3163](https://github.com/
|
|||||||
|
|
||||||
> **halved**: [`BitcoinDollarsSatsPattern4`](BitcoinDollarsSatsPattern4.md)
|
> **halved**: [`BitcoinDollarsSatsPattern4`](BitcoinDollarsSatsPattern4.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3164](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3164)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3164](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3164)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,4 +30,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3164](https://github.com/
|
|||||||
|
|
||||||
> **total**: [`BitcoinDollarsSatsPattern4`](BitcoinDollarsSatsPattern4.md)
|
> **total**: [`BitcoinDollarsSatsPattern4`](BitcoinDollarsSatsPattern4.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3165](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3165)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3165](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3165)
|
||||||
|
|||||||
+10
-10
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: ActivityAddrCostOutputsRealizedRelativeSupplyUnrealizedPattern
|
# Interface: ActivityAddrCostOutputsRealizedRelativeSupplyUnrealizedPattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2696](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2696)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2696](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2696)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2696](https://github.com/
|
|||||||
|
|
||||||
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2697](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2697)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2697](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2697)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2697](https://github.com/
|
|||||||
|
|
||||||
> **addrCount**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **addrCount**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2698](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2698)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2698](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2698)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2698](https://github.com/
|
|||||||
|
|
||||||
> **addrCount30dChange**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **addrCount30dChange**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2699](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2699)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2699](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2699)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2699](https://github.com/
|
|||||||
|
|
||||||
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2700](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2700)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2700](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2700)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2700](https://github.com/
|
|||||||
|
|
||||||
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2701](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2701)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2701](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2701)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2701](https://github.com/
|
|||||||
|
|
||||||
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern.md)
|
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2702](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2702)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2702](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2702)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2702](https://github.com/
|
|||||||
|
|
||||||
> **relative**: [`InvestedNegNetNuplSupplyUnrealizedPattern`](InvestedNegNetNuplSupplyUnrealizedPattern.md)
|
> **relative**: [`InvestedNegNetNuplSupplyUnrealizedPattern`](InvestedNegNetNuplSupplyUnrealizedPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2703](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2703)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2703](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2703)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2703](https://github.com/
|
|||||||
|
|
||||||
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2704](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2704)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2704](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2704)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -78,4 +78,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2704](https://github.com/
|
|||||||
|
|
||||||
> **unrealized**: [`GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern.md)
|
> **unrealized**: [`GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2705](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2705)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2705](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2705)
|
||||||
|
|||||||
+8
-8
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern
|
# Interface: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2861](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2861)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2861](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2861)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2861](https://github.com/
|
|||||||
|
|
||||||
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2862](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2862)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2862](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2862)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2862](https://github.com/
|
|||||||
|
|
||||||
> **costBasis**: [`InvestedMaxMinPercentilesSpotPattern`](InvestedMaxMinPercentilesSpotPattern.md)
|
> **costBasis**: [`InvestedMaxMinPercentilesSpotPattern`](InvestedMaxMinPercentilesSpotPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2863](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2863)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2863](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2863)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2863](https://github.com/
|
|||||||
|
|
||||||
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2864](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2864)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2864](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2864)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2864](https://github.com/
|
|||||||
|
|
||||||
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern2`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern2.md)
|
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern2`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2865](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2865)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2865](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2865)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2865](https://github.com/
|
|||||||
|
|
||||||
> **relative**: [`InvestedNegNetSupplyUnrealizedPattern`](InvestedNegNetSupplyUnrealizedPattern.md)
|
> **relative**: [`InvestedNegNetSupplyUnrealizedPattern`](InvestedNegNetSupplyUnrealizedPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2866](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2866)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2866](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2866)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2866](https://github.com/
|
|||||||
|
|
||||||
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2867](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2867)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2867](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2867)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,4 +62,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2867](https://github.com/
|
|||||||
|
|
||||||
> **unrealized**: [`GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern.md)
|
> **unrealized**: [`GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2868](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2868)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2868](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2868)
|
||||||
|
|||||||
+8
-8
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern3
|
# Interface: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern3
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2977](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2977)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2977](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2977)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2977](https://github.com/
|
|||||||
|
|
||||||
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2978](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2978)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2978](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2978)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2978](https://github.com/
|
|||||||
|
|
||||||
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2979](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2979)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2979](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2979)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2979](https://github.com/
|
|||||||
|
|
||||||
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2980](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2980)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2980](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2980)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2980](https://github.com/
|
|||||||
|
|
||||||
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern.md)
|
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2981](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2981)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2981](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2981)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2981](https://github.com/
|
|||||||
|
|
||||||
> **relative**: [`InvestedSupplyPattern`](InvestedSupplyPattern.md)
|
> **relative**: [`InvestedSupplyPattern`](InvestedSupplyPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2982](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2982)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2982](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2982)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2982](https://github.com/
|
|||||||
|
|
||||||
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2983](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2983)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2983](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2983)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,4 +62,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2983](https://github.com/
|
|||||||
|
|
||||||
> **unrealized**: [`GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern.md)
|
> **unrealized**: [`GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2984](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2984)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2984](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2984)
|
||||||
|
|||||||
+8
-8
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern4
|
# Interface: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern4
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2919](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2919)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2919](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2919)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2919](https://github.com/
|
|||||||
|
|
||||||
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2920](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2920)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2920](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2920)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2920](https://github.com/
|
|||||||
|
|
||||||
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2921](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2921)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2921](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2921)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2921](https://github.com/
|
|||||||
|
|
||||||
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2922](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2922)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2922](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2922)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2922](https://github.com/
|
|||||||
|
|
||||||
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern.md)
|
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2923](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2923)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2923](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2923)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2923](https://github.com/
|
|||||||
|
|
||||||
> **relative**: [`InvestedNegNetNuplSupplyUnrealizedPattern`](InvestedNegNetNuplSupplyUnrealizedPattern.md)
|
> **relative**: [`InvestedNegNetNuplSupplyUnrealizedPattern`](InvestedNegNetNuplSupplyUnrealizedPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2924](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2924)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2924](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2924)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2924](https://github.com/
|
|||||||
|
|
||||||
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2925](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2925)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2925](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2925)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,4 +62,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2925](https://github.com/
|
|||||||
|
|
||||||
> **unrealized**: [`GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern.md)
|
> **unrealized**: [`GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2926](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2926)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2926](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2926)
|
||||||
|
|||||||
+8
-8
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern5
|
# Interface: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern5
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2890](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2890)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2890](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2890)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2890](https://github.com/
|
|||||||
|
|
||||||
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2891](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2891)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2891](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2891)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2891](https://github.com/
|
|||||||
|
|
||||||
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2892](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2892)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2892](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2892)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2892](https://github.com/
|
|||||||
|
|
||||||
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2893](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2893)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2893](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2893)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2893](https://github.com/
|
|||||||
|
|
||||||
> **realized**: [`AdjustedCapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern2`](AdjustedCapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern2.md)
|
> **realized**: [`AdjustedCapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern2`](AdjustedCapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2894](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2894)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2894](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2894)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2894](https://github.com/
|
|||||||
|
|
||||||
> **relative**: [`InvestedNegNetNuplSupplyUnrealizedPattern3`](InvestedNegNetNuplSupplyUnrealizedPattern3.md)
|
> **relative**: [`InvestedNegNetNuplSupplyUnrealizedPattern3`](InvestedNegNetNuplSupplyUnrealizedPattern3.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2895](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2895)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2895](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2895)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2895](https://github.com/
|
|||||||
|
|
||||||
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2896](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2896)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2896](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2896)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,4 +62,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2896](https://github.com/
|
|||||||
|
|
||||||
> **unrealized**: [`GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern.md)
|
> **unrealized**: [`GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2897](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2897)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2897](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2897)
|
||||||
|
|||||||
+8
-8
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern6
|
# Interface: ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern6
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2948](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2948)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2948](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2948)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2948](https://github.com/
|
|||||||
|
|
||||||
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2949](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2949)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2949](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2949)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2949](https://github.com/
|
|||||||
|
|
||||||
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2950](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2950)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2950](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2950)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2950](https://github.com/
|
|||||||
|
|
||||||
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2951](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2951)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2951](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2951)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2951](https://github.com/
|
|||||||
|
|
||||||
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern.md)
|
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2952](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2952)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2952](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2952)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2952](https://github.com/
|
|||||||
|
|
||||||
> **relative**: [`InvestedNegNetNuplSupplyUnrealizedPattern3`](InvestedNegNetNuplSupplyUnrealizedPattern3.md)
|
> **relative**: [`InvestedNegNetNuplSupplyUnrealizedPattern3`](InvestedNegNetNuplSupplyUnrealizedPattern3.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2953](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2953)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2953](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2953)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2953](https://github.com/
|
|||||||
|
|
||||||
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2954](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2954)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2954](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2954)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,4 +62,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2954](https://github.com/
|
|||||||
|
|
||||||
> **unrealized**: [`GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern.md)
|
> **unrealized**: [`GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainPeakSupplyTotalUnrealizedPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2955](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2955)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2955](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2955)
|
||||||
|
|||||||
+7
-7
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: ActivityCostOutputsRealizedSupplyUnrealizedPattern
|
# Interface: ActivityCostOutputsRealizedSupplyUnrealizedPattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3006](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3006)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3006](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3006)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3006](https://github.com/
|
|||||||
|
|
||||||
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
> **activity**: [`CoinblocksCoindaysSatblocksSatdaysSentPattern`](CoinblocksCoindaysSatblocksSatdaysSentPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3007](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3007)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3007](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3007)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3007](https://github.com/
|
|||||||
|
|
||||||
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
> **costBasis**: [`MaxMinPattern`](MaxMinPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3008](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3008)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3008](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3008)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3008](https://github.com/
|
|||||||
|
|
||||||
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
> **outputs**: [`UtxoPattern`](UtxoPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3009](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3009)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3009](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3009)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3009](https://github.com/
|
|||||||
|
|
||||||
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern.md)
|
> **realized**: [`CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern`](CapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3010](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3010)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3010](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3010)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3010](https://github.com/
|
|||||||
|
|
||||||
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
> **supply**: [`_30dHalvedTotalPattern`](30dHalvedTotalPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3011](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3011)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3011](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3011)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,4 +54,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3011](https://github.com/
|
|||||||
|
|
||||||
> **unrealized**: [`GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern.md)
|
> **unrealized**: [`GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern`](GreedInvestedInvestorNegNetPainSupplyTotalUnrealizedPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3012](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3012)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3012](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3012)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AddressChainStats
|
# Interface: AddressChainStats
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:16](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L16)
|
Defined in: [Developer/brk/modules/brk-client/index.js:16](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L16)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:16](https://github.com/bi
|
|||||||
|
|
||||||
> **fundedTxoCount**: `number`
|
> **fundedTxoCount**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:17](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L17)
|
Defined in: [Developer/brk/modules/brk-client/index.js:17](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L17)
|
||||||
|
|
||||||
Total number of transaction outputs that funded this address
|
Total number of transaction outputs that funded this address
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ Total number of transaction outputs that funded this address
|
|||||||
|
|
||||||
> **fundedTxoSum**: `number`
|
> **fundedTxoSum**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:18](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L18)
|
Defined in: [Developer/brk/modules/brk-client/index.js:18](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L18)
|
||||||
|
|
||||||
Total amount in satoshis received by this address across all funded outputs
|
Total amount in satoshis received by this address across all funded outputs
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ Total amount in satoshis received by this address across all funded outputs
|
|||||||
|
|
||||||
> **spentTxoCount**: `number`
|
> **spentTxoCount**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:19](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L19)
|
Defined in: [Developer/brk/modules/brk-client/index.js:19](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L19)
|
||||||
|
|
||||||
Total number of transaction outputs spent from this address
|
Total number of transaction outputs spent from this address
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ Total number of transaction outputs spent from this address
|
|||||||
|
|
||||||
> **spentTxoSum**: `number`
|
> **spentTxoSum**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:20](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L20)
|
Defined in: [Developer/brk/modules/brk-client/index.js:20](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L20)
|
||||||
|
|
||||||
Total amount in satoshis spent from this address
|
Total amount in satoshis spent from this address
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Total amount in satoshis spent from this address
|
|||||||
|
|
||||||
> **txCount**: `number`
|
> **txCount**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:21](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L21)
|
Defined in: [Developer/brk/modules/brk-client/index.js:21](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L21)
|
||||||
|
|
||||||
Total number of confirmed transactions involving this address
|
Total number of confirmed transactions involving this address
|
||||||
|
|
||||||
@@ -64,6 +64,6 @@ Total number of confirmed transactions involving this address
|
|||||||
|
|
||||||
> **typeIndex**: `number`
|
> **typeIndex**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:22](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L22)
|
Defined in: [Developer/brk/modules/brk-client/index.js:22](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L22)
|
||||||
|
|
||||||
Index of this address within its type on the blockchain
|
Index of this address within its type on the blockchain
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AddressMempoolStats
|
# Interface: AddressMempoolStats
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:29](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L29)
|
Defined in: [Developer/brk/modules/brk-client/index.js:29](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L29)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:29](https://github.com/bi
|
|||||||
|
|
||||||
> **fundedTxoCount**: `number`
|
> **fundedTxoCount**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:30](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L30)
|
Defined in: [Developer/brk/modules/brk-client/index.js:30](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L30)
|
||||||
|
|
||||||
Number of unconfirmed transaction outputs funding this address
|
Number of unconfirmed transaction outputs funding this address
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ Number of unconfirmed transaction outputs funding this address
|
|||||||
|
|
||||||
> **fundedTxoSum**: `number`
|
> **fundedTxoSum**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:31](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L31)
|
Defined in: [Developer/brk/modules/brk-client/index.js:31](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L31)
|
||||||
|
|
||||||
Total amount in satoshis being received in unconfirmed transactions
|
Total amount in satoshis being received in unconfirmed transactions
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ Total amount in satoshis being received in unconfirmed transactions
|
|||||||
|
|
||||||
> **spentTxoCount**: `number`
|
> **spentTxoCount**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:32](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L32)
|
Defined in: [Developer/brk/modules/brk-client/index.js:32](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L32)
|
||||||
|
|
||||||
Number of unconfirmed transaction inputs spending from this address
|
Number of unconfirmed transaction inputs spending from this address
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ Number of unconfirmed transaction inputs spending from this address
|
|||||||
|
|
||||||
> **spentTxoSum**: `number`
|
> **spentTxoSum**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:33](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L33)
|
Defined in: [Developer/brk/modules/brk-client/index.js:33](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L33)
|
||||||
|
|
||||||
Total amount in satoshis being spent in unconfirmed transactions
|
Total amount in satoshis being spent in unconfirmed transactions
|
||||||
|
|
||||||
@@ -54,6 +54,6 @@ Total amount in satoshis being spent in unconfirmed transactions
|
|||||||
|
|
||||||
> **txCount**: `number`
|
> **txCount**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:34](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L34)
|
Defined in: [Developer/brk/modules/brk-client/index.js:34](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L34)
|
||||||
|
|
||||||
Number of unconfirmed transactions involving this address
|
Number of unconfirmed transactions involving this address
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AddressParam
|
# Interface: AddressParam
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:37](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L37)
|
Defined in: [Developer/brk/modules/brk-client/index.js:37](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L37)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,4 +14,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:37](https://github.com/bi
|
|||||||
|
|
||||||
> **address**: `string`
|
> **address**: `string`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:38](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L38)
|
Defined in: [Developer/brk/modules/brk-client/index.js:38](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L38)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AddressStats
|
# Interface: AddressStats
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:43](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L43)
|
Defined in: [Developer/brk/modules/brk-client/index.js:43](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L43)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:43](https://github.com/bi
|
|||||||
|
|
||||||
> **address**: `string`
|
> **address**: `string`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:44](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L44)
|
Defined in: [Developer/brk/modules/brk-client/index.js:44](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L44)
|
||||||
|
|
||||||
Bitcoin address string
|
Bitcoin address string
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ Bitcoin address string
|
|||||||
|
|
||||||
> **chainStats**: [`AddressChainStats`](AddressChainStats.md)
|
> **chainStats**: [`AddressChainStats`](AddressChainStats.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:45](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L45)
|
Defined in: [Developer/brk/modules/brk-client/index.js:45](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L45)
|
||||||
|
|
||||||
Statistics for confirmed transactions on the blockchain
|
Statistics for confirmed transactions on the blockchain
|
||||||
|
|
||||||
@@ -34,6 +34,6 @@ Statistics for confirmed transactions on the blockchain
|
|||||||
|
|
||||||
> `optional` **mempoolStats**: [`AddressMempoolStats`](AddressMempoolStats.md) \| `null`
|
> `optional` **mempoolStats**: [`AddressMempoolStats`](AddressMempoolStats.md) \| `null`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:46](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L46)
|
Defined in: [Developer/brk/modules/brk-client/index.js:46](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L46)
|
||||||
|
|
||||||
Statistics for unconfirmed transactions in the mempool
|
Statistics for unconfirmed transactions in the mempool
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AddressTxidsParam
|
# Interface: AddressTxidsParam
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:49](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L49)
|
Defined in: [Developer/brk/modules/brk-client/index.js:49](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L49)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:49](https://github.com/bi
|
|||||||
|
|
||||||
> `optional` **afterTxid**: `string` \| `null`
|
> `optional` **afterTxid**: `string` \| `null`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:50](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L50)
|
Defined in: [Developer/brk/modules/brk-client/index.js:50](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L50)
|
||||||
|
|
||||||
Txid to paginate from (return transactions before this one)
|
Txid to paginate from (return transactions before this one)
|
||||||
|
|
||||||
@@ -24,6 +24,6 @@ Txid to paginate from (return transactions before this one)
|
|||||||
|
|
||||||
> `optional` **limit**: `number`
|
> `optional` **limit**: `number`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:51](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L51)
|
Defined in: [Developer/brk/modules/brk-client/index.js:51](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L51)
|
||||||
|
|
||||||
Maximum number of results to return. Defaults to 25 if not specified.
|
Maximum number of results to return. Defaults to 25 if not specified.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AddressValidation
|
# Interface: AddressValidation
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:56](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L56)
|
Defined in: [Developer/brk/modules/brk-client/index.js:56](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L56)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:56](https://github.com/bi
|
|||||||
|
|
||||||
> `optional` **address**: `string` \| `null`
|
> `optional` **address**: `string` \| `null`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:58](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L58)
|
Defined in: [Developer/brk/modules/brk-client/index.js:58](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L58)
|
||||||
|
|
||||||
The validated address
|
The validated address
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ The validated address
|
|||||||
|
|
||||||
> `optional` **isscript**: `boolean` \| `null`
|
> `optional` **isscript**: `boolean` \| `null`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:60](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L60)
|
Defined in: [Developer/brk/modules/brk-client/index.js:60](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L60)
|
||||||
|
|
||||||
Whether this is a script address (P2SH)
|
Whether this is a script address (P2SH)
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ Whether this is a script address (P2SH)
|
|||||||
|
|
||||||
> **isvalid**: `boolean`
|
> **isvalid**: `boolean`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:57](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L57)
|
Defined in: [Developer/brk/modules/brk-client/index.js:57](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L57)
|
||||||
|
|
||||||
Whether the address is valid
|
Whether the address is valid
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ Whether the address is valid
|
|||||||
|
|
||||||
> `optional` **iswitness**: `boolean` \| `null`
|
> `optional` **iswitness**: `boolean` \| `null`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:61](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L61)
|
Defined in: [Developer/brk/modules/brk-client/index.js:61](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L61)
|
||||||
|
|
||||||
Whether this is a witness address
|
Whether this is a witness address
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Whether this is a witness address
|
|||||||
|
|
||||||
> `optional` **scriptPubKey**: `string` \| `null`
|
> `optional` **scriptPubKey**: `string` \| `null`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:59](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L59)
|
Defined in: [Developer/brk/modules/brk-client/index.js:59](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L59)
|
||||||
|
|
||||||
The scriptPubKey in hex
|
The scriptPubKey in hex
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ The scriptPubKey in hex
|
|||||||
|
|
||||||
> `optional` **witnessProgram**: `string` \| `null`
|
> `optional` **witnessProgram**: `string` \| `null`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:63](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L63)
|
Defined in: [Developer/brk/modules/brk-client/index.js:63](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L63)
|
||||||
|
|
||||||
Witness program in hex
|
Witness program in hex
|
||||||
|
|
||||||
@@ -74,6 +74,6 @@ Witness program in hex
|
|||||||
|
|
||||||
> `optional` **witnessVersion**: `number` \| `null`
|
> `optional` **witnessVersion**: `number` \| `null`
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:62](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L62)
|
Defined in: [Developer/brk/modules/brk-client/index.js:62](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L62)
|
||||||
|
|
||||||
Witness version (0 for P2WPKH/P2WSH, 1 for P2TR)
|
Witness version (0 for P2WPKH/P2WSH, 1 for P2TR)
|
||||||
|
|||||||
+56
-56
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AdjustedCapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern
|
# Interface: AdjustedCapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1441](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1441)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1441](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1441)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1441](https://github.com/
|
|||||||
|
|
||||||
> **adjustedSopr**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **adjustedSopr**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1442](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1442)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1442](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1442)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1442](https://github.com/
|
|||||||
|
|
||||||
> **adjustedSopr30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **adjustedSopr30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1443](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1443)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1443](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1443)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1443](https://github.com/
|
|||||||
|
|
||||||
> **adjustedSopr7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **adjustedSopr7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1444](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1444)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1444](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1444)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1444](https://github.com/
|
|||||||
|
|
||||||
> **adjustedValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **adjustedValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1445](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1445)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1445](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1445)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1445](https://github.com/
|
|||||||
|
|
||||||
> **adjustedValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **adjustedValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1446](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1446)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1446](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1446)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1446](https://github.com/
|
|||||||
|
|
||||||
> **capitulationFlow**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **capitulationFlow**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1448](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1448)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1448](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1448)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1448](https://github.com/
|
|||||||
|
|
||||||
> **capRaw**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
> **capRaw**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1447](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1447)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1447](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1447)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1447](https://github.com/
|
|||||||
|
|
||||||
> **investorCapRaw**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
> **investorCapRaw**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1449](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1449)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1449](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1449)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1449](https://github.com/
|
|||||||
|
|
||||||
> **investorPrice**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
> **investorPrice**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1450](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1450)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1450](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1450)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1450](https://github.com/
|
|||||||
|
|
||||||
> **investorPriceCents**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **investorPriceCents**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1451](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1451)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1451](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1451)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1451](https://github.com/
|
|||||||
|
|
||||||
> **investorPriceExtra**: [`RatioPattern`](RatioPattern.md)
|
> **investorPriceExtra**: [`RatioPattern`](RatioPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1452](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1452)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1452](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1452)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1452](https://github.com/
|
|||||||
|
|
||||||
> **lossValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **lossValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1453](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1453)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1453](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1453)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1453](https://github.com/
|
|||||||
|
|
||||||
> **lossValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **lossValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1454](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1454)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1454](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1454)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1454](https://github.com/
|
|||||||
|
|
||||||
> **lowerPriceBand**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
> **lowerPriceBand**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1455](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1455)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1455](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1455)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1455](https://github.com/
|
|||||||
|
|
||||||
> **mvrv**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **mvrv**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1456](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1456)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1456](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1456)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1456](https://github.com/
|
|||||||
|
|
||||||
> **negRealizedLoss**: [`CumulativeSumPattern2`](CumulativeSumPattern2.md)\<`number`\>
|
> **negRealizedLoss**: [`CumulativeSumPattern2`](CumulativeSumPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1457](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1457)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1457](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1457)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1457](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnl**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **netRealizedPnl**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1458](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1458)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1458](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1458)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1458](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnl7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **netRealizedPnl7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1459](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1459)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1459](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1459)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1459](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnlCumulative30dDelta**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **netRealizedPnlCumulative30dDelta**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1460](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1460)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1460](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1460)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1460](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnlCumulative30dDeltaRelToMarketCap**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **netRealizedPnlCumulative30dDeltaRelToMarketCap**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1461](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1461)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1461](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1461)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1461](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnlCumulative30dDeltaRelToRealizedCap**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **netRealizedPnlCumulative30dDeltaRelToRealizedCap**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1462](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1462)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1462](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1462)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1462](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnlRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **netRealizedPnlRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1463](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1463)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1463](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1463)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -190,7 +190,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1463](https://github.com/
|
|||||||
|
|
||||||
> **peakRegret**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **peakRegret**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1464](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1464)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1464](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1464)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1464](https://github.com/
|
|||||||
|
|
||||||
> **peakRegretRelToRealizedCap**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **peakRegretRelToRealizedCap**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1465](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1465)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1465](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1465)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1465](https://github.com/
|
|||||||
|
|
||||||
> **profitFlow**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **profitFlow**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1466](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1466)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1466](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1466)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1466](https://github.com/
|
|||||||
|
|
||||||
> **profitValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **profitValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1467](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1467)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1467](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1467)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1467](https://github.com/
|
|||||||
|
|
||||||
> **profitValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **profitValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1468](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1468)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1468](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1468)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -230,7 +230,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1468](https://github.com/
|
|||||||
|
|
||||||
> **realizedCap**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **realizedCap**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1469](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1469)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1469](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1469)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -238,7 +238,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1469](https://github.com/
|
|||||||
|
|
||||||
> **realizedCap30dDelta**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **realizedCap30dDelta**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1470](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1470)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1470](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1470)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1470](https://github.com/
|
|||||||
|
|
||||||
> **realizedCapCents**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **realizedCapCents**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1471](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1471)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1471](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1471)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -254,7 +254,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1471](https://github.com/
|
|||||||
|
|
||||||
> **realizedCapRelToOwnMarketCap**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **realizedCapRelToOwnMarketCap**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1472](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1472)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1472](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1472)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -262,7 +262,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1472](https://github.com/
|
|||||||
|
|
||||||
> **realizedLoss**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **realizedLoss**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1473](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1473)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1473](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1473)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1473](https://github.com/
|
|||||||
|
|
||||||
> **realizedLoss7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **realizedLoss7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1474](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1474)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1474](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1474)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -278,7 +278,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1474](https://github.com/
|
|||||||
|
|
||||||
> **realizedLossRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **realizedLossRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1475](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1475)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1475](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1475)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -286,7 +286,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1475](https://github.com/
|
|||||||
|
|
||||||
> **realizedPrice**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
> **realizedPrice**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1476](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1476)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1476](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1476)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -294,7 +294,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1476](https://github.com/
|
|||||||
|
|
||||||
> **realizedPriceExtra**: [`RatioPattern`](RatioPattern.md)
|
> **realizedPriceExtra**: [`RatioPattern`](RatioPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1477](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1477)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1477](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1477)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -302,7 +302,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1477](https://github.com/
|
|||||||
|
|
||||||
> **realizedProfit**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **realizedProfit**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1478](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1478)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1478](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1478)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -310,7 +310,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1478](https://github.com/
|
|||||||
|
|
||||||
> **realizedProfit7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **realizedProfit7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1479](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1479)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1479](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1479)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -318,7 +318,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1479](https://github.com/
|
|||||||
|
|
||||||
> **realizedProfitRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **realizedProfitRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1480](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1480)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1480](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1480)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -326,7 +326,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1480](https://github.com/
|
|||||||
|
|
||||||
> **realizedProfitToLossRatio**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **realizedProfitToLossRatio**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1481](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1481)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1481](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1481)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -334,7 +334,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1481](https://github.com/
|
|||||||
|
|
||||||
> **realizedValue**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **realizedValue**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1482](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1482)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1482](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1482)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -342,7 +342,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1482](https://github.com/
|
|||||||
|
|
||||||
> **sellSideRiskRatio**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sellSideRiskRatio**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1483](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1483)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1483](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1483)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -350,7 +350,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1483](https://github.com/
|
|||||||
|
|
||||||
> **sellSideRiskRatio30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sellSideRiskRatio30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1484](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1484)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1484](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1484)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -358,7 +358,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1484](https://github.com/
|
|||||||
|
|
||||||
> **sellSideRiskRatio7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sellSideRiskRatio7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1485](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1485)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1485](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1485)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -366,7 +366,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1485](https://github.com/
|
|||||||
|
|
||||||
> **sentInLoss**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
> **sentInLoss**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1486](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1486)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1486](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1486)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -374,7 +374,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1486](https://github.com/
|
|||||||
|
|
||||||
> **sentInLoss14dEma**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **sentInLoss14dEma**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1487](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1487)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1487](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1487)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -382,7 +382,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1487](https://github.com/
|
|||||||
|
|
||||||
> **sentInProfit**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
> **sentInProfit**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1488](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1488)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1488](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1488)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -390,7 +390,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1488](https://github.com/
|
|||||||
|
|
||||||
> **sentInProfit14dEma**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **sentInProfit14dEma**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1489](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1489)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1489](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1489)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -398,7 +398,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1489](https://github.com/
|
|||||||
|
|
||||||
> **sopr**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sopr**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1490](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1490)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1490](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1490)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -406,7 +406,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1490](https://github.com/
|
|||||||
|
|
||||||
> **sopr30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sopr30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1491](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1491)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1491](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1491)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -414,7 +414,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1491](https://github.com/
|
|||||||
|
|
||||||
> **sopr7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sopr7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1492](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1492)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1492](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1492)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -422,7 +422,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1492](https://github.com/
|
|||||||
|
|
||||||
> **totalRealizedPnl**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **totalRealizedPnl**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1493](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1493)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1493](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1493)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -430,7 +430,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1493](https://github.com/
|
|||||||
|
|
||||||
> **upperPriceBand**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
> **upperPriceBand**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1494](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1494)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1494](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1494)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -438,7 +438,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1494](https://github.com/
|
|||||||
|
|
||||||
> **valueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **valueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1495](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1495)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1495](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1495)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -446,4 +446,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1495](https://github.com/
|
|||||||
|
|
||||||
> **valueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **valueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1496](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1496)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1496](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1496)
|
||||||
|
|||||||
+54
-54
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AdjustedCapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern2
|
# Interface: AdjustedCapCapitulationInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprTotalUpperValuePattern2
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1566](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1566)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1566](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1566)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1566](https://github.com/
|
|||||||
|
|
||||||
> **adjustedSopr**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **adjustedSopr**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1567](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1567)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1567](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1567)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1567](https://github.com/
|
|||||||
|
|
||||||
> **adjustedSopr30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **adjustedSopr30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1568](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1568)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1568](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1568)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1568](https://github.com/
|
|||||||
|
|
||||||
> **adjustedSopr7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **adjustedSopr7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1569](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1569)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1569](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1569)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1569](https://github.com/
|
|||||||
|
|
||||||
> **adjustedValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **adjustedValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1570](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1570)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1570](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1570)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1570](https://github.com/
|
|||||||
|
|
||||||
> **adjustedValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **adjustedValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1571](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1571)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1571](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1571)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1571](https://github.com/
|
|||||||
|
|
||||||
> **capitulationFlow**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **capitulationFlow**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1573](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1573)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1573](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1573)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1573](https://github.com/
|
|||||||
|
|
||||||
> **capRaw**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
> **capRaw**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1572](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1572)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1572](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1572)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1572](https://github.com/
|
|||||||
|
|
||||||
> **investorCapRaw**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
> **investorCapRaw**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1574](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1574)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1574](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1574)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1574](https://github.com/
|
|||||||
|
|
||||||
> **investorPrice**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
> **investorPrice**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1575](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1575)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1575](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1575)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1575](https://github.com/
|
|||||||
|
|
||||||
> **investorPriceCents**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **investorPriceCents**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1576](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1576)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1576](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1576)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1576](https://github.com/
|
|||||||
|
|
||||||
> **investorPriceExtra**: [`RatioPattern2`](RatioPattern2.md)
|
> **investorPriceExtra**: [`RatioPattern2`](RatioPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1577](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1577)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1577](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1577)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1577](https://github.com/
|
|||||||
|
|
||||||
> **lossValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **lossValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1578](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1578)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1578](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1578)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1578](https://github.com/
|
|||||||
|
|
||||||
> **lossValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **lossValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1579](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1579)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1579](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1579)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1579](https://github.com/
|
|||||||
|
|
||||||
> **lowerPriceBand**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
> **lowerPriceBand**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1580](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1580)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1580](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1580)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1580](https://github.com/
|
|||||||
|
|
||||||
> **mvrv**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **mvrv**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1581](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1581)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1581](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1581)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1581](https://github.com/
|
|||||||
|
|
||||||
> **negRealizedLoss**: [`CumulativeSumPattern2`](CumulativeSumPattern2.md)\<`number`\>
|
> **negRealizedLoss**: [`CumulativeSumPattern2`](CumulativeSumPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1582](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1582)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1582](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1582)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1582](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnl**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **netRealizedPnl**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1583](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1583)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1583](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1583)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1583](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnl7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **netRealizedPnl7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1584](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1584)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1584](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1584)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1584](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnlCumulative30dDelta**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **netRealizedPnlCumulative30dDelta**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1585](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1585)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1585](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1585)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1585](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnlCumulative30dDeltaRelToMarketCap**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **netRealizedPnlCumulative30dDeltaRelToMarketCap**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1586](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1586)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1586](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1586)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1586](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnlCumulative30dDeltaRelToRealizedCap**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **netRealizedPnlCumulative30dDeltaRelToRealizedCap**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1587](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1587)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1587](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1587)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1587](https://github.com/
|
|||||||
|
|
||||||
> **netRealizedPnlRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **netRealizedPnlRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1588](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1588)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1588](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1588)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -190,7 +190,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1588](https://github.com/
|
|||||||
|
|
||||||
> **peakRegret**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **peakRegret**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1589](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1589)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1589](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1589)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1589](https://github.com/
|
|||||||
|
|
||||||
> **peakRegretRelToRealizedCap**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **peakRegretRelToRealizedCap**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1590](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1590)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1590](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1590)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1590](https://github.com/
|
|||||||
|
|
||||||
> **profitFlow**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **profitFlow**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1591](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1591)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1591](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1591)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1591](https://github.com/
|
|||||||
|
|
||||||
> **profitValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **profitValueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1592](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1592)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1592](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1592)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1592](https://github.com/
|
|||||||
|
|
||||||
> **profitValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **profitValueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1593](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1593)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1593](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1593)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -230,7 +230,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1593](https://github.com/
|
|||||||
|
|
||||||
> **realizedCap**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **realizedCap**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1594](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1594)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1594](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1594)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -238,7 +238,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1594](https://github.com/
|
|||||||
|
|
||||||
> **realizedCap30dDelta**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **realizedCap30dDelta**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1595](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1595)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1595](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1595)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1595](https://github.com/
|
|||||||
|
|
||||||
> **realizedCapCents**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **realizedCapCents**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1596](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1596)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1596](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1596)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -254,7 +254,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1596](https://github.com/
|
|||||||
|
|
||||||
> **realizedLoss**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **realizedLoss**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1597](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1597)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1597](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1597)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -262,7 +262,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1597](https://github.com/
|
|||||||
|
|
||||||
> **realizedLoss7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **realizedLoss7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1598](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1598)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1598](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1598)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1598](https://github.com/
|
|||||||
|
|
||||||
> **realizedLossRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **realizedLossRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1599](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1599)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1599](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1599)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -278,7 +278,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1599](https://github.com/
|
|||||||
|
|
||||||
> **realizedPrice**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
> **realizedPrice**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1600](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1600)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1600](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1600)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -286,7 +286,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1600](https://github.com/
|
|||||||
|
|
||||||
> **realizedPriceExtra**: [`RatioPattern2`](RatioPattern2.md)
|
> **realizedPriceExtra**: [`RatioPattern2`](RatioPattern2.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1601](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1601)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1601](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1601)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -294,7 +294,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1601](https://github.com/
|
|||||||
|
|
||||||
> **realizedProfit**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **realizedProfit**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1602](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1602)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1602](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1602)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -302,7 +302,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1602](https://github.com/
|
|||||||
|
|
||||||
> **realizedProfit7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
> **realizedProfit7dEma**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1603](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1603)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1603](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1603)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -310,7 +310,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1603](https://github.com/
|
|||||||
|
|
||||||
> **realizedProfitRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **realizedProfitRelToRealizedCap**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1604](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1604)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1604](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1604)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -318,7 +318,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1604](https://github.com/
|
|||||||
|
|
||||||
> **realizedValue**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **realizedValue**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1605](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1605)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1605](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1605)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -326,7 +326,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1605](https://github.com/
|
|||||||
|
|
||||||
> **sellSideRiskRatio**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sellSideRiskRatio**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1606](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1606)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1606](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1606)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -334,7 +334,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1606](https://github.com/
|
|||||||
|
|
||||||
> **sellSideRiskRatio30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sellSideRiskRatio30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1607](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1607)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1607](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1607)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -342,7 +342,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1607](https://github.com/
|
|||||||
|
|
||||||
> **sellSideRiskRatio7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sellSideRiskRatio7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1608](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1608)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1608](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1608)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -350,7 +350,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1608](https://github.com/
|
|||||||
|
|
||||||
> **sentInLoss**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
> **sentInLoss**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1609](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1609)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1609](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1609)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -358,7 +358,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1609](https://github.com/
|
|||||||
|
|
||||||
> **sentInLoss14dEma**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **sentInLoss14dEma**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1610](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1610)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1610](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1610)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -366,7 +366,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1610](https://github.com/
|
|||||||
|
|
||||||
> **sentInProfit**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
> **sentInProfit**: [`BitcoinDollarsSatsPattern3`](BitcoinDollarsSatsPattern3.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1611](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1611)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1611](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1611)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -374,7 +374,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1611](https://github.com/
|
|||||||
|
|
||||||
> **sentInProfit14dEma**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
> **sentInProfit14dEma**: [`BitcoinDollarsSatsPattern5`](BitcoinDollarsSatsPattern5.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1612](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1612)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1612](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1612)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -382,7 +382,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1612](https://github.com/
|
|||||||
|
|
||||||
> **sopr**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sopr**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1613](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1613)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1613](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1613)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -390,7 +390,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1613](https://github.com/
|
|||||||
|
|
||||||
> **sopr30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sopr30dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1614](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1614)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1614](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1614)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -398,7 +398,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1614](https://github.com/
|
|||||||
|
|
||||||
> **sopr7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **sopr7dEma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1615](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1615)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1615](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1615)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -406,7 +406,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1615](https://github.com/
|
|||||||
|
|
||||||
> **totalRealizedPnl**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **totalRealizedPnl**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1616](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1616)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1616](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1616)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -414,7 +414,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1616](https://github.com/
|
|||||||
|
|
||||||
> **upperPriceBand**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
> **upperPriceBand**: [`DollarsSatsPattern`](DollarsSatsPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1617](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1617)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1617](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1617)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -422,7 +422,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1617](https://github.com/
|
|||||||
|
|
||||||
> **valueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **valueCreated**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1618](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1618)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1618](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1618)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -430,4 +430,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:1618](https://github.com/
|
|||||||
|
|
||||||
> **valueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **valueDestroyed**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:1619](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L1619)
|
Defined in: [Developer/brk/modules/brk-client/index.js:1619](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L1619)
|
||||||
|
|||||||
+10
-10
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern
|
# Interface: AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2729](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2729)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2729](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2729)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2729](https://github.com/
|
|||||||
|
|
||||||
> **all**: [`_30dCountPattern`](30dCountPattern.md)
|
> **all**: [`_30dCountPattern`](30dCountPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2730](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2730)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2730](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2730)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2730](https://github.com/
|
|||||||
|
|
||||||
> **p2a**: [`_30dCountPattern`](30dCountPattern.md)
|
> **p2a**: [`_30dCountPattern`](30dCountPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2731](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2731)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2731](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2731)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2731](https://github.com/
|
|||||||
|
|
||||||
> **p2pk33**: [`_30dCountPattern`](30dCountPattern.md)
|
> **p2pk33**: [`_30dCountPattern`](30dCountPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2732](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2732)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2732](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2732)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2732](https://github.com/
|
|||||||
|
|
||||||
> **p2pk65**: [`_30dCountPattern`](30dCountPattern.md)
|
> **p2pk65**: [`_30dCountPattern`](30dCountPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2733](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2733)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2733](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2733)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2733](https://github.com/
|
|||||||
|
|
||||||
> **p2pkh**: [`_30dCountPattern`](30dCountPattern.md)
|
> **p2pkh**: [`_30dCountPattern`](30dCountPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2734](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2734)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2734](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2734)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2734](https://github.com/
|
|||||||
|
|
||||||
> **p2sh**: [`_30dCountPattern`](30dCountPattern.md)
|
> **p2sh**: [`_30dCountPattern`](30dCountPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2735](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2735)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2735](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2735)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2735](https://github.com/
|
|||||||
|
|
||||||
> **p2tr**: [`_30dCountPattern`](30dCountPattern.md)
|
> **p2tr**: [`_30dCountPattern`](30dCountPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2736](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2736)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2736](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2736)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2736](https://github.com/
|
|||||||
|
|
||||||
> **p2wpkh**: [`_30dCountPattern`](30dCountPattern.md)
|
> **p2wpkh**: [`_30dCountPattern`](30dCountPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2737](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2737)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2737](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2737)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -78,4 +78,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2737](https://github.com/
|
|||||||
|
|
||||||
> **p2wsh**: [`_30dCountPattern`](30dCountPattern.md)
|
> **p2wsh**: [`_30dCountPattern`](30dCountPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2738](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2738)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2738](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2738)
|
||||||
|
|||||||
+12
-12
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern
|
# Interface: AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2583](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2583)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2583](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2583)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2583](https://github.com/
|
|||||||
|
|
||||||
> **average**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
> **average**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2584](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2584)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2584](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2584)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2584](https://github.com/
|
|||||||
|
|
||||||
> **base**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
> **base**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2585](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2585)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2585](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2585)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2585](https://github.com/
|
|||||||
|
|
||||||
> **cumulative**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
> **cumulative**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2586](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2586)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2586](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2586)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2586](https://github.com/
|
|||||||
|
|
||||||
> **max**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
> **max**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2587](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2587)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2587](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2587)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2587](https://github.com/
|
|||||||
|
|
||||||
> **median**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **median**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2588](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2588)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2588](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2588)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2588](https://github.com/
|
|||||||
|
|
||||||
> **min**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
> **min**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2589](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2589)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2589](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2589)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2589](https://github.com/
|
|||||||
|
|
||||||
> **pct10**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **pct10**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2590](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2590)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2590](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2590)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2590](https://github.com/
|
|||||||
|
|
||||||
> **pct25**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **pct25**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2591](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2591)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2591](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2591)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2591](https://github.com/
|
|||||||
|
|
||||||
> **pct75**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **pct75**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2592](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2592)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2592](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2592)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2592](https://github.com/
|
|||||||
|
|
||||||
> **pct90**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
> **pct90**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2593](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2593)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2593](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2593)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -94,4 +94,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2593](https://github.com/
|
|||||||
|
|
||||||
> **sum**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
> **sum**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2594](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2594)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2594](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2594)
|
||||||
|
|||||||
+12
-12
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2\<T\>
|
# Interface: AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2\<T\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2621](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2621)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2621](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2621)
|
||||||
|
|
||||||
## Type Parameters
|
## Type Parameters
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2621](https://github.com/
|
|||||||
|
|
||||||
> **average**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
> **average**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2622](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2622)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2622](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2622)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2622](https://github.com/
|
|||||||
|
|
||||||
> **base**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **base**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2623](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2623)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2623](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2623)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2623](https://github.com/
|
|||||||
|
|
||||||
> **cumulative**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
> **cumulative**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2624](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2624)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2624](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2624)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2624](https://github.com/
|
|||||||
|
|
||||||
> **max**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
> **max**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2625](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2625)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2625](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2625)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2625](https://github.com/
|
|||||||
|
|
||||||
> **median**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
> **median**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2626](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2626)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2626](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2626)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2626](https://github.com/
|
|||||||
|
|
||||||
> **min**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
> **min**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2627](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2627)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2627](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2627)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2627](https://github.com/
|
|||||||
|
|
||||||
> **pct10**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
> **pct10**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2628](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2628)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2628](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2628)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2628](https://github.com/
|
|||||||
|
|
||||||
> **pct25**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
> **pct25**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2629](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2629)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2629](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2629)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2629](https://github.com/
|
|||||||
|
|
||||||
> **pct75**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
> **pct75**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2630](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2630)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2630](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2630)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2630](https://github.com/
|
|||||||
|
|
||||||
> **pct90**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
> **pct90**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2631](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2631)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2631](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2631)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -100,4 +100,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2631](https://github.com/
|
|||||||
|
|
||||||
> **sum**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
> **sum**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2632](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2632)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2632](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2632)
|
||||||
|
|||||||
+10
-10
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern\<T\>
|
# Interface: AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern\<T\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2798](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2798)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2798](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2798)
|
||||||
|
|
||||||
## Type Parameters
|
## Type Parameters
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2798](https://github.com/
|
|||||||
|
|
||||||
> **average**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
> **average**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2799](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2799)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2799](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2799)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2799](https://github.com/
|
|||||||
|
|
||||||
> **base**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **base**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2800](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2800)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2800](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2800)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2800](https://github.com/
|
|||||||
|
|
||||||
> **max**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
> **max**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2801](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2801)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2801](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2801)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2801](https://github.com/
|
|||||||
|
|
||||||
> **median**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
> **median**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2802](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2802)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2802](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2802)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2802](https://github.com/
|
|||||||
|
|
||||||
> **min**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
> **min**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2803](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2803)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2803](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2803)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2803](https://github.com/
|
|||||||
|
|
||||||
> **pct10**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
> **pct10**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2804](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2804)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2804](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2804)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2804](https://github.com/
|
|||||||
|
|
||||||
> **pct25**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
> **pct25**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2805](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2805)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2805](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2805)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2805](https://github.com/
|
|||||||
|
|
||||||
> **pct75**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
> **pct75**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2806](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2806)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2806](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2806)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -84,4 +84,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2806](https://github.com/
|
|||||||
|
|
||||||
> **pct90**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
> **pct90**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2807](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2807)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2807](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2807)
|
||||||
|
|||||||
+11
-11
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AverageCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2\<T\>
|
# Interface: AverageCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2\<T\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2660](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2660)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2660](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2660)
|
||||||
|
|
||||||
## Type Parameters
|
## Type Parameters
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2660](https://github.com/
|
|||||||
|
|
||||||
> **average**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
> **average**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2661](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2661)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2661](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2661)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2661](https://github.com/
|
|||||||
|
|
||||||
> **cumulative**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
> **cumulative**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2662](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2662)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2662](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2662)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2662](https://github.com/
|
|||||||
|
|
||||||
> **max**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
> **max**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2663](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2663)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2663](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2663)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2663](https://github.com/
|
|||||||
|
|
||||||
> **median**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **median**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2664](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2664)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2664](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2664)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2664](https://github.com/
|
|||||||
|
|
||||||
> **min**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
> **min**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2665](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2665)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2665](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2665)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2665](https://github.com/
|
|||||||
|
|
||||||
> **pct10**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **pct10**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2666](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2666)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2666](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2666)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2666](https://github.com/
|
|||||||
|
|
||||||
> **pct25**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **pct25**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2667](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2667)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2667](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2667)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2667](https://github.com/
|
|||||||
|
|
||||||
> **pct75**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **pct75**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2668](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2668)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2668](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2668)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2668](https://github.com/
|
|||||||
|
|
||||||
> **pct90**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **pct90**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2669](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2669)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2669](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2669)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -92,4 +92,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2669](https://github.com/
|
|||||||
|
|
||||||
> **sum**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
> **sum**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2670](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2670)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2670](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2670)
|
||||||
|
|||||||
+10
-10
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: AverageMaxMedianMinPct10Pct25Pct75Pct90TxindexPattern\<T\>
|
# Interface: AverageMaxMedianMinPct10Pct25Pct75Pct90TxindexPattern\<T\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2763](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2763)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2763](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2763)
|
||||||
|
|
||||||
## Type Parameters
|
## Type Parameters
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2763](https://github.com/
|
|||||||
|
|
||||||
> **average**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
> **average**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2764](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2764)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2764](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2764)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2764](https://github.com/
|
|||||||
|
|
||||||
> **max**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
> **max**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2765](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2765)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2765](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2765)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2765](https://github.com/
|
|||||||
|
|
||||||
> **median**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **median**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2766](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2766)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2766](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2766)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2766](https://github.com/
|
|||||||
|
|
||||||
> **min**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
> **min**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2767](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2767)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2767](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2767)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2767](https://github.com/
|
|||||||
|
|
||||||
> **pct10**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **pct10**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2768](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2768)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2768](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2768)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2768](https://github.com/
|
|||||||
|
|
||||||
> **pct25**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **pct25**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2769](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2769)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2769](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2769)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2769](https://github.com/
|
|||||||
|
|
||||||
> **pct75**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **pct75**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2770](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2770)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2770](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2770)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2770](https://github.com/
|
|||||||
|
|
||||||
> **pct90**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
> **pct90**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2771](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2771)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2771](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2771)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -84,4 +84,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:2771](https://github.com/
|
|||||||
|
|
||||||
> **txindex**: [`MetricPattern27`](../type-aliases/MetricPattern27.md)\<`T`\>
|
> **txindex**: [`MetricPattern27`](../type-aliases/MetricPattern27.md)\<`T`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:2772](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L2772)
|
Defined in: [Developer/brk/modules/brk-client/index.js:2772](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L2772)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: BalanceBothReactivatedReceivingSendingPattern
|
# Interface: BalanceBothReactivatedReceivingSendingPattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3033](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3033)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3033](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3033)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3033](https://github.com/
|
|||||||
|
|
||||||
> **balanceDecreased**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
> **balanceDecreased**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3034](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3034)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3034](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3034)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3034](https://github.com/
|
|||||||
|
|
||||||
> **balanceIncreased**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
> **balanceIncreased**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3035](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3035)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3035](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3035)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3035](https://github.com/
|
|||||||
|
|
||||||
> **both**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
> **both**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3036](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3036)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3036](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3036)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3036](https://github.com/
|
|||||||
|
|
||||||
> **reactivated**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
> **reactivated**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3037](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3037)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3037](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3037)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3037](https://github.com/
|
|||||||
|
|
||||||
> **receiving**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
> **receiving**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3038](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3038)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3038](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3038)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -54,4 +54,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3038](https://github.com/
|
|||||||
|
|
||||||
> **sending**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
> **sending**: [`AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern`](AverageBaseMaxMedianMinPct10Pct25Pct75Pct90Pattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3039](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3039)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3039](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3039)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: BaseCumulativeSumPattern
|
# Interface: BaseCumulativeSumPattern
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3183](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3183)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3183](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3183)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3183](https://github.com/
|
|||||||
|
|
||||||
> **base**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
> **base**: [`MetricPattern11`](../type-aliases/MetricPattern11.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3184](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3184)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3184](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3184)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3184](https://github.com/
|
|||||||
|
|
||||||
> **cumulative**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
> **cumulative**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3185](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3185)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3185](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3185)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,4 +30,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3185](https://github.com/
|
|||||||
|
|
||||||
> **sum**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
> **sum**: [`MetricPattern2`](../type-aliases/MetricPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3186](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3186)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3186](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3186)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: BitcoinDollarsSatsPattern2
|
# Interface: BitcoinDollarsSatsPattern2
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3204](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3204)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3204](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3204)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3204](https://github.com/
|
|||||||
|
|
||||||
> **bitcoin**: [`AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern`](AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern.md)
|
> **bitcoin**: [`AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern`](AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern.md)
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3205](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3205)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3205](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3205)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3205](https://github.com/
|
|||||||
|
|
||||||
> **dollars**: [`AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2`](AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2.md)\<`number`\>
|
> **dollars**: [`AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2`](AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3206](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3206)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3206](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3206)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,4 +30,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3206](https://github.com/
|
|||||||
|
|
||||||
> **sats**: [`AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2`](AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2.md)\<`number`\>
|
> **sats**: [`AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2`](AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3207](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3207)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3207](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3207)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: BitcoinDollarsSatsPattern3
|
# Interface: BitcoinDollarsSatsPattern3
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3288](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3288)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3288](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3288)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3288](https://github.com/
|
|||||||
|
|
||||||
> **bitcoin**: [`CumulativeSumPattern2`](CumulativeSumPattern2.md)\<`number`\>
|
> **bitcoin**: [`CumulativeSumPattern2`](CumulativeSumPattern2.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3289](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3289)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3289](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3289)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3289](https://github.com/
|
|||||||
|
|
||||||
> **dollars**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **dollars**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3290](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3290)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3290](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3290)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,4 +30,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3290](https://github.com/
|
|||||||
|
|
||||||
> **sats**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
> **sats**: [`CumulativeSumPattern`](CumulativeSumPattern.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3291](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3291)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3291](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3291)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
# Interface: BitcoinDollarsSatsPattern4
|
# Interface: BitcoinDollarsSatsPattern4
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3225](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3225)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3225](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3225)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3225](https://github.com/
|
|||||||
|
|
||||||
> **bitcoin**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **bitcoin**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3226](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3226)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3226](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3226)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3226](https://github.com/
|
|||||||
|
|
||||||
> **dollars**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **dollars**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3227](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3227)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3227](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3227)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -30,4 +30,4 @@ Defined in: [Developer/brk/modules/brk-client/index.js:3227](https://github.com/
|
|||||||
|
|
||||||
> **sats**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
> **sats**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
|
||||||
|
|
||||||
Defined in: [Developer/brk/modules/brk-client/index.js:3228](https://github.com/bitcoinresearchkit/brk/blob/ba60b7e4f64e81cffbd4781566a0df0728014881/modules/brk-client/index.js#L3228)
|
Defined in: [Developer/brk/modules/brk-client/index.js:3228](https://github.com/bitcoinresearchkit/brk/blob/4a06caec672337d1974d77b021e6d10711049dbe/modules/brk-client/index.js#L3228)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user