Files
brk/packages/brk_client/brk_client/__init__.py
2026-03-18 21:04:12 +01:00

7507 lines
370 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Auto-generated BRK Python client
# Do not edit manually
from __future__ import annotations
from dataclasses import dataclass
from typing import TypeVar, Generic, Any, Dict, Optional, List, Iterator, Literal, TypedDict, Union, Protocol, overload, Tuple, TYPE_CHECKING
from http.client import HTTPSConnection, HTTPConnection
from urllib.parse import urlparse
from datetime import date, datetime, timedelta, timezone
import json
if TYPE_CHECKING:
import pandas as pd # type: ignore[import-not-found]
import polars as pl # type: ignore[import-not-found]
T = TypeVar('T')
# Type definitions
# Bitcoin address string
Addr = str
# Satoshis
Sats = int
# Index within its type (e.g., 0 for first P2WPKH address)
TypeIndex = int
# Transaction ID (hash)
Txid = str
# Unified index for any address type (funded or empty)
AnyAddrIndex = TypeIndex
# Unsigned basis points stored as u16.
# 1 bp = 0.0001. Range: 06.5535.
# Use for bounded 01 ratios (dominance, adoption, liveliness, etc.).
BasisPoints16 = int
# Unsigned basis points stored as u32.
# 1 bp = 0.0001. Range: 0429,496.7295.
# Use for unbounded unsigned ratios (MVRV, NVT, SOPR, etc.).
BasisPoints32 = int
# Signed basis points stored as i16.
# 1 bp = 0.0001. Range: -3.2767 to +3.2767.
# Use for signed bounded ratios (NUPL, net PnL ratios, etc.).
BasisPointsSigned16 = int
# Signed basis points stored as i32.
# 1 bp = 0.0001. Range: -214,748.3647 to +214,748.3647.
# Use for unbounded signed values (returns, growth rates, volatility, z-scores, etc.).
BasisPointsSigned32 = int
# Bitcoin amount as floating point (1 BTC = 100,000,000 satoshis)
Bitcoin = float
# Position within a .blk file, encoding file index and byte offset
BlkPosition = int
# Block height
Height = int
# UNIX timestamp in seconds
Timestamp = int
# Block hash
BlockHash = str
TxIndex = int
# Transaction or block weight in weight units (WU)
Weight = int
# Unsigned cents (u64) - for values that should never be negative.
# Used for invested capital, realized cap, etc.
Cents = int
# Cents × Sats (u128) - price in cents multiplied by amount in sats.
# Uses u128 because large amounts at any price can overflow u64.
CentsSats = int
# Signed cents (i64) - for values that can be negative.
# Used for profit/loss calculations, deltas, etc.
CentsSigned = int
# Raw cents squared (u128) - stores cents² × sats without division.
# Used for precise accumulation of investor cap values: Σ(price² × sats).
# investor_price = investor_cap_raw / realized_cap_raw
CentsSquaredSats = int
# US Dollar amount as floating point
Dollars = float
# Closing price value for a time period
Close = Dollars
# Cohort identifier for cost basis distribution.
Cohort = str
# Bucket type for cost basis aggregation.
# Options: raw (no aggregation), lin200/lin500/lin1000 (linear $200/$500/$1000),
# log10/log50/log100/log200 (logarithmic with 10/50/100/200 buckets per decade).
CostBasisBucket = Literal["raw", "lin200", "lin500", "lin1000", "log10", "log50", "log100", "log200"]
# Value type for cost basis distribution.
# Options: supply (BTC), realized (USD, price × supply), unrealized (USD, spot × supply).
CostBasisValue = Literal["supply", "realized", "unrealized"]
# Date in YYYYMMDD format stored as u32
Date = int
# Output format for API responses
Format = Literal["json", "csv"]
# Maximum number of results to return. Defaults to 100 if not specified.
Limit = int
# A range boundary: integer index, date, or timestamp.
RangeIndex = Union[int, Date, Timestamp]
Day1 = int
Day3 = int
EmptyAddrIndex = TypeIndex
EmptyOutputIndex = TypeIndex
Epoch = int
# Fee rate in sats/vB
FeeRate = float
FundedAddrIndex = TypeIndex
Halving = int
# Hex-encoded string
Hex = str
# Highest price value for a time period
High = Dollars
Hour1 = int
Hour12 = int
Hour4 = int
# Series name
SeriesName = str
# Lowest price value for a time period
Low = Dollars
# Virtual size in vbytes (weight / 4, rounded up)
VSize = int
Minute10 = int
Minute30 = int
Month1 = int
Month3 = int
Month6 = int
# Opening price value for a time period
Open = Dollars
OpReturnIndex = TypeIndex
OutPoint = int
# Type (P2PKH, P2WPKH, P2SH, P2TR, etc.)
OutputType = Literal["p2pk65", "p2pk33", "p2pkh", "p2ms", "p2sh", "opreturn", "p2wpkh", "p2wsh", "p2tr", "p2a", "empty", "unknown"]
P2AAddrIndex = TypeIndex
U8x2 = List[int]
P2ABytes = U8x2
P2MSOutputIndex = TypeIndex
P2PK33AddrIndex = TypeIndex
U8x33 = List[int]
P2PK33Bytes = U8x33
P2PK65AddrIndex = TypeIndex
U8x65 = List[int]
P2PK65Bytes = U8x65
P2PKHAddrIndex = TypeIndex
U8x20 = List[int]
P2PKHBytes = U8x20
P2SHAddrIndex = TypeIndex
P2SHBytes = U8x20
P2TRAddrIndex = TypeIndex
U8x32 = List[int]
P2TRBytes = U8x32
P2WPKHAddrIndex = TypeIndex
P2WPKHBytes = U8x20
P2WSHAddrIndex = TypeIndex
P2WSHBytes = U8x32
PoolSlug = Literal["unknown", "blockfills", "ultimuspool", "terrapool", "luxor", "onethash", "btccom", "bitfarms", "huobipool", "wayicn", "canoepool", "btctop", "bitcoincom", "pool175btc", "gbminers", "axbt", "asicminer", "bitminter", "bitcoinrussia", "btcserv", "simplecoinus", "btcguild", "eligius", "ozcoin", "eclipsemc", "maxbtc", "triplemining", "coinlab", "pool50btc", "ghashio", "stminingcorp", "bitparking", "mmpool", "polmine", "kncminer", "bitalo", "f2pool", "hhtt", "megabigpower", "mtred", "nmcbit", "yourbtcnet", "givemecoins", "braiinspool", "antpool", "multicoinco", "bcpoolio", "cointerra", "kanopool", "solock", "ckpool", "nicehash", "bitclub", "bitcoinaffiliatenetwork", "btcc", "bwpool", "exxbw", "bitsolo", "bitfury", "twentyoneinc", "digitalbtc", "eightbaochi", "mybtccoinpool", "tbdice", "hashpool", "nexious", "bravomining", "hotpool", "okexpool", "bcmonster", "onehash", "bixin", "tatmaspool", "viabtc", "connectbtc", "batpool", "waterhole", "dcexploration", "dcex", "btpool", "fiftyeightcoin", "bitcoinindia", "shawnp0wers", "phashio", "rigpool", "haozhuzhu", "sevenpool", "miningkings", "hashbx", "dpool", "rawpool", "haominer", "helix", "bitcoinukraine", "poolin", "secretsuperstar", "tigerpoolnet", "sigmapoolcom", "okpooltop", "hummerpool", "tangpool", "bytepool", "spiderpool", "novablock", "miningcity", "binancepool", "minerium", "lubiancom", "okkong", "aaopool", "emcdpool", "foundryusa", "sbicrypto", "arkpool", "purebtccom", "marapool", "kucoinpool", "entrustcharitypool", "okminer", "titan", "pegapool", "btcnuggets", "cloudhashing", "digitalxmintsy", "telco214", "btcpoolparty", "multipool", "transactioncoinmining", "btcdig", "trickysbtcpool", "btcmp", "eobot", "unomp", "patels", "gogreenlight", "bitcoinindiapool", "ekanembtc", "canoe", "tiger", "onem1x", "zulupool", "secpool", "ocean", "whitepool", "wiz", "wk057", "futurebitapollosolo", "carbonnegative", "portlandhodl", "phoenix", "neopool", "maxipool", "bitfufupool", "gdpool", "miningdutch", "publicpool", "miningsquared", "innopolistech", "btclab", "parasite", "redrockpool", "est3lar"]
# Transaction locktime
RawLockTime = int
# Fractional satoshis (f64) - for representing USD prices in sats
#
# Formula: `sats_fract = usd_value * 100_000_000 / btc_price`
#
# When BTC is $100,000:
# - $1 = 1,000 sats
# - $0.001 = 1 sat
# - $0.0001 = 0.1 sats (fractional)
SatsFract = float
# Signed satoshis (i64) - for values that can be negative.
# Used for changes, deltas, profit/loss calculations, etc.
SatsSigned = int
# Version tracking for data schema and computed values.
#
# Used to detect when stored data needs to be recomputed due to changes
# in computation logic or source data versions. Supports validation
# against persisted versions to ensure compatibility.
Version = int
# Comma-separated list of series names
SeriesList = str
StoredBool = bool
# Stored 32-bit floating point value
StoredF32 = float
# Fixed-size 64-bit floating point value optimized for on-disk storage
StoredF64 = float
# Fixed-size 64-bit signed integer optimized for on-disk storage
StoredI64 = int
StoredI8 = int
StoredU16 = int
# Fixed-size 32-bit unsigned integer optimized for on-disk storage
StoredU32 = int
# Fixed-size 64-bit unsigned integer optimized for on-disk storage
StoredU64 = int
# Time period for mining statistics.
#
# Used to specify the lookback window for pool statistics, hashrate calculations,
# and other time-based mining series.
TimePeriod = Literal["24h", "3d", "1w", "1m", "3m", "6m", "1y", "2y", "3y"]
# Index of the output being spent in the previous transaction
Vout = int
# Transaction version number
TxVersion = int
TxInIndex = int
TxOutIndex = int
# Input index in the spending transaction
Vin = int
UnknownOutputIndex = TypeIndex
Week1 = int
Year1 = int
Year10 = int
# Aggregation dimension for querying series. Includes time-based (date, week, month, year),
# block-based (height, tx_index), and address/output type indexes.
Index = Literal["minute10", "minute30", "hour1", "hour4", "hour12", "day1", "day3", "week1", "month1", "month3", "month6", "year1", "year10", "halving", "epoch", "height", "tx_index", "txin_index", "txout_index", "empty_output_index", "op_return_index", "p2a_addr_index", "p2ms_output_index", "p2pk33_addr_index", "p2pk65_addr_index", "p2pkh_addr_index", "p2sh_addr_index", "p2tr_addr_index", "p2wpkh_addr_index", "p2wsh_addr_index", "unknown_output_index", "funded_addr_index", "empty_addr_index"]
# Hierarchical tree node for organizing series into categories
TreeNode = Union[dict[str, "TreeNode"], "SeriesLeafWithSchema"]
class AddrChainStats(TypedDict):
"""
Address statistics on the blockchain (confirmed transactions only)
Based on mempool.space's format with type_index extension.
Attributes:
funded_txo_count: Total number of transaction outputs that funded this address
funded_txo_sum: Total amount in satoshis received by this address across all funded outputs
spent_txo_count: Total number of transaction outputs spent from this address
spent_txo_sum: Total amount in satoshis spent from this address
tx_count: Total number of confirmed transactions involving this address
type_index: Index of this address within its type on the blockchain
"""
funded_txo_count: int
funded_txo_sum: Sats
spent_txo_count: int
spent_txo_sum: Sats
tx_count: int
type_index: TypeIndex
class AddrMempoolStats(TypedDict):
"""
Address statistics in the mempool (unconfirmed transactions only)
Based on mempool.space's format.
Attributes:
funded_txo_count: Number of unconfirmed transaction outputs funding this address
funded_txo_sum: Total amount in satoshis being received in unconfirmed transactions
spent_txo_count: Number of unconfirmed transaction inputs spending from this address
spent_txo_sum: Total amount in satoshis being spent in unconfirmed transactions
tx_count: Number of unconfirmed transactions involving this address
"""
funded_txo_count: int
funded_txo_sum: Sats
spent_txo_count: int
spent_txo_sum: Sats
tx_count: int
class AddrParam(TypedDict):
address: Addr
class AddrStats(TypedDict):
"""
Address information compatible with mempool.space API format
Attributes:
address: Bitcoin address string
chain_stats: Statistics for confirmed transactions on the blockchain
mempool_stats: Statistics for unconfirmed transactions in the mempool
"""
address: Addr
chain_stats: AddrChainStats
mempool_stats: Union[AddrMempoolStats, None]
class AddrTxidsParam(TypedDict):
"""
Attributes:
after_txid: Txid to paginate from (return transactions before this one)
"""
after_txid: Union[Txid, None]
class AddrValidation(TypedDict):
"""
Address validation result
Attributes:
isvalid: Whether the address is valid
address: The validated address
scriptPubKey: The scriptPubKey in hex
isscript: Whether this is a script address (P2SH)
iswitness: Whether this is a witness address
witness_version: Witness version (0 for P2WPKH/P2WSH, 1 for P2TR)
witness_program: Witness program in hex
"""
isvalid: bool
address: Optional[str]
scriptPubKey: Optional[str]
isscript: Optional[bool]
iswitness: Optional[bool]
witness_version: Optional[int]
witness_program: Optional[str]
class BlockCountParam(TypedDict):
"""
Attributes:
block_count: Number of recent blocks to include
"""
block_count: int
class BlockFeesEntry(TypedDict):
"""
A single block fees data point.
"""
avgHeight: Height
timestamp: Timestamp
avgFees: Sats
class BlockHashParam(TypedDict):
hash: BlockHash
class BlockHashStartIndex(TypedDict):
"""
Attributes:
hash: Bitcoin block hash
start_index: Starting transaction index within the block (0-based)
"""
hash: BlockHash
start_index: TxIndex
class BlockHashTxIndex(TypedDict):
"""
Attributes:
hash: Bitcoin block hash
index: Transaction index within the block (0-based)
"""
hash: BlockHash
index: TxIndex
class BlockInfo(TypedDict):
"""
Block information returned by the API
Attributes:
id: Block hash
height: Block height
tx_count: Number of transactions in the block
size: Block size in bytes
weight: Block weight in weight units
timestamp: Block timestamp (Unix time)
difficulty: Block difficulty as a floating point number
"""
id: BlockHash
height: Height
tx_count: int
size: int
weight: Weight
timestamp: Timestamp
difficulty: float
class BlockRewardsEntry(TypedDict):
"""
A single block rewards data point.
"""
avgHeight: int
timestamp: int
avgRewards: int
class BlockSizeEntry(TypedDict):
"""
A single block size data point.
"""
avgHeight: int
timestamp: int
avgSize: int
class BlockWeightEntry(TypedDict):
"""
A single block weight data point.
"""
avgHeight: int
timestamp: int
avgWeight: int
class BlockSizesWeights(TypedDict):
"""
Combined block sizes and weights response.
"""
sizes: List[BlockSizeEntry]
weights: List[BlockWeightEntry]
class BlockStatus(TypedDict):
"""
Block status indicating whether block is in the best chain
Attributes:
in_best_chain: Whether this block is in the best chain
height: Block height (only if in best chain)
next_best: Hash of the next block in the best chain (only if in best chain and not tip)
"""
in_best_chain: bool
height: Union[Height, None]
next_best: Union[BlockHash, None]
class BlockTimestamp(TypedDict):
"""
Block information returned for timestamp queries
Attributes:
height: Block height
hash: Block hash
timestamp: Block timestamp in ISO 8601 format
"""
height: Height
hash: BlockHash
timestamp: str
class CostBasisCohortParam(TypedDict):
"""
Path parameters for cost basis dates endpoint.
"""
cohort: Cohort
class CostBasisParams(TypedDict):
"""
Path parameters for cost basis distribution endpoint.
"""
cohort: Cohort
date: str
class CostBasisQuery(TypedDict):
"""
Query parameters for cost basis distribution endpoint.
Attributes:
bucket: Bucket type for aggregation. Default: raw (no aggregation).
value: Value type to return. Default: supply.
"""
bucket: CostBasisBucket
value: CostBasisValue
class DataRangeFormat(TypedDict):
"""
Data range with output format for API query parameters
Attributes:
start: Inclusive start: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `from`, `f`, `s`
end: Exclusive end: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `to`, `t`, `e`
limit: Maximum number of values to return (ignored if `end` is set). Aliases: `count`, `c`, `l`
format: Format of the output
"""
start: Union[RangeIndex, None]
end: Union[RangeIndex, None]
limit: Union[Limit, None]
format: Format
class SeriesCount(TypedDict):
"""
Series count statistics - distinct series and total series-index combinations
Attributes:
distinct_series: Number of unique series available (e.g., realized_price, market_cap)
total_endpoints: Total number of series-index combinations across all timeframes
lazy_endpoints: Number of lazy (computed on-the-fly) series-index combinations
stored_endpoints: Number of eager (stored on disk) series-index combinations
"""
distinct_series: int
total_endpoints: int
lazy_endpoints: int
stored_endpoints: int
class DetailedSeriesCount(TypedDict):
"""
Detailed series count with per-database breakdown
Attributes:
distinct_series: Number of unique series available (e.g., realized_price, market_cap)
total_endpoints: Total number of series-index combinations across all timeframes
lazy_endpoints: Number of lazy (computed on-the-fly) series-index combinations
stored_endpoints: Number of eager (stored on disk) series-index combinations
by_db: Per-database breakdown of counts
"""
distinct_series: int
total_endpoints: int
lazy_endpoints: int
stored_endpoints: int
by_db: dict[str, SeriesCount]
class DifficultyAdjustment(TypedDict):
"""
Difficulty adjustment information.
Attributes:
progressPercent: Progress through current difficulty epoch (0-100%)
difficultyChange: Estimated difficulty change at next retarget (%)
estimatedRetargetDate: Estimated Unix timestamp of next retarget
remainingBlocks: Blocks remaining until retarget
remainingTime: Estimated seconds until retarget
previousRetarget: Previous difficulty adjustment (%)
nextRetargetHeight: Height of next retarget
timeAvg: Average block time in current epoch (seconds)
adjustedTimeAvg: Time-adjusted average (accounting for timestamp manipulation)
timeOffset: Time offset from expected schedule (seconds)
"""
progressPercent: float
difficultyChange: float
estimatedRetargetDate: int
remainingBlocks: int
remainingTime: int
previousRetarget: float
nextRetargetHeight: Height
timeAvg: int
adjustedTimeAvg: int
timeOffset: int
class DifficultyAdjustmentEntry(TypedDict):
"""
A single difficulty adjustment entry.
Serializes as array: [timestamp, height, difficulty, change_percent]
"""
timestamp: Timestamp
height: Height
difficulty: float
change_percent: float
class DifficultyEntry(TypedDict):
"""
A single difficulty data point.
Attributes:
timestamp: Unix timestamp of the difficulty adjustment.
difficulty: Difficulty value.
height: Block height of the adjustment.
"""
timestamp: Timestamp
difficulty: float
height: Height
class DiskUsage(TypedDict):
"""
Disk usage of the indexed data
Attributes:
brk: Human-readable brk data size (e.g., "48.8 GiB")
brk_bytes: brk data size in bytes
bitcoin: Human-readable Bitcoin blocks directory size
bitcoin_bytes: Bitcoin blocks directory size in bytes
ratio: brk as percentage of Bitcoin data
"""
brk: str
brk_bytes: int
bitcoin: str
bitcoin_bytes: int
ratio: float
class EmptyAddrData(TypedDict):
"""
Data of an empty address
Attributes:
tx_count: Total transaction count
funded_txo_count: Total funded/spent transaction output count (equal since address is empty)
transfered: Total satoshis transferred
"""
tx_count: int
funded_txo_count: int
transfered: Sats
class ErrorDetail(TypedDict):
"""
Attributes:
type: Error category: "invalid_request", "forbidden", "not_found", "unavailable", or "internal"
code: Machine-readable error code (e.g. "invalid_addr", "series_not_found")
message: Human-readable description
doc_url: Link to API documentation
"""
type: str
code: str
message: str
doc_url: str
class ErrorBody(TypedDict):
error: ErrorDetail
class FundedAddrData(TypedDict):
"""
Data for a funded (non-empty) address with current balance
Attributes:
tx_count: Total transaction count
funded_txo_count: Number of transaction outputs funded to this address
spent_txo_count: Number of transaction outputs spent by this address
received: Satoshis received by this address
sent: Satoshis sent by this address
realized_cap_raw: The realized capitalization: Σ(price × sats)
investor_cap_raw: The investor capitalization: Σ(price² × sats)
"""
tx_count: int
funded_txo_count: int
spent_txo_count: int
received: Sats
sent: Sats
realized_cap_raw: CentsSats
investor_cap_raw: CentsSquaredSats
class HashrateEntry(TypedDict):
"""
A single hashrate data point.
Attributes:
timestamp: Unix timestamp.
avgHashrate: Average hashrate (H/s).
"""
timestamp: Timestamp
avgHashrate: int
class HashrateSummary(TypedDict):
"""
Summary of network hashrate and difficulty data.
Attributes:
hashrates: Historical hashrate data points.
difficulty: Historical difficulty adjustments.
currentHashrate: Current network hashrate (H/s).
currentDifficulty: Current network difficulty.
"""
hashrates: List[HashrateEntry]
difficulty: List[DifficultyEntry]
currentHashrate: int
currentDifficulty: float
class Health(TypedDict):
"""
Server health status
Attributes:
started_at: Server start time (ISO 8601)
uptime_seconds: Uptime in seconds
indexed_height: Height of the last indexed block
computed_height: Height of the last computed block (series)
tip_height: Height of the chain tip (from Bitcoin node)
blocks_behind: Number of blocks behind the tip
last_indexed_at: Human-readable timestamp of the last indexed block (ISO 8601)
last_indexed_at_unix: Unix timestamp of the last indexed block
"""
status: str
service: str
version: str
timestamp: str
started_at: str
uptime_seconds: int
indexed_height: Height
computed_height: Height
tip_height: Height
blocks_behind: Height
last_indexed_at: str
last_indexed_at_unix: Timestamp
class HeightParam(TypedDict):
height: Height
class IndexInfo(TypedDict):
"""
Information about an available index and its query aliases
Attributes:
index: The canonical index name
aliases: All Accepted query aliases
"""
index: Index
aliases: List[str]
class LegacySeriesParam(TypedDict):
"""
Legacy path parameter for `/api/metric/{metric}`
"""
metric: SeriesName
class LegacySeriesWithIndex(TypedDict):
"""
Legacy path parameters for `/api/metric/{metric}/{index}`
"""
metric: SeriesName
index: Index
class MempoolBlock(TypedDict):
"""
Block info in a mempool.space like format for fee estimation.
Attributes:
blockSize: Total block size in weight units
blockVSize: Total block virtual size in vbytes
nTx: Number of transactions in the projected block
totalFees: Total fees in satoshis
medianFee: Median fee rate in sat/vB
feeRange: Fee rate range: [min, 10%, 25%, 50%, 75%, 90%, max]
"""
blockSize: int
blockVSize: float
nTx: int
totalFees: Sats
medianFee: FeeRate
feeRange: List[FeeRate]
class MempoolInfo(TypedDict):
"""
Mempool statistics
Attributes:
count: Number of transactions in the mempool
vsize: Total virtual size of all transactions in the mempool (vbytes)
total_fee: Total fees of all transactions in the mempool (satoshis)
"""
count: int
vsize: VSize
total_fee: Sats
class OHLCCents(TypedDict):
"""
OHLC (Open, High, Low, Close) data in cents
"""
open: Open
high: High
low: Low
close: Close
class OHLCDollars(TypedDict):
"""
OHLC (Open, High, Low, Close) data in dollars
"""
open: Open
high: High
low: Low
close: Close
class OHLCSats(TypedDict):
"""
OHLC (Open, High, Low, Close) data in satoshis
"""
open: Open
high: High
low: Low
close: Close
class PaginatedSeries(TypedDict):
"""
A paginated list of available series names (1000 per page)
Attributes:
current_page: Current page number (0-indexed)
max_page: Maximum valid page index (0-indexed)
total_count: Total number of series
per_page: Results per page
has_more: Whether more pages are available after the current one
series: List of series names
"""
current_page: int
max_page: int
total_count: int
per_page: int
has_more: bool
series: List[str]
class Pagination(TypedDict):
"""
Pagination parameters for paginated API endpoints
Attributes:
page: Pagination index
per_page: Results per page (default: 1000, max: 1000)
"""
page: Optional[int]
per_page: Optional[int]
class PoolBlockCounts(TypedDict):
"""
Block counts for different time periods
Attributes:
all: Total blocks mined (all time)
_24h: Blocks mined in last 24 hours
_1w: Blocks mined in last week
"""
all: int
_24h: int
_1w: int
class PoolBlockShares(TypedDict):
"""
Pool's share of total blocks for different time periods
Attributes:
all: Share of all blocks (0.0 - 1.0)
_24h: Share of blocks in last 24 hours
_1w: Share of blocks in last week
"""
all: float
_24h: float
_1w: float
class PoolDetailInfo(TypedDict):
"""
Pool information for detail view
Attributes:
id: Unique pool identifier
name: Pool name
link: Pool website URL
addrs: Known payout addresses
regexes: Coinbase tag patterns (regexes)
slug: URL-friendly pool identifier
"""
id: int
name: str
link: str
addrs: List[str]
regexes: List[str]
slug: PoolSlug
class PoolDetail(TypedDict):
"""
Detailed pool information with statistics across time periods
Attributes:
pool: Pool information
blockCount: Block counts for different time periods
blockShare: Pool's share of total blocks for different time periods
estimatedHashrate: Estimated hashrate based on blocks mined
reportedHashrate: Self-reported hashrate (if available)
"""
pool: PoolDetailInfo
blockCount: PoolBlockCounts
blockShare: PoolBlockShares
estimatedHashrate: int
reportedHashrate: Optional[int]
class PoolInfo(TypedDict):
"""
Basic pool information for listing all pools
Attributes:
name: Pool name
slug: URL-friendly pool identifier
unique_id: Unique numeric pool identifier
"""
name: str
slug: PoolSlug
unique_id: int
class PoolSlugParam(TypedDict):
slug: PoolSlug
class PoolStats(TypedDict):
"""
Mining pool with block statistics for a time period
Attributes:
poolId: Unique pool identifier
name: Pool name
link: Pool website URL
blockCount: Number of blocks mined in the time period
rank: Pool ranking by block count (1 = most blocks)
emptyBlocks: Number of empty blocks mined
slug: URL-friendly pool identifier
share: Pool's share of total blocks (0.0 - 1.0)
"""
poolId: int
name: str
link: str
blockCount: int
rank: int
emptyBlocks: int
slug: PoolSlug
share: float
class PoolsSummary(TypedDict):
"""
Mining pools response for a time period
Attributes:
pools: List of pools sorted by block count descending
blockCount: Total blocks in the time period
lastEstimatedHashrate: Estimated network hashrate (hashes per second)
"""
pools: List[PoolStats]
blockCount: int
lastEstimatedHashrate: int
class RecommendedFees(TypedDict):
"""
Recommended fee rates in sat/vB
Attributes:
fastestFee: Fee rate for fastest confirmation (next block)
halfHourFee: Fee rate for confirmation within ~30 minutes (3 blocks)
hourFee: Fee rate for confirmation within ~1 hour (6 blocks)
economyFee: Fee rate for economical confirmation
minimumFee: Minimum relay fee rate
"""
fastestFee: FeeRate
halfHourFee: FeeRate
hourFee: FeeRate
economyFee: FeeRate
minimumFee: FeeRate
class RewardStats(TypedDict):
"""
Block reward statistics over a range of blocks
Attributes:
startBlock: First block in the range
endBlock: Last block in the range
"""
startBlock: Height
endBlock: Height
totalReward: Sats
totalFee: Sats
totalTx: int
class SearchQuery(TypedDict):
"""
Attributes:
q: Search query string
limit: Maximum number of results
"""
q: SeriesName
limit: Limit
class SeriesInfo(TypedDict):
"""
Metadata about a series
Attributes:
indexes: Available indexes
type: Value type (e.g. "f32", "u64", "Sats")
"""
indexes: List[Index]
type: str
class SeriesNameWithIndex(TypedDict):
"""
Attributes:
series: Series name
index: Aggregation index
"""
series: SeriesName
index: Index
class SeriesParam(TypedDict):
series: SeriesName
class SeriesSelection(TypedDict):
"""
Selection of series to query
Attributes:
series: Requested series
index: Index to query
start: Inclusive start: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `from`, `f`, `s`
end: Exclusive end: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `to`, `t`, `e`
limit: Maximum number of values to return (ignored if `end` is set). Aliases: `count`, `c`, `l`
format: Format of the output
"""
series: SeriesList
index: Index
start: Union[RangeIndex, None]
end: Union[RangeIndex, None]
limit: Union[Limit, None]
format: Format
class SeriesSelectionLegacy(TypedDict):
"""
Legacy series selection parameters (deprecated)
Attributes:
start: Inclusive start: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `from`, `f`, `s`
end: Exclusive end: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `to`, `t`, `e`
limit: Maximum number of values to return (ignored if `end` is set). Aliases: `count`, `c`, `l`
format: Format of the output
"""
index: Index
ids: SeriesList
start: Union[RangeIndex, None]
end: Union[RangeIndex, None]
limit: Union[Limit, None]
format: Format
class SupplyState(TypedDict):
"""
Current supply state tracking UTXO count and total value
Attributes:
utxo_count: Number of unspent transaction outputs
value: Total value in satoshis
"""
utxo_count: int
value: Sats
class SyncStatus(TypedDict):
"""
Sync status of the indexer
Attributes:
indexed_height: Height of the last indexed block
computed_height: Height of the last computed block (series)
tip_height: Height of the chain tip (from Bitcoin node)
blocks_behind: Number of blocks behind the tip
last_indexed_at: Human-readable timestamp of the last indexed block (ISO 8601)
last_indexed_at_unix: Unix timestamp of the last indexed block
"""
indexed_height: Height
computed_height: Height
tip_height: Height
blocks_behind: Height
last_indexed_at: str
last_indexed_at_unix: Timestamp
class TimePeriodParam(TypedDict):
time_period: TimePeriod
class TimestampParam(TypedDict):
timestamp: Timestamp
class TxOut(TypedDict):
"""
Transaction output
Attributes:
scriptpubkey: Script pubkey (locking script)
value: Value of the output in satoshis
"""
scriptpubkey: str
value: Sats
class TxIn(TypedDict):
"""
Transaction input
Attributes:
txid: Transaction ID of the output being spent
prevout: Information about the previous output being spent
scriptsig: Signature script (for non-SegWit inputs)
scriptsig_asm: Signature script in assembly format
is_coinbase: Whether this input is a coinbase (block reward) input
sequence: Input sequence number
inner_redeemscript_asm: Inner redeemscript in assembly format (for P2SH-wrapped SegWit)
"""
txid: Txid
vout: Vout
prevout: Union[TxOut, None]
scriptsig: str
scriptsig_asm: str
is_coinbase: bool
sequence: int
inner_redeemscript_asm: Optional[str]
class TxStatus(TypedDict):
"""
Transaction confirmation status
Attributes:
confirmed: Whether the transaction is confirmed
block_height: Block height (only present if confirmed)
block_hash: Block hash (only present if confirmed)
block_time: Block timestamp (only present if confirmed)
"""
confirmed: bool
block_height: Union[Height, None]
block_hash: Union[BlockHash, None]
block_time: Union[Timestamp, None]
class Transaction(TypedDict):
"""
Transaction information compatible with mempool.space API format
Attributes:
size: Transaction size in bytes
weight: Transaction weight
sigops: Number of signature operations
fee: Transaction fee in satoshis
vin: Transaction inputs
vout: Transaction outputs
"""
index: Union[TxIndex, None]
txid: Txid
version: TxVersion
locktime: RawLockTime
size: int
weight: Weight
sigops: int
fee: Sats
vin: List[TxIn]
vout: List[TxOut]
status: TxStatus
class TxOutspend(TypedDict):
"""
Status of an output indicating whether it has been spent
Attributes:
spent: Whether the output has been spent
txid: Transaction ID of the spending transaction (only present if spent)
vin: Input index in the spending transaction (only present if spent)
status: Status of the spending transaction (only present if spent)
"""
spent: bool
txid: Union[Txid, None]
vin: Union[Vin, None]
status: Union[TxStatus, None]
class TxidParam(TypedDict):
txid: Txid
class TxidVout(TypedDict):
"""
Transaction output reference (txid + output index)
Attributes:
txid: Transaction ID
vout: Output index
"""
txid: Txid
vout: Vout
class Utxo(TypedDict):
"""
Unspent transaction output
"""
txid: Txid
vout: Vout
status: TxStatus
value: Sats
class ValidateAddrParam(TypedDict):
"""
Attributes:
address: Bitcoin address to validate (can be any string)
"""
address: str
class SeriesLeafWithSchema(TypedDict):
"""
SeriesLeaf with JSON Schema for client generation
Attributes:
name: The series name/identifier
kind: The Rust type (e.g., "Sats", "StoredF64")
indexes: Available indexes for this series
type: JSON Schema type (e.g., "integer", "number", "string", "boolean", "array", "object")
"""
name: str
kind: str
indexes: List[Index]
type: str
class BrkError(Exception):
"""Custom error class for BRK client errors."""
def __init__(self, message: str, status: Optional[int] = None):
super().__init__(message)
self.status = status
class BrkClientBase:
"""Base HTTP client for making requests."""
def __init__(self, base_url: str, timeout: float = 30.0):
parsed = urlparse(base_url)
self._host = parsed.netloc
self._secure = parsed.scheme == 'https'
self._timeout = timeout
self._conn: Optional[Union[HTTPSConnection, HTTPConnection]] = None
def _connect(self) -> Union[HTTPSConnection, HTTPConnection]:
"""Get or create HTTP connection."""
if self._conn is None:
if self._secure:
self._conn = HTTPSConnection(self._host, timeout=self._timeout)
else:
self._conn = HTTPConnection(self._host, timeout=self._timeout)
return self._conn
def get(self, path: str) -> bytes:
"""Make a GET request and return raw bytes."""
try:
conn = self._connect()
conn.request("GET", path)
res = conn.getresponse()
data = res.read()
if res.status >= 400:
raise BrkError(f"HTTP error: {res.status}", res.status)
return data
except (ConnectionError, OSError, TimeoutError) as e:
self._conn = None
raise BrkError(str(e))
def get_json(self, path: str) -> Any:
"""Make a GET request and return JSON."""
return json.loads(self.get(path))
def get_text(self, path: str) -> str:
"""Make a GET request and return text."""
return self.get(path).decode()
def close(self) -> None:
"""Close the HTTP client."""
if self._conn:
self._conn.close()
self._conn = None
def __enter__(self) -> BrkClientBase:
return self
def __exit__(self, exc_type: Optional[type], exc_val: Optional[BaseException], exc_tb: Optional[Any]) -> None:
self.close()
def _m(acc: str, s: str) -> str:
"""Build series name with suffix."""
if not s: return acc
return f"{acc}_{s}" if acc else s
def _p(prefix: str, acc: str) -> str:
"""Build series name with prefix."""
return f"{prefix}_{acc}" if acc else prefix
# Date conversion constants
_GENESIS = date(2009, 1, 3) # day1 0, week1 0
_DAY_ONE = date(2009, 1, 9) # day1 1 (6 day gap after genesis)
_EPOCH = datetime(2009, 1, 1, tzinfo=timezone.utc)
_DATE_INDEXES = frozenset([
'minute10', 'minute30',
'hour1', 'hour4', 'hour12',
'day1', 'day3', 'week1',
'month1', 'month3', 'month6',
'year1', 'year10',
])
def _index_to_date(index: str, i: int) -> Union[date, datetime]:
"""Convert an index value to a date/datetime for date-based indexes."""
if index == 'minute10':
return _EPOCH + timedelta(minutes=i * 10)
elif index == 'minute30':
return _EPOCH + timedelta(minutes=i * 30)
elif index == 'hour1':
return _EPOCH + timedelta(hours=i)
elif index == 'hour4':
return _EPOCH + timedelta(hours=i * 4)
elif index == 'hour12':
return _EPOCH + timedelta(hours=i * 12)
elif index == 'day1':
return _GENESIS if i == 0 else _DAY_ONE + timedelta(days=i - 1)
elif index == 'day3':
return _EPOCH.date() - timedelta(days=1) + timedelta(days=i * 3)
elif index == 'week1':
return _GENESIS + timedelta(weeks=i)
elif index == 'month1':
return date(2009 + i // 12, i % 12 + 1, 1)
elif index == 'month3':
m = i * 3
return date(2009 + m // 12, m % 12 + 1, 1)
elif index == 'month6':
m = i * 6
return date(2009 + m // 12, m % 12 + 1, 1)
elif index == 'year1':
return date(2009 + i, 1, 1)
elif index == 'year10':
return date(2009 + i * 10, 1, 1)
else:
raise ValueError(f"{index} is not a date-based index")
def _date_to_index(index: str, d: Union[date, datetime]) -> int:
"""Convert a date/datetime to an index value for date-based indexes.
Returns the floor index (latest index whose date is <= the given date).
For sub-day indexes (minute*, hour*), a plain date is treated as midnight UTC.
"""
if index in ('minute10', 'minute30', 'hour1', 'hour4', 'hour12'):
if isinstance(d, datetime):
dt = d if d.tzinfo else d.replace(tzinfo=timezone.utc)
else:
dt = datetime(d.year, d.month, d.day, tzinfo=timezone.utc)
secs = int((dt - _EPOCH).total_seconds())
div = {'minute10': 600, 'minute30': 1800,
'hour1': 3600, 'hour4': 14400, 'hour12': 43200}
return secs // div[index]
dd = d.date() if isinstance(d, datetime) else d
if index == 'day1':
if dd < _DAY_ONE:
return 0
return 1 + (dd - _DAY_ONE).days
elif index == 'day3':
return (dd - date(2008, 12, 31)).days // 3
elif index == 'week1':
return (dd - _GENESIS).days // 7
elif index == 'month1':
return (dd.year - 2009) * 12 + (dd.month - 1)
elif index == 'month3':
return (dd.year - 2009) * 4 + (dd.month - 1) // 3
elif index == 'month6':
return (dd.year - 2009) * 2 + (dd.month - 1) // 6
elif index == 'year1':
return dd.year - 2009
elif index == 'year10':
return (dd.year - 2009) // 10
else:
raise ValueError(f"{index} is not a date-based index")
@dataclass
class SeriesData(Generic[T]):
"""Series data with range information. Always int-indexed."""
version: int
index: Index
type: str
total: int
start: int
end: int
stamp: str
data: List[T]
@property
def is_date_based(self) -> bool:
"""Whether this series uses a date-based index."""
return self.index in _DATE_INDEXES
def indexes(self) -> List[int]:
"""Get raw index numbers."""
return list(range(self.start, self.end))
def keys(self) -> List[int]:
"""Get keys as index numbers."""
return self.indexes()
def items(self) -> List[Tuple[int, T]]:
"""Get (index, value) pairs."""
return list(zip(self.indexes(), self.data))
def to_dict(self) -> Dict[int, T]:
"""Return {index: value} dict."""
return dict(zip(self.indexes(), self.data))
def __iter__(self) -> Iterator[Tuple[int, T]]:
"""Iterate over (index, value) pairs."""
return iter(zip(self.indexes(), self.data))
def __len__(self) -> int:
return len(self.data)
def to_polars(self) -> pl.DataFrame:
"""Convert to Polars DataFrame with 'index' and 'value' columns."""
try:
import polars as pl # type: ignore[import-not-found]
except ImportError:
raise ImportError("polars is required: pip install polars")
return pl.DataFrame({"index": self.indexes(), "value": self.data})
def to_pandas(self) -> pd.DataFrame:
"""Convert to Pandas DataFrame with 'index' and 'value' columns."""
try:
import pandas as pd # type: ignore[import-not-found]
except ImportError:
raise ImportError("pandas is required: pip install pandas")
return pd.DataFrame({"index": self.indexes(), "value": self.data})
@dataclass
class DateSeriesData(SeriesData[T]):
"""Series data with date-based index. Extends SeriesData with date methods."""
def dates(self) -> List[Union[date, datetime]]:
"""Get dates for the index range. Returns datetime for sub-daily indexes, date for daily+."""
return [_index_to_date(self.index, i) for i in range(self.start, self.end)]
def date_items(self) -> List[Tuple[Union[date, datetime], T]]:
"""Get (date, value) pairs."""
return list(zip(self.dates(), self.data))
def to_date_dict(self) -> Dict[Union[date, datetime], T]:
"""Return {date: value} dict."""
return dict(zip(self.dates(), self.data))
def to_polars(self, with_dates: bool = True) -> pl.DataFrame:
"""Convert to Polars DataFrame.
Returns a DataFrame with columns:
- 'date' and 'value' if with_dates=True (default)
- 'index' and 'value' otherwise
"""
try:
import polars as pl # type: ignore[import-not-found]
except ImportError:
raise ImportError("polars is required: pip install polars")
if with_dates:
return pl.DataFrame({"date": self.dates(), "value": self.data})
return pl.DataFrame({"index": self.indexes(), "value": self.data})
def to_pandas(self, with_dates: bool = True) -> pd.DataFrame:
"""Convert to Pandas DataFrame.
Returns a DataFrame with columns:
- 'date' and 'value' if with_dates=True (default)
- 'index' and 'value' otherwise
"""
try:
import pandas as pd # type: ignore[import-not-found]
except ImportError:
raise ImportError("pandas is required: pip install pandas")
if with_dates:
return pd.DataFrame({"date": self.dates(), "value": self.data})
return pd.DataFrame({"index": self.indexes(), "value": self.data})
# Type aliases for non-generic usage
AnySeriesData = SeriesData[Any]
AnyDateSeriesData = DateSeriesData[Any]
class _EndpointConfig:
"""Shared endpoint configuration."""
client: BrkClientBase
name: str
index: Index
start: Optional[int]
end: Optional[int]
def __init__(self, client: BrkClientBase, name: str, index: Index,
start: Optional[int] = None, end: Optional[int] = None):
self.client = client
self.name = name
self.index = index
self.start = start
self.end = end
def path(self) -> str:
return f"/api/series/{self.name}/{self.index}"
def _build_path(self, format: Optional[str] = None) -> str:
params = []
if self.start is not None:
params.append(f"start={self.start}")
if self.end is not None:
params.append(f"end={self.end}")
if format is not None:
params.append(f"format={format}")
query = "&".join(params)
p = self.path()
return f"{p}?{query}" if query else p
def _new(self, start: Optional[int] = None, end: Optional[int] = None) -> _EndpointConfig:
return _EndpointConfig(self.client, self.name, self.index, start, end)
def get_series(self) -> SeriesData[Any]:
return SeriesData(**self.client.get_json(self._build_path()))
def get_date_series(self) -> DateSeriesData[Any]:
return DateSeriesData(**self.client.get_json(self._build_path()))
def get_csv(self) -> str:
return self.client.get_text(self._build_path(format='csv'))
class RangeBuilder(Generic[T]):
"""Builder with range specified."""
def __init__(self, config: _EndpointConfig):
self._config = config
def fetch(self) -> SeriesData[T]:
"""Fetch the range as parsed JSON."""
return self._config.get_series()
def fetch_csv(self) -> str:
"""Fetch the range as CSV string."""
return self._config.get_csv()
class SingleItemBuilder(Generic[T]):
"""Builder for single item access."""
def __init__(self, config: _EndpointConfig):
self._config = config
def fetch(self) -> SeriesData[T]:
"""Fetch the single item."""
return self._config.get_series()
def fetch_csv(self) -> str:
"""Fetch as CSV."""
return self._config.get_csv()
class SkippedBuilder(Generic[T]):
"""Builder after calling skip(n). Chain with take() to specify count."""
def __init__(self, config: _EndpointConfig):
self._config = config
def take(self, n: int) -> RangeBuilder[T]:
"""Take n items after the skipped position."""
start = self._config.start or 0
return RangeBuilder(self._config._new(start, start + n))
def fetch(self) -> SeriesData[T]:
"""Fetch from skipped position to end."""
return self._config.get_series()
def fetch_csv(self) -> str:
"""Fetch as CSV."""
return self._config.get_csv()
class DateRangeBuilder(RangeBuilder[T]):
"""Range builder that returns DateSeriesData."""
def fetch(self) -> DateSeriesData[T]:
return self._config.get_date_series()
class DateSingleItemBuilder(SingleItemBuilder[T]):
"""Single item builder that returns DateSeriesData."""
def fetch(self) -> DateSeriesData[T]:
return self._config.get_date_series()
class DateSkippedBuilder(SkippedBuilder[T]):
"""Skipped builder that returns DateSeriesData."""
def take(self, n: int) -> DateRangeBuilder[T]:
start = self._config.start or 0
return DateRangeBuilder(self._config._new(start, start + n))
def fetch(self) -> DateSeriesData[T]:
return self._config.get_date_series()
class SeriesEndpoint(Generic[T]):
"""Builder for series endpoint queries with int-based indexing.
Examples:
data = endpoint.fetch()
data = endpoint[5].fetch()
data = endpoint[:10].fetch()
data = endpoint.head(20).fetch()
data = endpoint.skip(100).take(10).fetch()
"""
def __init__(self, client: BrkClientBase, name: str, index: Index):
self._config = _EndpointConfig(client, name, index)
@overload
def __getitem__(self, key: int) -> SingleItemBuilder[T]: ...
@overload
def __getitem__(self, key: slice) -> RangeBuilder[T]: ...
def __getitem__(self, key: Union[int, slice]) -> Union[SingleItemBuilder[T], RangeBuilder[T]]:
"""Access single item or slice by integer index."""
if isinstance(key, int):
return SingleItemBuilder(self._config._new(key, key + 1))
return RangeBuilder(self._config._new(key.start, key.stop))
def head(self, n: int = 10) -> RangeBuilder[T]:
"""Get the first n items."""
return RangeBuilder(self._config._new(end=n))
def tail(self, n: int = 10) -> RangeBuilder[T]:
"""Get the last n items."""
return RangeBuilder(self._config._new(end=0) if n == 0 else self._config._new(start=-n))
def skip(self, n: int) -> SkippedBuilder[T]:
"""Skip the first n items."""
return SkippedBuilder(self._config._new(start=n))
def fetch(self) -> SeriesData[T]:
"""Fetch all data."""
return self._config.get_series()
def fetch_csv(self) -> str:
"""Fetch all data as CSV."""
return self._config.get_csv()
def path(self) -> str:
"""Get the base endpoint path."""
return self._config.path()
class DateSeriesEndpoint(Generic[T]):
"""Builder for series endpoint queries with date-based indexing.
Accepts dates in __getitem__ and returns DateSeriesData from fetch().
Examples:
data = endpoint.fetch()
data = endpoint[date(2020, 1, 1)].fetch()
data = endpoint[date(2020, 1, 1):date(2023, 1, 1)].fetch()
data = endpoint[:10].fetch()
"""
def __init__(self, client: BrkClientBase, name: str, index: Index):
self._config = _EndpointConfig(client, name, index)
@overload
def __getitem__(self, key: int) -> DateSingleItemBuilder[T]: ...
@overload
def __getitem__(self, key: datetime) -> DateSingleItemBuilder[T]: ...
@overload
def __getitem__(self, key: date) -> DateSingleItemBuilder[T]: ...
@overload
def __getitem__(self, key: slice) -> DateRangeBuilder[T]: ...
def __getitem__(self, key: Union[int, slice, date, datetime]) -> Union[DateSingleItemBuilder[T], DateRangeBuilder[T]]:
"""Access single item or slice. Accepts int, date, or datetime."""
if isinstance(key, (date, datetime)):
idx = _date_to_index(self._config.index, key)
return DateSingleItemBuilder(self._config._new(idx, idx + 1))
if isinstance(key, int):
return DateSingleItemBuilder(self._config._new(key, key + 1))
start, stop = key.start, key.stop
if isinstance(start, (date, datetime)):
start = _date_to_index(self._config.index, start)
if isinstance(stop, (date, datetime)):
stop = _date_to_index(self._config.index, stop)
return DateRangeBuilder(self._config._new(start, stop))
def head(self, n: int = 10) -> DateRangeBuilder[T]:
"""Get the first n items."""
return DateRangeBuilder(self._config._new(end=n))
def tail(self, n: int = 10) -> DateRangeBuilder[T]:
"""Get the last n items."""
return DateRangeBuilder(self._config._new(end=0) if n == 0 else self._config._new(start=-n))
def skip(self, n: int) -> DateSkippedBuilder[T]:
"""Skip the first n items."""
return DateSkippedBuilder(self._config._new(start=n))
def fetch(self) -> DateSeriesData[T]:
"""Fetch all data."""
return self._config.get_date_series()
def fetch_csv(self) -> str:
"""Fetch all data as CSV."""
return self._config.get_csv()
def path(self) -> str:
"""Get the base endpoint path."""
return self._config.path()
# Type aliases for non-generic usage
AnySeriesEndpoint = SeriesEndpoint[Any]
AnyDateSeriesEndpoint = DateSeriesEndpoint[Any]
class SeriesPattern(Protocol[T]):
"""Protocol for series patterns with different index sets."""
@property
def name(self) -> str:
"""Get the series name."""
...
def indexes(self) -> List[str]:
"""Get the list of available indexes for this series."""
...
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]:
"""Get an endpoint builder for a specific index, if supported."""
...
# Static index tuples
_i1 = ('minute10', 'minute30', 'hour1', 'hour4', 'hour12', 'day1', 'day3', 'week1', 'month1', 'month3', 'month6', 'year1', 'year10', 'halving', 'epoch', 'height')
_i2 = ('minute10', 'minute30', 'hour1', 'hour4', 'hour12', 'day1', 'day3', 'week1', 'month1', 'month3', 'month6', 'year1', 'year10', 'halving', 'epoch')
_i3 = ('minute10',)
_i4 = ('minute30',)
_i5 = ('hour1',)
_i6 = ('hour4',)
_i7 = ('hour12',)
_i8 = ('day1',)
_i9 = ('day3',)
_i10 = ('week1',)
_i11 = ('month1',)
_i12 = ('month3',)
_i13 = ('month6',)
_i14 = ('year1',)
_i15 = ('year10',)
_i16 = ('halving',)
_i17 = ('epoch',)
_i18 = ('height',)
_i19 = ('tx_index',)
_i20 = ('txin_index',)
_i21 = ('txout_index',)
_i22 = ('empty_output_index',)
_i23 = ('op_return_index',)
_i24 = ('p2a_addr_index',)
_i25 = ('p2ms_output_index',)
_i26 = ('p2pk33_addr_index',)
_i27 = ('p2pk65_addr_index',)
_i28 = ('p2pkh_addr_index',)
_i29 = ('p2sh_addr_index',)
_i30 = ('p2tr_addr_index',)
_i31 = ('p2wpkh_addr_index',)
_i32 = ('p2wsh_addr_index',)
_i33 = ('unknown_output_index',)
_i34 = ('funded_addr_index',)
_i35 = ('empty_addr_index',)
def _ep(c: BrkClientBase, n: str, i: Index) -> SeriesEndpoint[Any]:
return SeriesEndpoint(c, n, i)
def _dep(c: BrkClientBase, n: str, i: Index) -> DateSeriesEndpoint[Any]:
return DateSeriesEndpoint(c, n, i)
# Index accessor classes
class _SeriesPattern1By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def minute10(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'minute10')
def minute30(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'minute30')
def hour1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour1')
def hour4(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour4')
def hour12(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour12')
def day1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'day1')
def day3(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'day3')
def week1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'week1')
def month1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month1')
def month3(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month3')
def month6(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month6')
def year1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'year1')
def year10(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'year10')
def halving(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'halving')
def epoch(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'epoch')
def height(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'height')
class SeriesPattern1(Generic[T]):
by: _SeriesPattern1By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern1By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i1)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i1 else None
class _SeriesPattern2By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def minute10(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'minute10')
def minute30(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'minute30')
def hour1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour1')
def hour4(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour4')
def hour12(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour12')
def day1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'day1')
def day3(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'day3')
def week1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'week1')
def month1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month1')
def month3(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month3')
def month6(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month6')
def year1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'year1')
def year10(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'year10')
def halving(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'halving')
def epoch(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'epoch')
class SeriesPattern2(Generic[T]):
by: _SeriesPattern2By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern2By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i2)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i2 else None
class _SeriesPattern3By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def minute10(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'minute10')
class SeriesPattern3(Generic[T]):
by: _SeriesPattern3By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern3By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i3)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i3 else None
class _SeriesPattern4By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def minute30(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'minute30')
class SeriesPattern4(Generic[T]):
by: _SeriesPattern4By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern4By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i4)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i4 else None
class _SeriesPattern5By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def hour1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour1')
class SeriesPattern5(Generic[T]):
by: _SeriesPattern5By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern5By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i5)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i5 else None
class _SeriesPattern6By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def hour4(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour4')
class SeriesPattern6(Generic[T]):
by: _SeriesPattern6By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern6By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i6)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i6 else None
class _SeriesPattern7By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def hour12(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour12')
class SeriesPattern7(Generic[T]):
by: _SeriesPattern7By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern7By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i7)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i7 else None
class _SeriesPattern8By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def day1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'day1')
class SeriesPattern8(Generic[T]):
by: _SeriesPattern8By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern8By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i8)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i8 else None
class _SeriesPattern9By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def day3(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'day3')
class SeriesPattern9(Generic[T]):
by: _SeriesPattern9By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern9By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i9)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i9 else None
class _SeriesPattern10By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def week1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'week1')
class SeriesPattern10(Generic[T]):
by: _SeriesPattern10By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern10By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i10)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i10 else None
class _SeriesPattern11By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def month1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month1')
class SeriesPattern11(Generic[T]):
by: _SeriesPattern11By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern11By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i11)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i11 else None
class _SeriesPattern12By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def month3(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month3')
class SeriesPattern12(Generic[T]):
by: _SeriesPattern12By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern12By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i12)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i12 else None
class _SeriesPattern13By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def month6(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month6')
class SeriesPattern13(Generic[T]):
by: _SeriesPattern13By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern13By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i13)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i13 else None
class _SeriesPattern14By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def year1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'year1')
class SeriesPattern14(Generic[T]):
by: _SeriesPattern14By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern14By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i14)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i14 else None
class _SeriesPattern15By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def year10(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'year10')
class SeriesPattern15(Generic[T]):
by: _SeriesPattern15By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern15By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i15)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i15 else None
class _SeriesPattern16By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def halving(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'halving')
class SeriesPattern16(Generic[T]):
by: _SeriesPattern16By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern16By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i16)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i16 else None
class _SeriesPattern17By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def epoch(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'epoch')
class SeriesPattern17(Generic[T]):
by: _SeriesPattern17By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern17By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i17)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i17 else None
class _SeriesPattern18By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def height(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'height')
class SeriesPattern18(Generic[T]):
by: _SeriesPattern18By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern18By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i18)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i18 else None
class _SeriesPattern19By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def tx_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'tx_index')
class SeriesPattern19(Generic[T]):
by: _SeriesPattern19By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern19By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i19)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i19 else None
class _SeriesPattern20By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def txin_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'txin_index')
class SeriesPattern20(Generic[T]):
by: _SeriesPattern20By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern20By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i20)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i20 else None
class _SeriesPattern21By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def txout_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'txout_index')
class SeriesPattern21(Generic[T]):
by: _SeriesPattern21By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern21By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i21)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i21 else None
class _SeriesPattern22By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def empty_output_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'empty_output_index')
class SeriesPattern22(Generic[T]):
by: _SeriesPattern22By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern22By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i22)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i22 else None
class _SeriesPattern23By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def op_return_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'op_return_index')
class SeriesPattern23(Generic[T]):
by: _SeriesPattern23By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern23By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i23)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i23 else None
class _SeriesPattern24By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def p2a_addr_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2a_addr_index')
class SeriesPattern24(Generic[T]):
by: _SeriesPattern24By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern24By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i24)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i24 else None
class _SeriesPattern25By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def p2ms_output_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2ms_output_index')
class SeriesPattern25(Generic[T]):
by: _SeriesPattern25By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern25By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i25)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i25 else None
class _SeriesPattern26By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def p2pk33_addr_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2pk33_addr_index')
class SeriesPattern26(Generic[T]):
by: _SeriesPattern26By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern26By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i26)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i26 else None
class _SeriesPattern27By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def p2pk65_addr_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2pk65_addr_index')
class SeriesPattern27(Generic[T]):
by: _SeriesPattern27By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern27By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i27)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i27 else None
class _SeriesPattern28By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def p2pkh_addr_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2pkh_addr_index')
class SeriesPattern28(Generic[T]):
by: _SeriesPattern28By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern28By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i28)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i28 else None
class _SeriesPattern29By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def p2sh_addr_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2sh_addr_index')
class SeriesPattern29(Generic[T]):
by: _SeriesPattern29By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern29By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i29)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i29 else None
class _SeriesPattern30By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def p2tr_addr_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2tr_addr_index')
class SeriesPattern30(Generic[T]):
by: _SeriesPattern30By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern30By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i30)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i30 else None
class _SeriesPattern31By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def p2wpkh_addr_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2wpkh_addr_index')
class SeriesPattern31(Generic[T]):
by: _SeriesPattern31By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern31By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i31)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i31 else None
class _SeriesPattern32By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def p2wsh_addr_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2wsh_addr_index')
class SeriesPattern32(Generic[T]):
by: _SeriesPattern32By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern32By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i32)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i32 else None
class _SeriesPattern33By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def unknown_output_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'unknown_output_index')
class SeriesPattern33(Generic[T]):
by: _SeriesPattern33By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern33By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i33)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i33 else None
class _SeriesPattern34By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def funded_addr_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'funded_addr_index')
class SeriesPattern34(Generic[T]):
by: _SeriesPattern34By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern34By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i34)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i34 else None
class _SeriesPattern35By(Generic[T]):
def __init__(self, c: BrkClientBase, n: str): self._c, self._n = c, n
def empty_addr_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'empty_addr_index')
class SeriesPattern35(Generic[T]):
by: _SeriesPattern35By[T]
def __init__(self, c: BrkClientBase, n: str): self._n, self.by = n, _SeriesPattern35By(c, n)
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i35)
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in _i35 else None
# Reusable structural pattern classes
class Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.pct05: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct05'))
self.pct10: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct10'))
self.pct15: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct15'))
self.pct20: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct20'))
self.pct25: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct25'))
self.pct30: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct30'))
self.pct35: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct35'))
self.pct40: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct40'))
self.pct45: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct45'))
self.pct50: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct50'))
self.pct55: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct55'))
self.pct60: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct60'))
self.pct65: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct65'))
self.pct70: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct70'))
self.pct75: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct75'))
self.pct80: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct80'))
self.pct85: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct85'))
self.pct90: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct90'))
self.pct95: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct95'))
class _0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdZscorePattern:
"""Pattern struct for repeated tree structure."""
pass
class _10y1m1w1y2y3m3y4y5y6m6y8yPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._10y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '10y'))
self._1m: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '1m'))
self._1w: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '1w'))
self._1y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '1y'))
self._2y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '2y'))
self._3m: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '3m'))
self._3y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '3y'))
self._4y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '4y'))
self._5y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '5y'))
self._6m: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '6m'))
self._6y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '6y'))
self._8y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '8y'))
class _10y1m1w1y2y3m3y4y5y6m6y8yPattern3:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._10y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '10y'))
self._1m: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '1m'))
self._1w: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '1w'))
self._1y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '1y'))
self._2y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '2y'))
self._3m: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '3m'))
self._3y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '3y'))
self._4y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '4y'))
self._5y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '5y'))
self._6m: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '6m'))
self._6y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '6y'))
self._8y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '8y'))
class CapGrossInvestorLossMvrvNetPeakPriceProfitSellSoprPattern:
"""Pattern struct for repeated tree structure."""
pass
class AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.average: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'average'))
self.base: SeriesPattern1[StoredU64] = SeriesPattern1(client, acc)
self.cumulative: SeriesPattern1[StoredU64] = SeriesPattern1(client, _m(acc, 'cumulative'))
self.max: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'max'))
self.median: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'median'))
self.min: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'min'))
self.pct10: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'pct10'))
self.pct25: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'pct25'))
self.pct75: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'pct75'))
self.pct90: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'pct90'))
self.sum: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'sum'))
class AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern(Generic[T]):
"""Pattern struct for repeated tree structure."""
pass
class AverageGainsLossesRsiStochPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str, disc: str):
"""Create pattern node with accumulated series name."""
self.average_gain: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, f'average_gain_{disc}'))
self.average_loss: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, f'average_loss_{disc}'))
self.gains: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, f'gains_{disc}'))
self.losses: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, f'losses_{disc}'))
self.rsi: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, disc))
self.rsi_max: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, f'max_{disc}'))
self.rsi_min: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, f'min_{disc}'))
self.stoch_rsi: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, f'stoch_{disc}'))
self.stoch_rsi_d: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, f'stoch_d_{disc}'))
self.stoch_rsi_k: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, f'stoch_k_{disc}'))
class AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern3:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.all: SeriesPattern1[StoredU64] = SeriesPattern1(client, acc)
self.p2a: SeriesPattern1[StoredU64] = SeriesPattern1(client, _p('p2a', acc))
self.p2pk33: SeriesPattern1[StoredU64] = SeriesPattern1(client, _p('p2pk33', acc))
self.p2pk65: SeriesPattern1[StoredU64] = SeriesPattern1(client, _p('p2pk65', acc))
self.p2pkh: SeriesPattern1[StoredU64] = SeriesPattern1(client, _p('p2pkh', acc))
self.p2sh: SeriesPattern1[StoredU64] = SeriesPattern1(client, _p('p2sh', acc))
self.p2tr: SeriesPattern1[StoredU64] = SeriesPattern1(client, _p('p2tr', acc))
self.p2wpkh: SeriesPattern1[StoredU64] = SeriesPattern1(client, _p('p2wpkh', acc))
self.p2wsh: SeriesPattern1[StoredU64] = SeriesPattern1(client, _p('p2wsh', acc))
class AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.average: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'average'))
self.max: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'max'))
self.median: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'median'))
self.min: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'min'))
self.pct10: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'pct10'))
self.pct25: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'pct25'))
self.pct75: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'pct75'))
self.pct90: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'pct90'))
self.sum: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'sum'))
class AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.average: SeriesPattern18[Weight] = SeriesPattern18(client, _m(acc, 'average'))
self.max: SeriesPattern18[Weight] = SeriesPattern18(client, _m(acc, 'max'))
self.median: SeriesPattern18[Weight] = SeriesPattern18(client, _m(acc, 'median'))
self.min: SeriesPattern18[Weight] = SeriesPattern18(client, _m(acc, 'min'))
self.pct10: SeriesPattern18[Weight] = SeriesPattern18(client, _m(acc, 'pct10'))
self.pct25: SeriesPattern18[Weight] = SeriesPattern18(client, _m(acc, 'pct25'))
self.pct75: SeriesPattern18[Weight] = SeriesPattern18(client, _m(acc, 'pct75'))
self.pct90: SeriesPattern18[Weight] = SeriesPattern18(client, _m(acc, 'pct90'))
class BaseCapitulationCumulativeNegativeSumToValuePattern:
"""Pattern struct for repeated tree structure."""
pass
class BpsCentsPercentilesRatioSatsSmaStdUsdPattern:
"""Pattern struct for repeated tree structure."""
pass
class AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern(Generic[T]):
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.average: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'average'))
self.max: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'max'))
self.median: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'median'))
self.min: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'min'))
self.pct10: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'pct10'))
self.pct25: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'pct25'))
self.pct75: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'pct75'))
self.pct90: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'pct90'))
class _10y2y3y4y5y6y8yPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._10y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '10y'))
self._2y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '2y'))
self._3y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '3y'))
self._4y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '4y'))
self._5y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '5y'))
self._6y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '6y'))
self._8y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '8y'))
class _1m1w1y24hBpsPercentRatioPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._1m: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, '1m'))
self._1w: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, '1w'))
self._1y: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, '1y'))
self._24h: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, '24h'))
self.bps: SeriesPattern1[BasisPoints16] = SeriesPattern1(client, _m(acc, 'bps'))
self.percent: SeriesPattern1[StoredF32] = SeriesPattern1(client, acc)
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'ratio'))
class BaseCumulativeDistributionSumToValuePattern:
"""Pattern struct for repeated tree structure."""
pass
class BaseCumulativeNegativeSumToPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'unrealized_loss'))
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'unrealized_loss_cumulative'))
self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'neg_unrealized_loss'))
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, _m(acc, 'unrealized_loss_sum'))
self.to_mcap: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'unrealized_loss_to_mcap'))
self.to_own_gross_pnl: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'unrealized_loss_to_own_gross_pnl'))
self.to_own_mcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, 'unrealized_loss_to_own_mcap'))
class CapLossMvrvNetPriceProfitSoprPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, _m(acc, 'realized_cap'))
self.loss: BaseCumulativeNegativeSumPattern = BaseCumulativeNegativeSumPattern(client, acc, 'realized_loss')
self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'mvrv'))
self.net_pnl: BaseCumulativeDeltaSumPattern = BaseCumulativeDeltaSumPattern(client, _m(acc, 'net_realized_pnl'))
self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, _m(acc, 'realized_price'))
self.profit: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, _m(acc, 'realized_profit'))
self.sopr: RatioValuePattern = RatioValuePattern(client, acc)
class GrossInvestedLossNetNuplProfitSentimentPattern2:
"""Pattern struct for repeated tree structure."""
pass
class _1m1w1y2y4yAllPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._1m: BpsRatioPattern2 = BpsRatioPattern2(client, _m(acc, '1m'))
self._1w: BpsRatioPattern2 = BpsRatioPattern2(client, _m(acc, '1w'))
self._1y: BpsRatioPattern2 = BpsRatioPattern2(client, _m(acc, '1y'))
self._2y: BpsRatioPattern2 = BpsRatioPattern2(client, _m(acc, '2y'))
self._4y: BpsRatioPattern2 = BpsRatioPattern2(client, _m(acc, '4y'))
self.all: BpsRatioPattern2 = BpsRatioPattern2(client, _m(acc, 'all'))
class BaseChangeCumulativeDeltaSumToPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.base: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'realized_pnl'))
self.change_1m: ToPattern = ToPattern(client, _m(acc, 'pnl_change_1m_to'))
self.cumulative: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'realized_pnl_cumulative'))
self.delta: AbsoluteRatePattern2 = AbsoluteRatePattern2(client, _m(acc, 'realized_pnl_delta'))
self.sum: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, _m(acc, 'realized_pnl_sum'))
self.to_rcap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'realized_pnl_to_rcap'))
class BaseCumulativeSumToPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, acc)
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'cumulative'))
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, _m(acc, 'sum'))
self.to_mcap: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_mcap'))
self.to_own_gross_pnl: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_own_gross_pnl'))
self.to_own_mcap: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_own_mcap'))
class BpsCentsPercentilesRatioSatsUsdPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.bps: SeriesPattern1[BasisPoints32] = SeriesPattern1(client, _m(acc, 'ratio_bps'))
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents'))
self.percentiles: Pct1Pct2Pct5Pct95Pct98Pct99Pattern = Pct1Pct2Pct5Pct95Pct98Pct99Pattern(client, acc)
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'ratio'))
self.sats: SeriesPattern1[SatsFract] = SeriesPattern1(client, _m(acc, 'sats'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, acc)
class BtcCentsSatsToUsdPattern3:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.btc: SeriesPattern1[Bitcoin] = SeriesPattern1(client, acc)
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents'))
self.sats: SeriesPattern1[Sats] = SeriesPattern1(client, _m(acc, 'sats'))
self.to_circulating: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_circulating'))
self.to_own: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_own'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'usd'))
class CapLossMvrvPriceProfitSoprPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, _m(acc, 'realized_cap'))
self.loss: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, _m(acc, 'realized_loss'))
self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'mvrv'))
self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, _m(acc, 'realized_price'))
self.profit: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, _m(acc, 'realized_profit'))
self.sopr: ValuePattern = ValuePattern(client, _m(acc, 'value'))
class DeltaHalfInToTotalPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.delta: AbsoluteRatePattern = AbsoluteRatePattern(client, _m(acc, 'delta'))
self.half: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'half'))
self.in_loss: BtcCentsSatsToUsdPattern = BtcCentsSatsToUsdPattern(client, _m(acc, 'in_loss'))
self.in_profit: BtcCentsSatsToUsdPattern = BtcCentsSatsToUsdPattern(client, _m(acc, 'in_profit'))
self.to_circulating: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_circulating'))
self.total: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, acc)
class DeltaHalfInToTotalPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.delta: AbsoluteRatePattern = AbsoluteRatePattern(client, _m(acc, 'delta'))
self.half: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'half'))
self.in_loss: BtcCentsSatsToUsdPattern3 = BtcCentsSatsToUsdPattern3(client, _m(acc, 'in_loss'))
self.in_profit: BtcCentsSatsToUsdPattern3 = BtcCentsSatsToUsdPattern3(client, _m(acc, 'in_profit'))
self.to_circulating: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_circulating'))
self.total: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, acc)
class Pct1Pct2Pct5Pct95Pct98Pct99Pattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.pct1: BpsPriceRatioPattern = BpsPriceRatioPattern(client, acc, 'pct1')
self.pct2: BpsPriceRatioPattern = BpsPriceRatioPattern(client, acc, 'pct2')
self.pct5: BpsPriceRatioPattern = BpsPriceRatioPattern(client, acc, 'pct5')
self.pct95: BpsPriceRatioPattern = BpsPriceRatioPattern(client, acc, 'pct95')
self.pct98: BpsPriceRatioPattern = BpsPriceRatioPattern(client, acc, 'pct98')
self.pct99: BpsPriceRatioPattern = BpsPriceRatioPattern(client, acc, 'pct99')
class ActivityOutputsRealizedSupplyUnrealizedPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, acc)
self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count'))
self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, acc)
self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, _m(acc, 'supply'))
self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, acc)
class AddrOutputsRealizedSupplyUnrealizedPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, _m(acc, 'addr_count'))
self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count'))
self.realized: CapLossMvrvPriceProfitSoprPattern = CapLossMvrvPriceProfitSoprPattern(client, acc)
self.supply: DeltaHalfTotalPattern = DeltaHalfTotalPattern(client, _m(acc, 'supply'))
self.unrealized: NuplPattern = NuplPattern(client, _m(acc, 'nupl'))
class BaseCumulativeInSumPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, acc)
self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'cumulative'))
self.in_loss: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, _m(acc, 'in_loss'))
self.in_profit: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, _m(acc, 'in_profit'))
self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, _m(acc, 'sum'))
class BpsCentsRatioSatsUsdPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.bps: SeriesPattern1[BasisPoints32] = SeriesPattern1(client, _m(acc, 'ratio_bps'))
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents'))
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'ratio'))
self.sats: SeriesPattern1[SatsFract] = SeriesPattern1(client, _m(acc, 'sats'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, acc)
class BtcCentsDeltaSatsUsdPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.btc: SeriesPattern1[Bitcoin] = SeriesPattern1(client, acc)
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents'))
self.delta: AbsoluteRatePattern = AbsoluteRatePattern(client, _m(acc, 'delta'))
self.sats: SeriesPattern1[Sats] = SeriesPattern1(client, _m(acc, 'sats'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'usd'))
class BtcCentsSatsToUsdPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.btc: SeriesPattern1[Bitcoin] = SeriesPattern1(client, acc)
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents'))
self.sats: SeriesPattern1[Sats] = SeriesPattern1(client, _m(acc, 'sats'))
self.to_circulating: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_circulating'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'usd'))
class BtcCentsSatsToUsdPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.btc: SeriesPattern1[Bitcoin] = SeriesPattern1(client, acc)
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents'))
self.sats: SeriesPattern1[Sats] = SeriesPattern1(client, _m(acc, 'sats'))
self.to_own: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_own'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'usd'))
class DeltaHalfInTotalPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.delta: AbsoluteRatePattern = AbsoluteRatePattern(client, _m(acc, 'delta'))
self.half: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'half'))
self.in_loss: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'in_loss'))
self.in_profit: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'in_profit'))
self.total: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, acc)
class EmaHistogramLineSignalPattern:
"""Pattern struct for repeated tree structure."""
pass
class InvestedMaxMinPercentilesSupplyPattern:
"""Pattern struct for repeated tree structure."""
pass
class PhsReboundThsPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.phs: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'phs'))
self.phs_min: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'phs_min'))
self.rebound: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'rebound'))
self.ths: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'ths'))
self.ths_min: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'ths_min'))
class _1m1w1y24hBasePattern(Generic[T]):
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._1m: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'average_1m'))
self._1w: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'average_1w'))
self._1y: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'average_1y'))
self._24h: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'average_24h'))
self.base: SeriesPattern18[T] = SeriesPattern18(client, acc)
class _1m1w1y24hPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._1m: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '1m_rate'))
self._1w: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '1w_rate'))
self._1y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '1y_rate'))
self._24h: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, '24h_rate'))
class _1m1w1y24hPattern6:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._1m: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, '1m'))
self._1w: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, '1w'))
self._1y: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, '1y'))
self._24h: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, '24h'))
class _1m1w1y24hPattern5:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._1m: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '1m'))
self._1w: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '1w'))
self._1y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '1y'))
self._24h: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '24h'))
class _1m1w1y2wPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._1m: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, '1m'))
self._1w: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, '1w'))
self._1y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, '1y'))
self._2w: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, '2w'))
class _1m1w1y24hPattern3:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._1m: CentsUsdPattern = CentsUsdPattern(client, _m(acc, '1m'))
self._1w: CentsUsdPattern = CentsUsdPattern(client, _m(acc, '1w'))
self._1y: CentsUsdPattern = CentsUsdPattern(client, _m(acc, '1y'))
self._24h: CentsUsdPattern = CentsUsdPattern(client, _m(acc, '24h'))
class _1m1w1y24hPattern4:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._1m: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, '1m'))
self._1w: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, '1w'))
self._1y: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, '1y'))
self._24h: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, '24h'))
class _1y2y4yAllPattern:
"""Pattern struct for repeated tree structure."""
pass
class AdjustedRatioValuePattern:
"""Pattern struct for repeated tree structure."""
pass
class BaseCumulativeDeltaSumPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.base: CentsUsdPattern = CentsUsdPattern(client, acc)
self.cumulative: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'cumulative'))
self.delta: AbsoluteRatePattern2 = AbsoluteRatePattern2(client, _m(acc, 'delta'))
self.sum: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, _m(acc, 'sum'))
class BaseCumulativeNegativeSumPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str, disc: str):
"""Create pattern node with accumulated series name."""
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, disc))
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, f'{disc}_cumulative'))
self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, f'neg_{disc}'))
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, _m(acc, f'{disc}_sum'))
class BothReactivatedReceivingSendingPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.both: _1m1w1y24hBasePattern[StoredU32] = _1m1w1y24hBasePattern(client, _m(acc, 'both'))
self.reactivated: _1m1w1y24hBasePattern[StoredU32] = _1m1w1y24hBasePattern(client, _m(acc, 'reactivated'))
self.receiving: _1m1w1y24hBasePattern[StoredU32] = _1m1w1y24hBasePattern(client, _m(acc, 'receiving'))
self.sending: _1m1w1y24hBasePattern[StoredU32] = _1m1w1y24hBasePattern(client, _m(acc, 'sending'))
class BtcCentsSatsUsdPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.btc: SeriesPattern1[Bitcoin] = SeriesPattern1(client, acc)
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents'))
self.sats: SeriesPattern1[Sats] = SeriesPattern1(client, _m(acc, 'sats'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'usd'))
class CentsDeltaToUsdPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents'))
self.delta: AbsoluteRatePattern2 = AbsoluteRatePattern2(client, _m(acc, 'delta'))
self.to_own_mcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, 'to_own_mcap'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, acc)
class CentsToUsdPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.cents: SeriesPattern1[CentsSigned] = SeriesPattern1(client, _m(acc, 'cents'))
self.to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'to_own_gross_pnl'))
self.to_own_mcap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'to_own_mcap'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, acc)
class CoindaysCoinyearsDormancyTransferPattern:
"""Pattern struct for repeated tree structure."""
pass
class LossNetNuplProfitPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.loss: BaseCumulativeNegativeSumPattern = BaseCumulativeNegativeSumPattern(client, acc, 'unrealized_loss')
self.net_pnl: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'net_unrealized_pnl'))
self.nupl: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'nupl'))
self.profit: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, _m(acc, 'unrealized_profit'))
class OutputsRealizedSupplyUnrealizedPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count'))
self.realized: CapLossMvrvPriceProfitSoprPattern = CapLossMvrvPriceProfitSoprPattern(client, acc)
self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, _m(acc, 'supply'))
self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, acc)
class OutputsRealizedSupplyUnrealizedPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count'))
self.realized: CapLossMvrvPriceProfitSoprPattern = CapLossMvrvPriceProfitSoprPattern(client, acc)
self.supply: DeltaHalfTotalPattern = DeltaHalfTotalPattern(client, _m(acc, 'supply'))
self.unrealized: NuplPattern = NuplPattern(client, _m(acc, 'nupl'))
class _1m1w1y24hPattern(Generic[T]):
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._1m: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, '1m'))
self._1w: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, '1w'))
self._1y: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, '1y'))
self._24h: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, '24h'))
class BaseCumulativeSumPattern4:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, acc)
self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'cumulative'))
self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, _m(acc, 'sum'))
class BaseCumulativeToPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.base: SeriesPattern1[Cents] = SeriesPattern1(client, acc)
self.cumulative: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cumulative'))
self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, 'to_rcap'))
class BaseCumulativeSumPattern3:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, acc)
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'cumulative'))
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, _m(acc, 'sum'))
class BaseCumulativeSumPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.base: SeriesPattern1[StoredU32] = SeriesPattern1(client, acc)
self.cumulative: SeriesPattern1[StoredU64] = SeriesPattern1(client, _m(acc, 'cumulative'))
self.sum: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'sum'))
class BlocksDominanceRewardsPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.blocks_mined: BaseCumulativeSumPattern2 = BaseCumulativeSumPattern2(client, _m(acc, 'blocks_mined'))
self.dominance: _1m1w1y24hBpsPercentRatioPattern = _1m1w1y24hBpsPercentRatioPattern(client, _m(acc, 'dominance'))
self.rewards: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, _m(acc, 'rewards'))
class BpsPercentRatioPattern3:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.bps: SeriesPattern1[BasisPoints16] = SeriesPattern1(client, _m(acc, 'bps'))
self.percent: SeriesPattern1[StoredF32] = SeriesPattern1(client, acc)
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'ratio'))
class BpsPercentRatioPattern4:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.bps: SeriesPattern1[BasisPoints32] = SeriesPattern1(client, _m(acc, 'bps'))
self.percent: SeriesPattern1[StoredF32] = SeriesPattern1(client, acc)
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'ratio'))
class BpsPriceRatioPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str, disc: str):
"""Create pattern node with accumulated series name."""
self.bps: SeriesPattern1[BasisPoints32] = SeriesPattern1(client, _m(acc, f'ratio_{disc}_bps'))
self.price: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, disc))
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, f'ratio_{disc}'))
class BpsPercentRatioPattern5:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.bps: SeriesPattern1[BasisPointsSigned16] = SeriesPattern1(client, _m(acc, 'bps'))
self.percent: SeriesPattern1[StoredF32] = SeriesPattern1(client, acc)
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'ratio'))
class BpsPercentRatioPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.bps: SeriesPattern1[BasisPointsSigned32] = SeriesPattern1(client, _m(acc, 'bps'))
self.percent: SeriesPattern1[StoredF32] = SeriesPattern1(client, acc)
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'ratio'))
class CentsSatsUsdPattern3:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.cents: SeriesPattern2[Cents] = SeriesPattern2(client, _m(acc, 'cents'))
self.sats: SeriesPattern2[Sats] = SeriesPattern2(client, _m(acc, 'sats'))
self.usd: SeriesPattern2[Dollars] = SeriesPattern2(client, acc)
class CentsDeltaUsdPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents'))
self.delta: AbsoluteRatePattern2 = AbsoluteRatePattern2(client, _m(acc, 'delta'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, acc)
class CentsSatsUsdPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents'))
self.sats: SeriesPattern1[SatsFract] = SeriesPattern1(client, _m(acc, 'sats'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, acc)
class CumulativeRollingSumPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.cumulative: SeriesPattern1[StoredU64] = SeriesPattern1(client, _m(acc, 'cumulative'))
self.rolling: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, acc)
self.sum: SeriesPattern1[StoredU64] = SeriesPattern1(client, _m(acc, 'sum'))
class DeltaHalfTotalPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.delta: AbsoluteRatePattern = AbsoluteRatePattern(client, _m(acc, 'delta'))
self.half: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'half'))
self.total: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, acc)
class GreedNetPainPattern:
"""Pattern struct for repeated tree structure."""
pass
class LossNuplProfitPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.loss: BaseCumulativeNegativeSumPattern = BaseCumulativeNegativeSumPattern(client, acc, 'unrealized_loss')
self.nupl: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'nupl'))
self.profit: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, _m(acc, 'unrealized_profit'))
class NuplRealizedSupplyPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.nupl: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'nupl'))
self.realized_cap: AllSthPattern = AllSthPattern(client, acc)
self.supply: AllSthPattern2 = AllSthPattern2(client, acc)
class RatioValuePattern2:
"""Pattern struct for repeated tree structure."""
pass
class RatioValuePattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.ratio: _24hPattern = _24hPattern(client, _m(acc, 'sopr_24h'))
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, _m(acc, 'value_created'))
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, _m(acc, 'value_destroyed'))
class _6bBlockTxPattern(Generic[T]):
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._6b: AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern[T] = AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, '6b'))
self.block: AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern[T] = AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, acc)
self.tx_index: SeriesPattern19[T] = SeriesPattern19(client, acc)
class BaseCumulativeSumPattern(Generic[T]):
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.base: SeriesPattern1[T] = SeriesPattern1(client, acc)
self.cumulative: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, 'cumulative'))
self.sum: _1m1w1y24hPattern[T] = _1m1w1y24hPattern(client, _m(acc, 'sum'))
class AbsoluteRatePattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.absolute: _1m1w1y24hPattern[StoredI64] = _1m1w1y24hPattern(client, acc)
self.rate: _1m1w1y24hPattern2 = _1m1w1y24hPattern2(client, acc)
class AbsoluteRatePattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.absolute: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, acc)
self.rate: _1m1w1y24hPattern2 = _1m1w1y24hPattern2(client, acc)
class AllSthPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.all: BtcCentsDeltaSatsUsdPattern = BtcCentsDeltaSatsUsdPattern(client, _m(acc, 'supply'))
self.sth: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'sth_supply'))
class AllSthPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.all: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'realized_cap'))
self.sth: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'sth_realized_cap'))
class BaseDeltaPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.base: SeriesPattern1[StoredU64] = SeriesPattern1(client, acc)
self.delta: AbsoluteRatePattern = AbsoluteRatePattern(client, _m(acc, 'delta'))
class BlocksDominancePattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.blocks_mined: BaseCumulativeSumPattern2 = BaseCumulativeSumPattern2(client, _m(acc, 'blocks_mined'))
self.dominance: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'dominance'))
class BpsRatioPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.bps: SeriesPattern1[BasisPoints32] = SeriesPattern1(client, _m(acc, 'bps'))
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, acc)
class BpsRatioPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.bps: SeriesPattern1[BasisPointsSigned32] = SeriesPattern1(client, _m(acc, 'bps'))
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, acc)
class CentsUsdPattern2:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, acc)
class CentsUsdPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.cents: SeriesPattern1[CentsSigned] = SeriesPattern1(client, _m(acc, 'cents'))
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, acc)
class CoindaysTransferPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.coindays_destroyed: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, _m(acc, 'coindays_destroyed'))
self.transfer_volume: BaseCumulativeInSumPattern = BaseCumulativeInSumPattern(client, _m(acc, 'transfer_volume'))
class InPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.in_loss: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'loss'))
self.in_profit: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'profit'))
class PriceRatioPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str, disc: str):
"""Create pattern node with accumulated series name."""
self.price: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, disc))
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, f'ratio_{disc}'))
class SdSmaPattern:
"""Pattern struct for repeated tree structure."""
pass
class ToPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.to_mcap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'mcap'))
self.to_rcap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'rcap'))
class ValuePattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, _m(acc, 'created'))
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, _m(acc, 'destroyed'))
class _24hPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self._24h: SeriesPattern1[StoredF64] = SeriesPattern1(client, acc)
class NuplPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.nupl: BpsRatioPattern = BpsRatioPattern(client, acc)
class PricePattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.price: BpsCentsPercentilesRatioSatsUsdPattern = BpsCentsPercentilesRatioSatsUsdPattern(client, acc)
class UnspentPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated series name."""
self.unspent_count: BaseDeltaPattern = BaseDeltaPattern(client, acc)
# Series tree classes
class SeriesTree_Blocks_Difficulty:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.value: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'difficulty')
self.hashrate: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'difficulty_hashrate')
self.adjustment: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'difficulty_adjustment')
self.epoch: SeriesPattern1[Epoch] = SeriesPattern1(client, 'difficulty_epoch')
self.blocks_to_retarget: SeriesPattern1[StoredU32] = SeriesPattern1(client, 'blocks_to_retarget')
self.days_to_retarget: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'days_to_retarget')
class SeriesTree_Blocks_Time:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.timestamp: SeriesPattern1[Timestamp] = SeriesPattern1(client, 'timestamp')
self.date: SeriesPattern18[Date] = SeriesPattern18(client, 'date')
self.timestamp_monotonic: SeriesPattern18[Timestamp] = SeriesPattern18(client, 'timestamp_monotonic')
class SeriesTree_Blocks_Size:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: SeriesPattern18[StoredU64] = SeriesPattern18(client, 'total_size')
self.cumulative: SeriesPattern1[StoredU64] = SeriesPattern1(client, 'block_size_cumulative')
self.sum: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_size_sum')
self.average: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_size_average')
self.min: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_size_min')
self.max: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_size_max')
self.pct10: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_size_pct10')
self.pct25: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_size_pct25')
self.median: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_size_median')
self.pct75: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_size_pct75')
self.pct90: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_size_pct90')
class SeriesTree_Blocks_Weight:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: SeriesPattern18[Weight] = SeriesPattern18(client, 'block_weight')
self.cumulative: SeriesPattern1[Weight] = SeriesPattern1(client, 'block_weight_cumulative')
self.sum: _1m1w1y24hPattern[Weight] = _1m1w1y24hPattern(client, 'block_weight_sum')
self.average: _1m1w1y24hPattern[Weight] = _1m1w1y24hPattern(client, 'block_weight_average')
self.min: _1m1w1y24hPattern[Weight] = _1m1w1y24hPattern(client, 'block_weight_min')
self.max: _1m1w1y24hPattern[Weight] = _1m1w1y24hPattern(client, 'block_weight_max')
self.pct10: _1m1w1y24hPattern[Weight] = _1m1w1y24hPattern(client, 'block_weight_pct10')
self.pct25: _1m1w1y24hPattern[Weight] = _1m1w1y24hPattern(client, 'block_weight_pct25')
self.median: _1m1w1y24hPattern[Weight] = _1m1w1y24hPattern(client, 'block_weight_median')
self.pct75: _1m1w1y24hPattern[Weight] = _1m1w1y24hPattern(client, 'block_weight_pct75')
self.pct90: _1m1w1y24hPattern[Weight] = _1m1w1y24hPattern(client, 'block_weight_pct90')
class SeriesTree_Blocks_Count:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.target: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_count_target')
self.total: BaseCumulativeSumPattern2 = BaseCumulativeSumPattern2(client, 'block_count')
class SeriesTree_Blocks_Lookback:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._1h: SeriesPattern18[Height] = SeriesPattern18(client, 'height_1h_ago')
self._24h: SeriesPattern18[Height] = SeriesPattern18(client, 'height_24h_ago')
self._3d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_3d_ago')
self._1w: SeriesPattern18[Height] = SeriesPattern18(client, 'height_1w_ago')
self._8d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_8d_ago')
self._9d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_9d_ago')
self._12d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_12d_ago')
self._13d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_13d_ago')
self._2w: SeriesPattern18[Height] = SeriesPattern18(client, 'height_2w_ago')
self._21d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_21d_ago')
self._26d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_26d_ago')
self._1m: SeriesPattern18[Height] = SeriesPattern18(client, 'height_1m_ago')
self._34d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_34d_ago')
self._55d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_55d_ago')
self._2m: SeriesPattern18[Height] = SeriesPattern18(client, 'height_2m_ago')
self._9w: SeriesPattern18[Height] = SeriesPattern18(client, 'height_9w_ago')
self._12w: SeriesPattern18[Height] = SeriesPattern18(client, 'height_12w_ago')
self._89d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_89d_ago')
self._3m: SeriesPattern18[Height] = SeriesPattern18(client, 'height_3m_ago')
self._14w: SeriesPattern18[Height] = SeriesPattern18(client, 'height_14w_ago')
self._111d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_111d_ago')
self._144d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_144d_ago')
self._6m: SeriesPattern18[Height] = SeriesPattern18(client, 'height_6m_ago')
self._26w: SeriesPattern18[Height] = SeriesPattern18(client, 'height_26w_ago')
self._200d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_200d_ago')
self._9m: SeriesPattern18[Height] = SeriesPattern18(client, 'height_9m_ago')
self._350d: SeriesPattern18[Height] = SeriesPattern18(client, 'height_350d_ago')
self._12m: SeriesPattern18[Height] = SeriesPattern18(client, 'height_12m_ago')
self._1y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_1y_ago')
self._14m: SeriesPattern18[Height] = SeriesPattern18(client, 'height_14m_ago')
self._2y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_2y_ago')
self._26m: SeriesPattern18[Height] = SeriesPattern18(client, 'height_26m_ago')
self._3y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_3y_ago')
self._200w: SeriesPattern18[Height] = SeriesPattern18(client, 'height_200w_ago')
self._4y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_4y_ago')
self._5y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_5y_ago')
self._6y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_6y_ago')
self._8y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_8y_ago')
self._9y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_9y_ago')
self._10y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_10y_ago')
self._12y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_12y_ago')
self._14y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_14y_ago')
self._26y: SeriesPattern18[Height] = SeriesPattern18(client, 'height_26y_ago')
class SeriesTree_Blocks_Fullness:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.bps: SeriesPattern18[BasisPoints16] = SeriesPattern18(client, 'block_fullness_bps')
self.ratio: SeriesPattern18[StoredF32] = SeriesPattern18(client, 'block_fullness_ratio')
self.percent: SeriesPattern18[StoredF32] = SeriesPattern18(client, 'block_fullness')
class SeriesTree_Blocks_Halving:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.epoch: SeriesPattern1[Halving] = SeriesPattern1(client, 'halving_epoch')
self.blocks_to_halving: SeriesPattern1[StoredU32] = SeriesPattern1(client, 'blocks_to_halving')
self.days_to_halving: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'days_to_halving')
class SeriesTree_Blocks:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.blockhash: SeriesPattern18[BlockHash] = SeriesPattern18(client, 'blockhash')
self.difficulty: SeriesTree_Blocks_Difficulty = SeriesTree_Blocks_Difficulty(client)
self.time: SeriesTree_Blocks_Time = SeriesTree_Blocks_Time(client)
self.size: SeriesTree_Blocks_Size = SeriesTree_Blocks_Size(client)
self.weight: SeriesTree_Blocks_Weight = SeriesTree_Blocks_Weight(client)
self.count: SeriesTree_Blocks_Count = SeriesTree_Blocks_Count(client)
self.lookback: SeriesTree_Blocks_Lookback = SeriesTree_Blocks_Lookback(client)
self.interval: _1m1w1y24hBasePattern[Timestamp] = _1m1w1y24hBasePattern(client, 'block_interval')
self.vbytes: AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2 = AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, 'block_vbytes')
self.fullness: SeriesTree_Blocks_Fullness = SeriesTree_Blocks_Fullness(client)
self.halving: SeriesTree_Blocks_Halving = SeriesTree_Blocks_Halving(client)
class SeriesTree_Transactions_Raw:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_tx_index: SeriesPattern18[TxIndex] = SeriesPattern18(client, 'first_tx_index')
self.height: SeriesPattern19[Height] = SeriesPattern19(client, 'height')
self.txid: SeriesPattern19[Txid] = SeriesPattern19(client, 'txid')
self.tx_version: SeriesPattern19[TxVersion] = SeriesPattern19(client, 'tx_version')
self.raw_locktime: SeriesPattern19[RawLockTime] = SeriesPattern19(client, 'raw_locktime')
self.base_size: SeriesPattern19[StoredU32] = SeriesPattern19(client, 'base_size')
self.total_size: SeriesPattern19[StoredU32] = SeriesPattern19(client, 'total_size')
self.is_explicitly_rbf: SeriesPattern19[StoredBool] = SeriesPattern19(client, 'is_explicitly_rbf')
self.first_txin_index: SeriesPattern19[TxInIndex] = SeriesPattern19(client, 'first_txin_index')
self.first_txout_index: SeriesPattern19[TxOutIndex] = SeriesPattern19(client, 'first_txout_index')
class SeriesTree_Transactions_Count:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.total: AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2 = AverageBaseCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, 'tx_count')
self.is_coinbase: SeriesPattern19[StoredBool] = SeriesPattern19(client, 'is_coinbase')
class SeriesTree_Transactions_Size_Weight:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.tx_index: SeriesPattern19[Weight] = SeriesPattern19(client, 'tx_weight')
self.block: AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern2 = AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern2(client, 'tx_weight')
self._6b: AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern2 = AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern2(client, 'tx_weight_6b')
class SeriesTree_Transactions_Size:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.vsize: _6bBlockTxPattern[VSize] = _6bBlockTxPattern(client, 'tx_vsize')
self.weight: SeriesTree_Transactions_Size_Weight = SeriesTree_Transactions_Size_Weight(client)
class SeriesTree_Transactions_Fees:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.input_value: SeriesPattern19[Sats] = SeriesPattern19(client, 'input_value')
self.output_value: SeriesPattern19[Sats] = SeriesPattern19(client, 'output_value')
self.fee: _6bBlockTxPattern[Sats] = _6bBlockTxPattern(client, 'fee')
self.fee_rate: _6bBlockTxPattern[FeeRate] = _6bBlockTxPattern(client, 'fee_rate')
class SeriesTree_Transactions_Versions:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.v1: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'tx_v1')
self.v2: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'tx_v2')
self.v3: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'tx_v3')
class SeriesTree_Transactions_Volume:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.transfer_volume: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'transfer_volume_bis')
self.tx_per_sec: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'tx_per_sec')
self.outputs_per_sec: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'outputs_per_sec')
self.inputs_per_sec: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'inputs_per_sec')
class SeriesTree_Transactions:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.raw: SeriesTree_Transactions_Raw = SeriesTree_Transactions_Raw(client)
self.count: SeriesTree_Transactions_Count = SeriesTree_Transactions_Count(client)
self.size: SeriesTree_Transactions_Size = SeriesTree_Transactions_Size(client)
self.fees: SeriesTree_Transactions_Fees = SeriesTree_Transactions_Fees(client)
self.versions: SeriesTree_Transactions_Versions = SeriesTree_Transactions_Versions(client)
self.volume: SeriesTree_Transactions_Volume = SeriesTree_Transactions_Volume(client)
class SeriesTree_Inputs_Raw:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_txin_index: SeriesPattern18[TxInIndex] = SeriesPattern18(client, 'first_txin_index')
self.outpoint: SeriesPattern20[OutPoint] = SeriesPattern20(client, 'outpoint')
self.tx_index: SeriesPattern20[TxIndex] = SeriesPattern20(client, 'tx_index')
self.output_type: SeriesPattern20[OutputType] = SeriesPattern20(client, 'output_type')
self.type_index: SeriesPattern20[TypeIndex] = SeriesPattern20(client, 'type_index')
class SeriesTree_Inputs_Spent:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.txout_index: SeriesPattern20[TxOutIndex] = SeriesPattern20(client, 'txout_index')
self.value: SeriesPattern20[Sats] = SeriesPattern20(client, 'value')
class SeriesTree_Inputs:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.raw: SeriesTree_Inputs_Raw = SeriesTree_Inputs_Raw(client)
self.spent: SeriesTree_Inputs_Spent = SeriesTree_Inputs_Spent(client)
self.count: CumulativeRollingSumPattern = CumulativeRollingSumPattern(client, 'input_count')
class SeriesTree_Outputs_Raw:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_txout_index: SeriesPattern18[TxOutIndex] = SeriesPattern18(client, 'first_txout_index')
self.value: SeriesPattern21[Sats] = SeriesPattern21(client, 'value')
self.output_type: SeriesPattern21[OutputType] = SeriesPattern21(client, 'output_type')
self.type_index: SeriesPattern21[TypeIndex] = SeriesPattern21(client, 'type_index')
self.tx_index: SeriesPattern21[TxIndex] = SeriesPattern21(client, 'tx_index')
class SeriesTree_Outputs_Spent:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.txin_index: SeriesPattern21[TxInIndex] = SeriesPattern21(client, 'txin_index')
class SeriesTree_Outputs_Count:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.total: CumulativeRollingSumPattern = CumulativeRollingSumPattern(client, 'output_count')
self.unspent: SeriesPattern1[StoredU64] = SeriesPattern1(client, 'utxo_count_bis')
class SeriesTree_Outputs:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.raw: SeriesTree_Outputs_Raw = SeriesTree_Outputs_Raw(client)
self.spent: SeriesTree_Outputs_Spent = SeriesTree_Outputs_Spent(client)
self.count: SeriesTree_Outputs_Count = SeriesTree_Outputs_Count(client)
class SeriesTree_Addrs_Raw_P2pk65:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[P2PK65AddrIndex] = SeriesPattern18(client, 'first_p2pk65_addr_index')
self.bytes: SeriesPattern27[P2PK65Bytes] = SeriesPattern27(client, 'p2pk65_bytes')
class SeriesTree_Addrs_Raw_P2pk33:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[P2PK33AddrIndex] = SeriesPattern18(client, 'first_p2pk33_addr_index')
self.bytes: SeriesPattern26[P2PK33Bytes] = SeriesPattern26(client, 'p2pk33_bytes')
class SeriesTree_Addrs_Raw_P2pkh:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[P2PKHAddrIndex] = SeriesPattern18(client, 'first_p2pkh_addr_index')
self.bytes: SeriesPattern28[P2PKHBytes] = SeriesPattern28(client, 'p2pkh_bytes')
class SeriesTree_Addrs_Raw_P2sh:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[P2SHAddrIndex] = SeriesPattern18(client, 'first_p2sh_addr_index')
self.bytes: SeriesPattern29[P2SHBytes] = SeriesPattern29(client, 'p2sh_bytes')
class SeriesTree_Addrs_Raw_P2wpkh:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[P2WPKHAddrIndex] = SeriesPattern18(client, 'first_p2wpkh_addr_index')
self.bytes: SeriesPattern31[P2WPKHBytes] = SeriesPattern31(client, 'p2wpkh_bytes')
class SeriesTree_Addrs_Raw_P2wsh:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[P2WSHAddrIndex] = SeriesPattern18(client, 'first_p2wsh_addr_index')
self.bytes: SeriesPattern32[P2WSHBytes] = SeriesPattern32(client, 'p2wsh_bytes')
class SeriesTree_Addrs_Raw_P2tr:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[P2TRAddrIndex] = SeriesPattern18(client, 'first_p2tr_addr_index')
self.bytes: SeriesPattern30[P2TRBytes] = SeriesPattern30(client, 'p2tr_bytes')
class SeriesTree_Addrs_Raw_P2a:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[P2AAddrIndex] = SeriesPattern18(client, 'first_p2a_addr_index')
self.bytes: SeriesPattern24[P2ABytes] = SeriesPattern24(client, 'p2a_bytes')
class SeriesTree_Addrs_Raw:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.p2pk65: SeriesTree_Addrs_Raw_P2pk65 = SeriesTree_Addrs_Raw_P2pk65(client)
self.p2pk33: SeriesTree_Addrs_Raw_P2pk33 = SeriesTree_Addrs_Raw_P2pk33(client)
self.p2pkh: SeriesTree_Addrs_Raw_P2pkh = SeriesTree_Addrs_Raw_P2pkh(client)
self.p2sh: SeriesTree_Addrs_Raw_P2sh = SeriesTree_Addrs_Raw_P2sh(client)
self.p2wpkh: SeriesTree_Addrs_Raw_P2wpkh = SeriesTree_Addrs_Raw_P2wpkh(client)
self.p2wsh: SeriesTree_Addrs_Raw_P2wsh = SeriesTree_Addrs_Raw_P2wsh(client)
self.p2tr: SeriesTree_Addrs_Raw_P2tr = SeriesTree_Addrs_Raw_P2tr(client)
self.p2a: SeriesTree_Addrs_Raw_P2a = SeriesTree_Addrs_Raw_P2a(client)
class SeriesTree_Addrs_Indexes:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.p2a: SeriesPattern24[AnyAddrIndex] = SeriesPattern24(client, 'any_addr_index')
self.p2pk33: SeriesPattern26[AnyAddrIndex] = SeriesPattern26(client, 'any_addr_index')
self.p2pk65: SeriesPattern27[AnyAddrIndex] = SeriesPattern27(client, 'any_addr_index')
self.p2pkh: SeriesPattern28[AnyAddrIndex] = SeriesPattern28(client, 'any_addr_index')
self.p2sh: SeriesPattern29[AnyAddrIndex] = SeriesPattern29(client, 'any_addr_index')
self.p2tr: SeriesPattern30[AnyAddrIndex] = SeriesPattern30(client, 'any_addr_index')
self.p2wpkh: SeriesPattern31[AnyAddrIndex] = SeriesPattern31(client, 'any_addr_index')
self.p2wsh: SeriesPattern32[AnyAddrIndex] = SeriesPattern32(client, 'any_addr_index')
self.funded: SeriesPattern34[FundedAddrIndex] = SeriesPattern34(client, 'funded_addr_index')
self.empty: SeriesPattern35[EmptyAddrIndex] = SeriesPattern35(client, 'empty_addr_index')
class SeriesTree_Addrs_Data:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.funded: SeriesPattern34[FundedAddrData] = SeriesPattern34(client, 'funded_addr_data')
self.empty: SeriesPattern35[EmptyAddrData] = SeriesPattern35(client, 'empty_addr_data')
class SeriesTree_Addrs_Activity:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.all: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'addr_activity')
self.p2pk65: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2pk65_addr_activity')
self.p2pk33: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2pk33_addr_activity')
self.p2pkh: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2pkh_addr_activity')
self.p2sh: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2sh_addr_activity')
self.p2wpkh: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2wpkh_addr_activity')
self.p2wsh: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2wsh_addr_activity')
self.p2tr: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2tr_addr_activity')
self.p2a: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2a_addr_activity')
class SeriesTree_Addrs_New:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.all: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'new_addr_count')
self.p2pk65: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2pk65_new_addr_count')
self.p2pk33: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2pk33_new_addr_count')
self.p2pkh: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2pkh_new_addr_count')
self.p2sh: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2sh_new_addr_count')
self.p2wpkh: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2wpkh_new_addr_count')
self.p2wsh: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2wsh_new_addr_count')
self.p2tr: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2tr_new_addr_count')
self.p2a: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2a_new_addr_count')
class SeriesTree_Addrs_Delta:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.all: AbsoluteRatePattern = AbsoluteRatePattern(client, 'addr_count')
self.p2pk65: AbsoluteRatePattern = AbsoluteRatePattern(client, 'p2pk65_addr_count')
self.p2pk33: AbsoluteRatePattern = AbsoluteRatePattern(client, 'p2pk33_addr_count')
self.p2pkh: AbsoluteRatePattern = AbsoluteRatePattern(client, 'p2pkh_addr_count')
self.p2sh: AbsoluteRatePattern = AbsoluteRatePattern(client, 'p2sh_addr_count')
self.p2wpkh: AbsoluteRatePattern = AbsoluteRatePattern(client, 'p2wpkh_addr_count')
self.p2wsh: AbsoluteRatePattern = AbsoluteRatePattern(client, 'p2wsh_addr_count')
self.p2tr: AbsoluteRatePattern = AbsoluteRatePattern(client, 'p2tr_addr_count')
self.p2a: AbsoluteRatePattern = AbsoluteRatePattern(client, 'p2a_addr_count')
class SeriesTree_Addrs:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.raw: SeriesTree_Addrs_Raw = SeriesTree_Addrs_Raw(client)
self.indexes: SeriesTree_Addrs_Indexes = SeriesTree_Addrs_Indexes(client)
self.data: SeriesTree_Addrs_Data = SeriesTree_Addrs_Data(client)
self.funded: AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern3 = AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern3(client, 'addr_count')
self.empty: AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern3 = AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern3(client, 'empty_addr_count')
self.activity: SeriesTree_Addrs_Activity = SeriesTree_Addrs_Activity(client)
self.total: AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern3 = AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern3(client, 'total_addr_count')
self.new: SeriesTree_Addrs_New = SeriesTree_Addrs_New(client)
self.delta: SeriesTree_Addrs_Delta = SeriesTree_Addrs_Delta(client)
class SeriesTree_Scripts_Raw_Empty:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[EmptyOutputIndex] = SeriesPattern18(client, 'first_empty_output_index')
self.to_tx_index: SeriesPattern22[TxIndex] = SeriesPattern22(client, 'tx_index')
class SeriesTree_Scripts_Raw_OpReturn:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[OpReturnIndex] = SeriesPattern18(client, 'first_op_return_index')
self.to_tx_index: SeriesPattern23[TxIndex] = SeriesPattern23(client, 'tx_index')
class SeriesTree_Scripts_Raw_P2ms:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[P2MSOutputIndex] = SeriesPattern18(client, 'first_p2ms_output_index')
self.to_tx_index: SeriesPattern25[TxIndex] = SeriesPattern25(client, 'tx_index')
class SeriesTree_Scripts_Raw_Unknown:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.first_index: SeriesPattern18[UnknownOutputIndex] = SeriesPattern18(client, 'first_unknown_output_index')
self.to_tx_index: SeriesPattern33[TxIndex] = SeriesPattern33(client, 'tx_index')
class SeriesTree_Scripts_Raw:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.empty: SeriesTree_Scripts_Raw_Empty = SeriesTree_Scripts_Raw_Empty(client)
self.op_return: SeriesTree_Scripts_Raw_OpReturn = SeriesTree_Scripts_Raw_OpReturn(client)
self.p2ms: SeriesTree_Scripts_Raw_P2ms = SeriesTree_Scripts_Raw_P2ms(client)
self.unknown: SeriesTree_Scripts_Raw_Unknown = SeriesTree_Scripts_Raw_Unknown(client)
class SeriesTree_Scripts_Count:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.p2a: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2a_count')
self.p2ms: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2ms_count')
self.p2pk33: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2pk33_count')
self.p2pk65: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2pk65_count')
self.p2pkh: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2pkh_count')
self.p2sh: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2sh_count')
self.p2tr: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2tr_count')
self.p2wpkh: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2wpkh_count')
self.p2wsh: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'p2wsh_count')
self.op_return: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'op_return_count')
self.empty_output: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'empty_output_count')
self.unknown_output: BaseCumulativeSumPattern[StoredU64] = BaseCumulativeSumPattern(client, 'unknown_output_count')
class SeriesTree_Scripts_Value:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.op_return: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'op_return_value')
class SeriesTree_Scripts:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.raw: SeriesTree_Scripts_Raw = SeriesTree_Scripts_Raw(client)
self.count: SeriesTree_Scripts_Count = SeriesTree_Scripts_Count(client)
self.value: SeriesTree_Scripts_Value = SeriesTree_Scripts_Value(client)
class SeriesTree_Mining_Rewards_Subsidy:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'subsidy')
self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'subsidy_cumulative')
self.dominance: _1m1w1y24hBpsPercentRatioPattern = _1m1w1y24hBpsPercentRatioPattern(client, 'subsidy_dominance')
self.sma_1y: CentsUsdPattern2 = CentsUsdPattern2(client, 'subsidy_sma_1y')
class SeriesTree_Mining_Rewards_Fees_ToSubsidyRatio:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._24h: BpsRatioPattern2 = BpsRatioPattern2(client, 'fee_to_subsidy_ratio_24h')
self._1w: BpsRatioPattern2 = BpsRatioPattern2(client, 'fee_to_subsidy_ratio_1w')
self._1m: BpsRatioPattern2 = BpsRatioPattern2(client, 'fee_to_subsidy_ratio_1m')
self._1y: BpsRatioPattern2 = BpsRatioPattern2(client, 'fee_to_subsidy_ratio_1y')
class SeriesTree_Mining_Rewards_Fees:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'fees')
self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'fees_cumulative')
self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_sum')
self.average: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_average')
self.min: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_min')
self.max: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_max')
self.pct10: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_pct10')
self.pct25: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_pct25')
self.median: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_median')
self.pct75: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_pct75')
self.pct90: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_pct90')
self.dominance: _1m1w1y24hBpsPercentRatioPattern = _1m1w1y24hBpsPercentRatioPattern(client, 'fee_dominance')
self.to_subsidy_ratio: SeriesTree_Mining_Rewards_Fees_ToSubsidyRatio = SeriesTree_Mining_Rewards_Fees_ToSubsidyRatio(client)
class SeriesTree_Mining_Rewards_Unclaimed:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'unclaimed_rewards')
self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'unclaimed_rewards_cumulative')
class SeriesTree_Mining_Rewards:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.coinbase: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'coinbase')
self.subsidy: SeriesTree_Mining_Rewards_Subsidy = SeriesTree_Mining_Rewards_Subsidy(client)
self.fees: SeriesTree_Mining_Rewards_Fees = SeriesTree_Mining_Rewards_Fees(client)
self.unclaimed: SeriesTree_Mining_Rewards_Unclaimed = SeriesTree_Mining_Rewards_Unclaimed(client)
class SeriesTree_Mining_Hashrate_Rate_Sma:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._1w: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'hash_rate_sma_1w')
self._1m: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'hash_rate_sma_1m')
self._2m: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'hash_rate_sma_2m')
self._1y: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'hash_rate_sma_1y')
class SeriesTree_Mining_Hashrate_Rate:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'hash_rate')
self.sma: SeriesTree_Mining_Hashrate_Rate_Sma = SeriesTree_Mining_Hashrate_Rate_Sma(client)
self.ath: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'hash_rate_ath')
self.drawdown: BpsPercentRatioPattern5 = BpsPercentRatioPattern5(client, 'hash_rate_drawdown')
class SeriesTree_Mining_Hashrate:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.rate: SeriesTree_Mining_Hashrate_Rate = SeriesTree_Mining_Hashrate_Rate(client)
self.price: PhsReboundThsPattern = PhsReboundThsPattern(client, 'hash_price')
self.value: PhsReboundThsPattern = PhsReboundThsPattern(client, 'hash_value')
class SeriesTree_Mining:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.rewards: SeriesTree_Mining_Rewards = SeriesTree_Mining_Rewards(client)
self.hashrate: SeriesTree_Mining_Hashrate = SeriesTree_Mining_Hashrate(client)
class SeriesTree_Positions:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.block: SeriesPattern18[BlkPosition] = SeriesPattern18(client, 'position')
self.tx: SeriesPattern19[BlkPosition] = SeriesPattern19(client, 'position')
class SeriesTree_Cointime_Activity:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.coinblocks_created: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'coinblocks_created')
self.coinblocks_stored: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'coinblocks_stored')
self.liveliness: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'liveliness')
self.vaultedness: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'vaultedness')
self.ratio: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'activity_to_vaultedness')
self.coinblocks_destroyed: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'coinblocks_destroyed')
class SeriesTree_Cointime_Supply:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.vaulted: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'vaulted_supply')
self.active: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'active_supply')
class SeriesTree_Cointime_Value:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.destroyed: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'cointime_value_destroyed')
self.created: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'cointime_value_created')
self.stored: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'cointime_value_stored')
self.vocdd: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'vocdd')
class SeriesTree_Cointime_Cap:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.thermo: CentsUsdPattern2 = CentsUsdPattern2(client, 'thermo_cap')
self.investor: CentsUsdPattern2 = CentsUsdPattern2(client, 'investor_cap')
self.vaulted: CentsUsdPattern2 = CentsUsdPattern2(client, 'vaulted_cap')
self.active: CentsUsdPattern2 = CentsUsdPattern2(client, 'active_cap')
self.cointime: CentsUsdPattern2 = CentsUsdPattern2(client, 'cointime_cap')
self.aviv: BpsRatioPattern2 = BpsRatioPattern2(client, 'aviv_ratio')
class SeriesTree_Cointime_Prices:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.vaulted: BpsCentsPercentilesRatioSatsUsdPattern = BpsCentsPercentilesRatioSatsUsdPattern(client, 'vaulted_price')
self.active: BpsCentsPercentilesRatioSatsUsdPattern = BpsCentsPercentilesRatioSatsUsdPattern(client, 'active_price')
self.true_market_mean: BpsCentsPercentilesRatioSatsUsdPattern = BpsCentsPercentilesRatioSatsUsdPattern(client, 'true_market_mean')
self.cointime: BpsCentsPercentilesRatioSatsUsdPattern = BpsCentsPercentilesRatioSatsUsdPattern(client, 'cointime_price')
class SeriesTree_Cointime_Adjusted:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.inflation_rate: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'cointime_adj_inflation_rate')
self.tx_velocity_native: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'cointime_adj_tx_velocity')
self.tx_velocity_fiat: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'cointime_adj_tx_velocity_fiat')
class SeriesTree_Cointime_ReserveRisk:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.value: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'reserve_risk')
self.vocdd_median_1y: SeriesPattern18[StoredF64] = SeriesPattern18(client, 'vocdd_median_1y')
self.hodl_bank: SeriesPattern18[StoredF64] = SeriesPattern18(client, 'hodl_bank')
class SeriesTree_Cointime:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.activity: SeriesTree_Cointime_Activity = SeriesTree_Cointime_Activity(client)
self.supply: SeriesTree_Cointime_Supply = SeriesTree_Cointime_Supply(client)
self.value: SeriesTree_Cointime_Value = SeriesTree_Cointime_Value(client)
self.cap: SeriesTree_Cointime_Cap = SeriesTree_Cointime_Cap(client)
self.prices: SeriesTree_Cointime_Prices = SeriesTree_Cointime_Prices(client)
self.adjusted: SeriesTree_Cointime_Adjusted = SeriesTree_Cointime_Adjusted(client)
self.reserve_risk: SeriesTree_Cointime_ReserveRisk = SeriesTree_Cointime_ReserveRisk(client)
class SeriesTree_Constants:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._0: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_0')
self._1: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_1')
self._2: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_2')
self._3: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_3')
self._4: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_4')
self._20: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_20')
self._30: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_30')
self._38_2: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'constant_38_2')
self._50: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_50')
self._61_8: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'constant_61_8')
self._70: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_70')
self._80: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_80')
self._100: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_100')
self._600: SeriesPattern1[StoredU16] = SeriesPattern1(client, 'constant_600')
self.minus_1: SeriesPattern1[StoredI8] = SeriesPattern1(client, 'constant_minus_1')
self.minus_2: SeriesPattern1[StoredI8] = SeriesPattern1(client, 'constant_minus_2')
self.minus_3: SeriesPattern1[StoredI8] = SeriesPattern1(client, 'constant_minus_3')
self.minus_4: SeriesPattern1[StoredI8] = SeriesPattern1(client, 'constant_minus_4')
class SeriesTree_Indexes_Addr_P2pk33:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern26[P2PK33AddrIndex] = SeriesPattern26(client, 'p2pk33_addr_index')
self.addr: SeriesPattern26[Addr] = SeriesPattern26(client, 'p2pk33_addr')
class SeriesTree_Indexes_Addr_P2pk65:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern27[P2PK65AddrIndex] = SeriesPattern27(client, 'p2pk65_addr_index')
self.addr: SeriesPattern27[Addr] = SeriesPattern27(client, 'p2pk65_addr')
class SeriesTree_Indexes_Addr_P2pkh:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern28[P2PKHAddrIndex] = SeriesPattern28(client, 'p2pkh_addr_index')
self.addr: SeriesPattern28[Addr] = SeriesPattern28(client, 'p2pkh_addr')
class SeriesTree_Indexes_Addr_P2sh:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern29[P2SHAddrIndex] = SeriesPattern29(client, 'p2sh_addr_index')
self.addr: SeriesPattern29[Addr] = SeriesPattern29(client, 'p2sh_addr')
class SeriesTree_Indexes_Addr_P2tr:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern30[P2TRAddrIndex] = SeriesPattern30(client, 'p2tr_addr_index')
self.addr: SeriesPattern30[Addr] = SeriesPattern30(client, 'p2tr_addr')
class SeriesTree_Indexes_Addr_P2wpkh:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern31[P2WPKHAddrIndex] = SeriesPattern31(client, 'p2wpkh_addr_index')
self.addr: SeriesPattern31[Addr] = SeriesPattern31(client, 'p2wpkh_addr')
class SeriesTree_Indexes_Addr_P2wsh:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern32[P2WSHAddrIndex] = SeriesPattern32(client, 'p2wsh_addr_index')
self.addr: SeriesPattern32[Addr] = SeriesPattern32(client, 'p2wsh_addr')
class SeriesTree_Indexes_Addr_P2a:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern24[P2AAddrIndex] = SeriesPattern24(client, 'p2a_addr_index')
self.addr: SeriesPattern24[Addr] = SeriesPattern24(client, 'p2a_addr')
class SeriesTree_Indexes_Addr_P2ms:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern25[P2MSOutputIndex] = SeriesPattern25(client, 'p2ms_output_index')
class SeriesTree_Indexes_Addr_Empty:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern22[EmptyOutputIndex] = SeriesPattern22(client, 'empty_output_index')
class SeriesTree_Indexes_Addr_Unknown:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern33[UnknownOutputIndex] = SeriesPattern33(client, 'unknown_output_index')
class SeriesTree_Indexes_Addr_OpReturn:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern23[OpReturnIndex] = SeriesPattern23(client, 'op_return_index')
class SeriesTree_Indexes_Addr:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.p2pk33: SeriesTree_Indexes_Addr_P2pk33 = SeriesTree_Indexes_Addr_P2pk33(client)
self.p2pk65: SeriesTree_Indexes_Addr_P2pk65 = SeriesTree_Indexes_Addr_P2pk65(client)
self.p2pkh: SeriesTree_Indexes_Addr_P2pkh = SeriesTree_Indexes_Addr_P2pkh(client)
self.p2sh: SeriesTree_Indexes_Addr_P2sh = SeriesTree_Indexes_Addr_P2sh(client)
self.p2tr: SeriesTree_Indexes_Addr_P2tr = SeriesTree_Indexes_Addr_P2tr(client)
self.p2wpkh: SeriesTree_Indexes_Addr_P2wpkh = SeriesTree_Indexes_Addr_P2wpkh(client)
self.p2wsh: SeriesTree_Indexes_Addr_P2wsh = SeriesTree_Indexes_Addr_P2wsh(client)
self.p2a: SeriesTree_Indexes_Addr_P2a = SeriesTree_Indexes_Addr_P2a(client)
self.p2ms: SeriesTree_Indexes_Addr_P2ms = SeriesTree_Indexes_Addr_P2ms(client)
self.empty: SeriesTree_Indexes_Addr_Empty = SeriesTree_Indexes_Addr_Empty(client)
self.unknown: SeriesTree_Indexes_Addr_Unknown = SeriesTree_Indexes_Addr_Unknown(client)
self.op_return: SeriesTree_Indexes_Addr_OpReturn = SeriesTree_Indexes_Addr_OpReturn(client)
class SeriesTree_Indexes_Height:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern18[Height] = SeriesPattern18(client, 'height')
self.minute10: SeriesPattern18[Minute10] = SeriesPattern18(client, 'minute10')
self.minute30: SeriesPattern18[Minute30] = SeriesPattern18(client, 'minute30')
self.hour1: SeriesPattern18[Hour1] = SeriesPattern18(client, 'hour1')
self.hour4: SeriesPattern18[Hour4] = SeriesPattern18(client, 'hour4')
self.hour12: SeriesPattern18[Hour12] = SeriesPattern18(client, 'hour12')
self.day1: SeriesPattern18[Day1] = SeriesPattern18(client, 'day1')
self.day3: SeriesPattern18[Day3] = SeriesPattern18(client, 'day3')
self.epoch: SeriesPattern18[Epoch] = SeriesPattern18(client, 'epoch')
self.halving: SeriesPattern18[Halving] = SeriesPattern18(client, 'halving')
self.week1: SeriesPattern18[Week1] = SeriesPattern18(client, 'week1')
self.month1: SeriesPattern18[Month1] = SeriesPattern18(client, 'month1')
self.month3: SeriesPattern18[Month3] = SeriesPattern18(client, 'month3')
self.month6: SeriesPattern18[Month6] = SeriesPattern18(client, 'month6')
self.year1: SeriesPattern18[Year1] = SeriesPattern18(client, 'year1')
self.year10: SeriesPattern18[Year10] = SeriesPattern18(client, 'year10')
self.tx_index_count: SeriesPattern18[StoredU64] = SeriesPattern18(client, 'tx_index_count')
class SeriesTree_Indexes_Epoch:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern17[Epoch] = SeriesPattern17(client, 'epoch')
self.first_height: SeriesPattern17[Height] = SeriesPattern17(client, 'first_height')
self.height_count: SeriesPattern17[StoredU64] = SeriesPattern17(client, 'height_count')
class SeriesTree_Indexes_Halving:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern16[Halving] = SeriesPattern16(client, 'halving')
self.first_height: SeriesPattern16[Height] = SeriesPattern16(client, 'first_height')
class SeriesTree_Indexes_Minute10:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern3[Minute10] = SeriesPattern3(client, 'minute10_index')
self.first_height: SeriesPattern3[Height] = SeriesPattern3(client, 'first_height')
class SeriesTree_Indexes_Minute30:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern4[Minute30] = SeriesPattern4(client, 'minute30_index')
self.first_height: SeriesPattern4[Height] = SeriesPattern4(client, 'first_height')
class SeriesTree_Indexes_Hour1:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern5[Hour1] = SeriesPattern5(client, 'hour1_index')
self.first_height: SeriesPattern5[Height] = SeriesPattern5(client, 'first_height')
class SeriesTree_Indexes_Hour4:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern6[Hour4] = SeriesPattern6(client, 'hour4_index')
self.first_height: SeriesPattern6[Height] = SeriesPattern6(client, 'first_height')
class SeriesTree_Indexes_Hour12:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern7[Hour12] = SeriesPattern7(client, 'hour12_index')
self.first_height: SeriesPattern7[Height] = SeriesPattern7(client, 'first_height')
class SeriesTree_Indexes_Day1:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern8[Day1] = SeriesPattern8(client, 'day1_index')
self.date: SeriesPattern8[Date] = SeriesPattern8(client, 'date')
self.first_height: SeriesPattern8[Height] = SeriesPattern8(client, 'first_height')
self.height_count: SeriesPattern8[StoredU64] = SeriesPattern8(client, 'height_count')
class SeriesTree_Indexes_Day3:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern9[Day3] = SeriesPattern9(client, 'day3_index')
self.first_height: SeriesPattern9[Height] = SeriesPattern9(client, 'first_height')
class SeriesTree_Indexes_Week1:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern10[Week1] = SeriesPattern10(client, 'week1_index')
self.date: SeriesPattern10[Date] = SeriesPattern10(client, 'date')
self.first_height: SeriesPattern10[Height] = SeriesPattern10(client, 'first_height')
class SeriesTree_Indexes_Month1:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern11[Month1] = SeriesPattern11(client, 'month1_index')
self.date: SeriesPattern11[Date] = SeriesPattern11(client, 'date')
self.first_height: SeriesPattern11[Height] = SeriesPattern11(client, 'first_height')
class SeriesTree_Indexes_Month3:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern12[Month3] = SeriesPattern12(client, 'month3_index')
self.date: SeriesPattern12[Date] = SeriesPattern12(client, 'date')
self.first_height: SeriesPattern12[Height] = SeriesPattern12(client, 'first_height')
class SeriesTree_Indexes_Month6:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern13[Month6] = SeriesPattern13(client, 'month6_index')
self.date: SeriesPattern13[Date] = SeriesPattern13(client, 'date')
self.first_height: SeriesPattern13[Height] = SeriesPattern13(client, 'first_height')
class SeriesTree_Indexes_Year1:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern14[Year1] = SeriesPattern14(client, 'year1_index')
self.date: SeriesPattern14[Date] = SeriesPattern14(client, 'date')
self.first_height: SeriesPattern14[Height] = SeriesPattern14(client, 'first_height')
class SeriesTree_Indexes_Year10:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern15[Year10] = SeriesPattern15(client, 'year10_index')
self.date: SeriesPattern15[Date] = SeriesPattern15(client, 'date')
self.first_height: SeriesPattern15[Height] = SeriesPattern15(client, 'first_height')
class SeriesTree_Indexes_TxIndex:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern19[TxIndex] = SeriesPattern19(client, 'tx_index')
self.input_count: SeriesPattern19[StoredU64] = SeriesPattern19(client, 'input_count')
self.output_count: SeriesPattern19[StoredU64] = SeriesPattern19(client, 'output_count')
class SeriesTree_Indexes_TxinIndex:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern20[TxInIndex] = SeriesPattern20(client, 'txin_index')
class SeriesTree_Indexes_TxoutIndex:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.identity: SeriesPattern21[TxOutIndex] = SeriesPattern21(client, 'txout_index')
class SeriesTree_Indexes:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.addr: SeriesTree_Indexes_Addr = SeriesTree_Indexes_Addr(client)
self.height: SeriesTree_Indexes_Height = SeriesTree_Indexes_Height(client)
self.epoch: SeriesTree_Indexes_Epoch = SeriesTree_Indexes_Epoch(client)
self.halving: SeriesTree_Indexes_Halving = SeriesTree_Indexes_Halving(client)
self.minute10: SeriesTree_Indexes_Minute10 = SeriesTree_Indexes_Minute10(client)
self.minute30: SeriesTree_Indexes_Minute30 = SeriesTree_Indexes_Minute30(client)
self.hour1: SeriesTree_Indexes_Hour1 = SeriesTree_Indexes_Hour1(client)
self.hour4: SeriesTree_Indexes_Hour4 = SeriesTree_Indexes_Hour4(client)
self.hour12: SeriesTree_Indexes_Hour12 = SeriesTree_Indexes_Hour12(client)
self.day1: SeriesTree_Indexes_Day1 = SeriesTree_Indexes_Day1(client)
self.day3: SeriesTree_Indexes_Day3 = SeriesTree_Indexes_Day3(client)
self.week1: SeriesTree_Indexes_Week1 = SeriesTree_Indexes_Week1(client)
self.month1: SeriesTree_Indexes_Month1 = SeriesTree_Indexes_Month1(client)
self.month3: SeriesTree_Indexes_Month3 = SeriesTree_Indexes_Month3(client)
self.month6: SeriesTree_Indexes_Month6 = SeriesTree_Indexes_Month6(client)
self.year1: SeriesTree_Indexes_Year1 = SeriesTree_Indexes_Year1(client)
self.year10: SeriesTree_Indexes_Year10 = SeriesTree_Indexes_Year10(client)
self.tx_index: SeriesTree_Indexes_TxIndex = SeriesTree_Indexes_TxIndex(client)
self.txin_index: SeriesTree_Indexes_TxinIndex = SeriesTree_Indexes_TxinIndex(client)
self.txout_index: SeriesTree_Indexes_TxoutIndex = SeriesTree_Indexes_TxoutIndex(client)
class SeriesTree_Indicators_Dormancy:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.supply_adjusted: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'dormancy_supply_adjusted')
self.flow: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'dormancy_flow')
class SeriesTree_Indicators:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.puell_multiple: BpsRatioPattern2 = BpsRatioPattern2(client, 'puell_multiple')
self.nvt: BpsRatioPattern2 = BpsRatioPattern2(client, 'nvt')
self.gini: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'gini')
self.rhodl_ratio: BpsRatioPattern2 = BpsRatioPattern2(client, 'rhodl_ratio')
self.thermo_cap_multiple: BpsRatioPattern2 = BpsRatioPattern2(client, 'thermo_cap_multiple')
self.coindays_destroyed_supply_adjusted: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'coindays_destroyed_supply_adjusted')
self.coinyears_destroyed_supply_adjusted: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'coinyears_destroyed_supply_adjusted')
self.dormancy: SeriesTree_Indicators_Dormancy = SeriesTree_Indicators_Dormancy(client)
self.stock_to_flow: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'stock_to_flow')
self.seller_exhaustion: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'seller_exhaustion')
class SeriesTree_Market_Ath:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.high: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_ath')
self.drawdown: BpsPercentRatioPattern5 = BpsPercentRatioPattern5(client, 'price_drawdown')
self.days_since: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'days_since_price_ath')
self.years_since: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'years_since_price_ath')
self.max_days_between: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'max_days_between_price_ath')
self.max_years_between: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'max_years_between_price_ath')
class SeriesTree_Market_Lookback:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._24h: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_24h')
self._1w: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_1w')
self._1m: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_1m')
self._3m: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_3m')
self._6m: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_6m')
self._1y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_1y')
self._2y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_2y')
self._3y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_3y')
self._4y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_4y')
self._5y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_5y')
self._6y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_6y')
self._8y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_8y')
self._10y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_past_10y')
class SeriesTree_Market_Returns_Periods:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._24h: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_24h')
self._1w: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_1w')
self._1m: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_1m')
self._3m: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_3m')
self._6m: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_6m')
self._1y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_1y')
self._2y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_2y')
self._3y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_3y')
self._4y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_4y')
self._5y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_5y')
self._6y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_6y')
self._8y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_8y')
self._10y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'price_return_10y')
class SeriesTree_Market_Returns_Sd24h_24h:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sma: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_return_24h_sma_24h')
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_return_24h_sd_24h')
class SeriesTree_Market_Returns_Sd24h_1w:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sma: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_return_24h_sma_1w')
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_return_24h_sd_1w')
class SeriesTree_Market_Returns_Sd24h_1m:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sma: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_return_24h_sma_1m')
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_return_24h_sd_1m')
class SeriesTree_Market_Returns_Sd24h_1y:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sma: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_return_24h_sma_1y')
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_return_24h_sd_1y')
class SeriesTree_Market_Returns_Sd24h:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._24h: SeriesTree_Market_Returns_Sd24h_24h = SeriesTree_Market_Returns_Sd24h_24h(client)
self._1w: SeriesTree_Market_Returns_Sd24h_1w = SeriesTree_Market_Returns_Sd24h_1w(client)
self._1m: SeriesTree_Market_Returns_Sd24h_1m = SeriesTree_Market_Returns_Sd24h_1m(client)
self._1y: SeriesTree_Market_Returns_Sd24h_1y = SeriesTree_Market_Returns_Sd24h_1y(client)
class SeriesTree_Market_Returns:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.periods: SeriesTree_Market_Returns_Periods = SeriesTree_Market_Returns_Periods(client)
self.cagr: _10y2y3y4y5y6y8yPattern = _10y2y3y4y5y6y8yPattern(client, 'price_cagr')
self.sd_24h: SeriesTree_Market_Returns_Sd24h = SeriesTree_Market_Returns_Sd24h(client)
class SeriesTree_Market_Range:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.min: _1m1w1y2wPattern = _1m1w1y2wPattern(client, 'price_min')
self.max: _1m1w1y2wPattern = _1m1w1y2wPattern(client, 'price_max')
self.true_range: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_true_range')
self.true_range_sum_2w: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_true_range_sum_2w')
self.choppiness_index_2w: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'price_choppiness_index_2w')
class SeriesTree_Market_MovingAverage_Sma_200d:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, 'price_sma_200d')
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, 'price_sma_200d_cents')
self.sats: SeriesPattern1[SatsFract] = SeriesPattern1(client, 'price_sma_200d_sats')
self.bps: SeriesPattern1[BasisPoints32] = SeriesPattern1(client, 'price_sma_200d_ratio_bps')
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_sma_200d_ratio')
self.x2_4: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_sma_200d_x2_4')
self.x0_8: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_sma_200d_x0_8')
class SeriesTree_Market_MovingAverage_Sma_350d:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, 'price_sma_350d')
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, 'price_sma_350d_cents')
self.sats: SeriesPattern1[SatsFract] = SeriesPattern1(client, 'price_sma_350d_sats')
self.bps: SeriesPattern1[BasisPoints32] = SeriesPattern1(client, 'price_sma_350d_ratio_bps')
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'price_sma_350d_ratio')
self.x2: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'price_sma_350d_x2')
class SeriesTree_Market_MovingAverage_Sma:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._1w: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_1w')
self._8d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_8d')
self._13d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_13d')
self._21d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_21d')
self._1m: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_1m')
self._34d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_34d')
self._55d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_55d')
self._89d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_89d')
self._111d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_111d')
self._144d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_144d')
self._200d: SeriesTree_Market_MovingAverage_Sma_200d = SeriesTree_Market_MovingAverage_Sma_200d(client)
self._350d: SeriesTree_Market_MovingAverage_Sma_350d = SeriesTree_Market_MovingAverage_Sma_350d(client)
self._1y: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_1y')
self._2y: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_2y')
self._200w: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_200w')
self._4y: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_sma_4y')
class SeriesTree_Market_MovingAverage_Ema:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._1w: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_1w')
self._8d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_8d')
self._12d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_12d')
self._13d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_13d')
self._21d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_21d')
self._26d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_26d')
self._1m: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_1m')
self._34d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_34d')
self._55d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_55d')
self._89d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_89d')
self._144d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_144d')
self._200d: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_200d')
self._1y: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_1y')
self._2y: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_2y')
self._200w: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_200w')
self._4y: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'price_ema_4y')
class SeriesTree_Market_MovingAverage:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sma: SeriesTree_Market_MovingAverage_Sma = SeriesTree_Market_MovingAverage_Sma(client)
self.ema: SeriesTree_Market_MovingAverage_Ema = SeriesTree_Market_MovingAverage_Ema(client)
class SeriesTree_Market_Dca_Period_CostBasis:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._1w: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_1w')
self._1m: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_1m')
self._3m: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_3m')
self._6m: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_6m')
self._1y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_1y')
self._2y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_2y')
self._3y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_3y')
self._4y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_4y')
self._5y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_5y')
self._6y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_6y')
self._8y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_8y')
self._10y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_10y')
class SeriesTree_Market_Dca_Period:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.stack: _10y1m1w1y2y3m3y4y5y6m6y8yPattern3 = _10y1m1w1y2y3m3y4y5y6m6y8yPattern3(client, 'dca_stack')
self.cost_basis: SeriesTree_Market_Dca_Period_CostBasis = SeriesTree_Market_Dca_Period_CostBasis(client)
self.return_: _10y1m1w1y2y3m3y4y5y6m6y8yPattern2 = _10y1m1w1y2y3m3y4y5y6m6y8yPattern2(client, 'dca_return')
self.cagr: _10y2y3y4y5y6y8yPattern = _10y2y3y4y5y6y8yPattern(client, 'dca_cagr')
self.lump_sum_stack: _10y1m1w1y2y3m3y4y5y6m6y8yPattern3 = _10y1m1w1y2y3m3y4y5y6m6y8yPattern3(client, 'lump_sum_stack')
self.lump_sum_return: _10y1m1w1y2y3m3y4y5y6m6y8yPattern2 = _10y1m1w1y2y3m3y4y5y6m6y8yPattern2(client, 'lump_sum_return')
class SeriesTree_Market_Dca_Class_Stack:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.from_2015: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2015')
self.from_2016: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2016')
self.from_2017: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2017')
self.from_2018: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2018')
self.from_2019: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2019')
self.from_2020: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2020')
self.from_2021: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2021')
self.from_2022: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2022')
self.from_2023: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2023')
self.from_2024: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2024')
self.from_2025: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2025')
self.from_2026: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'dca_stack_from_2026')
class SeriesTree_Market_Dca_Class_CostBasis:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.from_2015: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2015')
self.from_2016: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2016')
self.from_2017: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2017')
self.from_2018: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2018')
self.from_2019: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2019')
self.from_2020: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2020')
self.from_2021: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2021')
self.from_2022: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2022')
self.from_2023: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2023')
self.from_2024: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2024')
self.from_2025: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2025')
self.from_2026: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'dca_cost_basis_from_2026')
class SeriesTree_Market_Dca_Class_Return:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.from_2015: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2015')
self.from_2016: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2016')
self.from_2017: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2017')
self.from_2018: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2018')
self.from_2019: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2019')
self.from_2020: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2020')
self.from_2021: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2021')
self.from_2022: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2022')
self.from_2023: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2023')
self.from_2024: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2024')
self.from_2025: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2025')
self.from_2026: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'dca_return_from_2026')
class SeriesTree_Market_Dca_Class:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.stack: SeriesTree_Market_Dca_Class_Stack = SeriesTree_Market_Dca_Class_Stack(client)
self.cost_basis: SeriesTree_Market_Dca_Class_CostBasis = SeriesTree_Market_Dca_Class_CostBasis(client)
self.return_: SeriesTree_Market_Dca_Class_Return = SeriesTree_Market_Dca_Class_Return(client)
class SeriesTree_Market_Dca:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sats_per_day: SeriesPattern18[Sats] = SeriesPattern18(client, 'dca_sats_per_day')
self.period: SeriesTree_Market_Dca_Period = SeriesTree_Market_Dca_Period(client)
self.class_: SeriesTree_Market_Dca_Class = SeriesTree_Market_Dca_Class(client)
class SeriesTree_Market_Technical_Rsi:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._24h: AverageGainsLossesRsiStochPattern = AverageGainsLossesRsiStochPattern(client, 'rsi', '24h')
self._1w: AverageGainsLossesRsiStochPattern = AverageGainsLossesRsiStochPattern(client, 'rsi', '1w')
self._1m: AverageGainsLossesRsiStochPattern = AverageGainsLossesRsiStochPattern(client, 'rsi', '1m')
class SeriesTree_Market_Technical_Macd_24h:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.ema_fast: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_ema_fast_24h')
self.ema_slow: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_ema_slow_24h')
self.line: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_line_24h')
self.signal: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_signal_24h')
self.histogram: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_histogram_24h')
class SeriesTree_Market_Technical_Macd_1w:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.ema_fast: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_ema_fast_1w')
self.ema_slow: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_ema_slow_1w')
self.line: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_line_1w')
self.signal: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_signal_1w')
self.histogram: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_histogram_1w')
class SeriesTree_Market_Technical_Macd_1m:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.ema_fast: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_ema_fast_1m')
self.ema_slow: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_ema_slow_1m')
self.line: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_line_1m')
self.signal: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_signal_1m')
self.histogram: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'macd_histogram_1m')
class SeriesTree_Market_Technical_Macd:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._24h: SeriesTree_Market_Technical_Macd_24h = SeriesTree_Market_Technical_Macd_24h(client)
self._1w: SeriesTree_Market_Technical_Macd_1w = SeriesTree_Market_Technical_Macd_1w(client)
self._1m: SeriesTree_Market_Technical_Macd_1m = SeriesTree_Market_Technical_Macd_1m(client)
class SeriesTree_Market_Technical:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.rsi: SeriesTree_Market_Technical_Rsi = SeriesTree_Market_Technical_Rsi(client)
self.stoch_k: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'stoch_k')
self.stoch_d: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'stoch_d')
self.pi_cycle: BpsRatioPattern2 = BpsRatioPattern2(client, 'pi_cycle')
self.macd: SeriesTree_Market_Technical_Macd = SeriesTree_Market_Technical_Macd(client)
class SeriesTree_Market:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.ath: SeriesTree_Market_Ath = SeriesTree_Market_Ath(client)
self.lookback: SeriesTree_Market_Lookback = SeriesTree_Market_Lookback(client)
self.returns: SeriesTree_Market_Returns = SeriesTree_Market_Returns(client)
self.volatility: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'price_volatility')
self.range: SeriesTree_Market_Range = SeriesTree_Market_Range(client)
self.moving_average: SeriesTree_Market_MovingAverage = SeriesTree_Market_MovingAverage(client)
self.dca: SeriesTree_Market_Dca = SeriesTree_Market_Dca(client)
self.technical: SeriesTree_Market_Technical = SeriesTree_Market_Technical(client)
class SeriesTree_Pools_Major:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.unknown: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'unknown')
self.luxor: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'luxor')
self.btccom: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btccom')
self.btctop: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btctop')
self.btcguild: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btcguild')
self.eligius: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'eligius')
self.f2pool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'f2pool')
self.braiinspool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'braiinspool')
self.antpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'antpool')
self.btcc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btcc')
self.bwpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bwpool')
self.bitfury: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitfury')
self.viabtc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'viabtc')
self.poolin: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'poolin')
self.spiderpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'spiderpool')
self.binancepool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'binancepool')
self.foundryusa: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'foundryusa')
self.sbicrypto: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'sbicrypto')
self.marapool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'marapool')
self.secpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'secpool')
self.ocean: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'ocean')
self.whitepool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'whitepool')
class SeriesTree_Pools_Minor:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.blockfills: BlocksDominancePattern = BlocksDominancePattern(client, 'blockfills')
self.ultimuspool: BlocksDominancePattern = BlocksDominancePattern(client, 'ultimuspool')
self.terrapool: BlocksDominancePattern = BlocksDominancePattern(client, 'terrapool')
self.onethash: BlocksDominancePattern = BlocksDominancePattern(client, 'onethash')
self.bitfarms: BlocksDominancePattern = BlocksDominancePattern(client, 'bitfarms')
self.huobipool: BlocksDominancePattern = BlocksDominancePattern(client, 'huobipool')
self.wayicn: BlocksDominancePattern = BlocksDominancePattern(client, 'wayicn')
self.canoepool: BlocksDominancePattern = BlocksDominancePattern(client, 'canoepool')
self.bitcoincom: BlocksDominancePattern = BlocksDominancePattern(client, 'bitcoincom')
self.pool175btc: BlocksDominancePattern = BlocksDominancePattern(client, 'pool175btc')
self.gbminers: BlocksDominancePattern = BlocksDominancePattern(client, 'gbminers')
self.axbt: BlocksDominancePattern = BlocksDominancePattern(client, 'axbt')
self.asicminer: BlocksDominancePattern = BlocksDominancePattern(client, 'asicminer')
self.bitminter: BlocksDominancePattern = BlocksDominancePattern(client, 'bitminter')
self.bitcoinrussia: BlocksDominancePattern = BlocksDominancePattern(client, 'bitcoinrussia')
self.btcserv: BlocksDominancePattern = BlocksDominancePattern(client, 'btcserv')
self.simplecoinus: BlocksDominancePattern = BlocksDominancePattern(client, 'simplecoinus')
self.ozcoin: BlocksDominancePattern = BlocksDominancePattern(client, 'ozcoin')
self.eclipsemc: BlocksDominancePattern = BlocksDominancePattern(client, 'eclipsemc')
self.maxbtc: BlocksDominancePattern = BlocksDominancePattern(client, 'maxbtc')
self.triplemining: BlocksDominancePattern = BlocksDominancePattern(client, 'triplemining')
self.coinlab: BlocksDominancePattern = BlocksDominancePattern(client, 'coinlab')
self.pool50btc: BlocksDominancePattern = BlocksDominancePattern(client, 'pool50btc')
self.ghashio: BlocksDominancePattern = BlocksDominancePattern(client, 'ghashio')
self.stminingcorp: BlocksDominancePattern = BlocksDominancePattern(client, 'stminingcorp')
self.bitparking: BlocksDominancePattern = BlocksDominancePattern(client, 'bitparking')
self.mmpool: BlocksDominancePattern = BlocksDominancePattern(client, 'mmpool')
self.polmine: BlocksDominancePattern = BlocksDominancePattern(client, 'polmine')
self.kncminer: BlocksDominancePattern = BlocksDominancePattern(client, 'kncminer')
self.bitalo: BlocksDominancePattern = BlocksDominancePattern(client, 'bitalo')
self.hhtt: BlocksDominancePattern = BlocksDominancePattern(client, 'hhtt')
self.megabigpower: BlocksDominancePattern = BlocksDominancePattern(client, 'megabigpower')
self.mtred: BlocksDominancePattern = BlocksDominancePattern(client, 'mtred')
self.nmcbit: BlocksDominancePattern = BlocksDominancePattern(client, 'nmcbit')
self.yourbtcnet: BlocksDominancePattern = BlocksDominancePattern(client, 'yourbtcnet')
self.givemecoins: BlocksDominancePattern = BlocksDominancePattern(client, 'givemecoins')
self.multicoinco: BlocksDominancePattern = BlocksDominancePattern(client, 'multicoinco')
self.bcpoolio: BlocksDominancePattern = BlocksDominancePattern(client, 'bcpoolio')
self.cointerra: BlocksDominancePattern = BlocksDominancePattern(client, 'cointerra')
self.kanopool: BlocksDominancePattern = BlocksDominancePattern(client, 'kanopool')
self.solock: BlocksDominancePattern = BlocksDominancePattern(client, 'solock')
self.ckpool: BlocksDominancePattern = BlocksDominancePattern(client, 'ckpool')
self.nicehash: BlocksDominancePattern = BlocksDominancePattern(client, 'nicehash')
self.bitclub: BlocksDominancePattern = BlocksDominancePattern(client, 'bitclub')
self.bitcoinaffiliatenetwork: BlocksDominancePattern = BlocksDominancePattern(client, 'bitcoinaffiliatenetwork')
self.exxbw: BlocksDominancePattern = BlocksDominancePattern(client, 'exxbw')
self.bitsolo: BlocksDominancePattern = BlocksDominancePattern(client, 'bitsolo')
self.twentyoneinc: BlocksDominancePattern = BlocksDominancePattern(client, 'twentyoneinc')
self.digitalbtc: BlocksDominancePattern = BlocksDominancePattern(client, 'digitalbtc')
self.eightbaochi: BlocksDominancePattern = BlocksDominancePattern(client, 'eightbaochi')
self.mybtccoinpool: BlocksDominancePattern = BlocksDominancePattern(client, 'mybtccoinpool')
self.tbdice: BlocksDominancePattern = BlocksDominancePattern(client, 'tbdice')
self.hashpool: BlocksDominancePattern = BlocksDominancePattern(client, 'hashpool')
self.nexious: BlocksDominancePattern = BlocksDominancePattern(client, 'nexious')
self.bravomining: BlocksDominancePattern = BlocksDominancePattern(client, 'bravomining')
self.hotpool: BlocksDominancePattern = BlocksDominancePattern(client, 'hotpool')
self.okexpool: BlocksDominancePattern = BlocksDominancePattern(client, 'okexpool')
self.bcmonster: BlocksDominancePattern = BlocksDominancePattern(client, 'bcmonster')
self.onehash: BlocksDominancePattern = BlocksDominancePattern(client, 'onehash')
self.bixin: BlocksDominancePattern = BlocksDominancePattern(client, 'bixin')
self.tatmaspool: BlocksDominancePattern = BlocksDominancePattern(client, 'tatmaspool')
self.connectbtc: BlocksDominancePattern = BlocksDominancePattern(client, 'connectbtc')
self.batpool: BlocksDominancePattern = BlocksDominancePattern(client, 'batpool')
self.waterhole: BlocksDominancePattern = BlocksDominancePattern(client, 'waterhole')
self.dcexploration: BlocksDominancePattern = BlocksDominancePattern(client, 'dcexploration')
self.dcex: BlocksDominancePattern = BlocksDominancePattern(client, 'dcex')
self.btpool: BlocksDominancePattern = BlocksDominancePattern(client, 'btpool')
self.fiftyeightcoin: BlocksDominancePattern = BlocksDominancePattern(client, 'fiftyeightcoin')
self.bitcoinindia: BlocksDominancePattern = BlocksDominancePattern(client, 'bitcoinindia')
self.shawnp0wers: BlocksDominancePattern = BlocksDominancePattern(client, 'shawnp0wers')
self.phashio: BlocksDominancePattern = BlocksDominancePattern(client, 'phashio')
self.rigpool: BlocksDominancePattern = BlocksDominancePattern(client, 'rigpool')
self.haozhuzhu: BlocksDominancePattern = BlocksDominancePattern(client, 'haozhuzhu')
self.sevenpool: BlocksDominancePattern = BlocksDominancePattern(client, 'sevenpool')
self.miningkings: BlocksDominancePattern = BlocksDominancePattern(client, 'miningkings')
self.hashbx: BlocksDominancePattern = BlocksDominancePattern(client, 'hashbx')
self.dpool: BlocksDominancePattern = BlocksDominancePattern(client, 'dpool')
self.rawpool: BlocksDominancePattern = BlocksDominancePattern(client, 'rawpool')
self.haominer: BlocksDominancePattern = BlocksDominancePattern(client, 'haominer')
self.helix: BlocksDominancePattern = BlocksDominancePattern(client, 'helix')
self.bitcoinukraine: BlocksDominancePattern = BlocksDominancePattern(client, 'bitcoinukraine')
self.secretsuperstar: BlocksDominancePattern = BlocksDominancePattern(client, 'secretsuperstar')
self.tigerpoolnet: BlocksDominancePattern = BlocksDominancePattern(client, 'tigerpoolnet')
self.sigmapoolcom: BlocksDominancePattern = BlocksDominancePattern(client, 'sigmapoolcom')
self.okpooltop: BlocksDominancePattern = BlocksDominancePattern(client, 'okpooltop')
self.hummerpool: BlocksDominancePattern = BlocksDominancePattern(client, 'hummerpool')
self.tangpool: BlocksDominancePattern = BlocksDominancePattern(client, 'tangpool')
self.bytepool: BlocksDominancePattern = BlocksDominancePattern(client, 'bytepool')
self.novablock: BlocksDominancePattern = BlocksDominancePattern(client, 'novablock')
self.miningcity: BlocksDominancePattern = BlocksDominancePattern(client, 'miningcity')
self.minerium: BlocksDominancePattern = BlocksDominancePattern(client, 'minerium')
self.lubiancom: BlocksDominancePattern = BlocksDominancePattern(client, 'lubiancom')
self.okkong: BlocksDominancePattern = BlocksDominancePattern(client, 'okkong')
self.aaopool: BlocksDominancePattern = BlocksDominancePattern(client, 'aaopool')
self.emcdpool: BlocksDominancePattern = BlocksDominancePattern(client, 'emcdpool')
self.arkpool: BlocksDominancePattern = BlocksDominancePattern(client, 'arkpool')
self.purebtccom: BlocksDominancePattern = BlocksDominancePattern(client, 'purebtccom')
self.kucoinpool: BlocksDominancePattern = BlocksDominancePattern(client, 'kucoinpool')
self.entrustcharitypool: BlocksDominancePattern = BlocksDominancePattern(client, 'entrustcharitypool')
self.okminer: BlocksDominancePattern = BlocksDominancePattern(client, 'okminer')
self.titan: BlocksDominancePattern = BlocksDominancePattern(client, 'titan')
self.pegapool: BlocksDominancePattern = BlocksDominancePattern(client, 'pegapool')
self.btcnuggets: BlocksDominancePattern = BlocksDominancePattern(client, 'btcnuggets')
self.cloudhashing: BlocksDominancePattern = BlocksDominancePattern(client, 'cloudhashing')
self.digitalxmintsy: BlocksDominancePattern = BlocksDominancePattern(client, 'digitalxmintsy')
self.telco214: BlocksDominancePattern = BlocksDominancePattern(client, 'telco214')
self.btcpoolparty: BlocksDominancePattern = BlocksDominancePattern(client, 'btcpoolparty')
self.multipool: BlocksDominancePattern = BlocksDominancePattern(client, 'multipool')
self.transactioncoinmining: BlocksDominancePattern = BlocksDominancePattern(client, 'transactioncoinmining')
self.btcdig: BlocksDominancePattern = BlocksDominancePattern(client, 'btcdig')
self.trickysbtcpool: BlocksDominancePattern = BlocksDominancePattern(client, 'trickysbtcpool')
self.btcmp: BlocksDominancePattern = BlocksDominancePattern(client, 'btcmp')
self.eobot: BlocksDominancePattern = BlocksDominancePattern(client, 'eobot')
self.unomp: BlocksDominancePattern = BlocksDominancePattern(client, 'unomp')
self.patels: BlocksDominancePattern = BlocksDominancePattern(client, 'patels')
self.gogreenlight: BlocksDominancePattern = BlocksDominancePattern(client, 'gogreenlight')
self.bitcoinindiapool: BlocksDominancePattern = BlocksDominancePattern(client, 'bitcoinindiapool')
self.ekanembtc: BlocksDominancePattern = BlocksDominancePattern(client, 'ekanembtc')
self.canoe: BlocksDominancePattern = BlocksDominancePattern(client, 'canoe')
self.tiger: BlocksDominancePattern = BlocksDominancePattern(client, 'tiger')
self.onem1x: BlocksDominancePattern = BlocksDominancePattern(client, 'onem1x')
self.zulupool: BlocksDominancePattern = BlocksDominancePattern(client, 'zulupool')
self.wiz: BlocksDominancePattern = BlocksDominancePattern(client, 'wiz')
self.wk057: BlocksDominancePattern = BlocksDominancePattern(client, 'wk057')
self.futurebitapollosolo: BlocksDominancePattern = BlocksDominancePattern(client, 'futurebitapollosolo')
self.carbonnegative: BlocksDominancePattern = BlocksDominancePattern(client, 'carbonnegative')
self.portlandhodl: BlocksDominancePattern = BlocksDominancePattern(client, 'portlandhodl')
self.phoenix: BlocksDominancePattern = BlocksDominancePattern(client, 'phoenix')
self.neopool: BlocksDominancePattern = BlocksDominancePattern(client, 'neopool')
self.maxipool: BlocksDominancePattern = BlocksDominancePattern(client, 'maxipool')
self.bitfufupool: BlocksDominancePattern = BlocksDominancePattern(client, 'bitfufupool')
self.gdpool: BlocksDominancePattern = BlocksDominancePattern(client, 'gdpool')
self.miningdutch: BlocksDominancePattern = BlocksDominancePattern(client, 'miningdutch')
self.publicpool: BlocksDominancePattern = BlocksDominancePattern(client, 'publicpool')
self.miningsquared: BlocksDominancePattern = BlocksDominancePattern(client, 'miningsquared')
self.innopolistech: BlocksDominancePattern = BlocksDominancePattern(client, 'innopolistech')
self.btclab: BlocksDominancePattern = BlocksDominancePattern(client, 'btclab')
self.parasite: BlocksDominancePattern = BlocksDominancePattern(client, 'parasite')
self.redrockpool: BlocksDominancePattern = BlocksDominancePattern(client, 'redrockpool')
self.est3lar: BlocksDominancePattern = BlocksDominancePattern(client, 'est3lar')
class SeriesTree_Pools:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.pool: SeriesPattern18[PoolSlug] = SeriesPattern18(client, 'pool')
self.major: SeriesTree_Pools_Major = SeriesTree_Pools_Major(client)
self.minor: SeriesTree_Pools_Minor = SeriesTree_Pools_Minor(client)
class SeriesTree_Prices_Split:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.open: CentsSatsUsdPattern3 = CentsSatsUsdPattern3(client, 'price_open')
self.high: CentsSatsUsdPattern3 = CentsSatsUsdPattern3(client, 'price_high')
self.low: CentsSatsUsdPattern3 = CentsSatsUsdPattern3(client, 'price_low')
self.close: CentsSatsUsdPattern3 = CentsSatsUsdPattern3(client, 'price_close')
class SeriesTree_Prices_Ohlc:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.usd: SeriesPattern2[OHLCDollars] = SeriesPattern2(client, 'price_ohlc')
self.cents: SeriesPattern2[OHLCCents] = SeriesPattern2(client, 'price_ohlc_cents')
self.sats: SeriesPattern2[OHLCSats] = SeriesPattern2(client, 'price_ohlc_sats')
class SeriesTree_Prices_Spot:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, 'price')
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, 'price_cents')
self.sats: SeriesPattern1[Sats] = SeriesPattern1(client, 'price_sats')
class SeriesTree_Prices:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.split: SeriesTree_Prices_Split = SeriesTree_Prices_Split(client)
self.ohlc: SeriesTree_Prices_Ohlc = SeriesTree_Prices_Ohlc(client)
self.spot: SeriesTree_Prices_Spot = SeriesTree_Prices_Spot(client)
class SeriesTree_Supply_Velocity:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.native: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'velocity')
self.fiat: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'velocity_fiat')
class SeriesTree_Supply:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.state: SeriesPattern18[SupplyState] = SeriesPattern18(client, 'supply_state')
self.circulating: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'circulating_supply')
self.burned: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'unspendable_supply')
self.inflation_rate: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'inflation_rate')
self.velocity: SeriesTree_Supply_Velocity = SeriesTree_Supply_Velocity(client)
self.market_cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'market_cap')
self.market_minus_realized_cap_growth_rate: _1m1w1y24hPattern[BasisPointsSigned32] = _1m1w1y24hPattern(client, 'market_minus_realized_cap_growth_rate')
self.hodled_or_lost: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'hodled_or_lost_supply')
class SeriesTree_Cohorts_Utxo_All_Supply:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.total: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'supply')
self.half: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'supply_half')
self.delta: AbsoluteRatePattern = AbsoluteRatePattern(client, 'supply_delta')
self.in_profit: BtcCentsSatsToUsdPattern2 = BtcCentsSatsToUsdPattern2(client, 'supply_in_profit')
self.in_loss: BtcCentsSatsToUsdPattern2 = BtcCentsSatsToUsdPattern2(client, 'supply_in_loss')
class SeriesTree_Cohorts_Utxo_All_Activity:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.transfer_volume: BaseCumulativeInSumPattern = BaseCumulativeInSumPattern(client, 'transfer_volume')
self.coindays_destroyed: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'coindays_destroyed')
self.coinyears_destroyed: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'coinyears_destroyed')
self.dormancy: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'dormancy')
class SeriesTree_Cohorts_Utxo_All_Realized_Profit:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, 'realized_profit')
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, 'realized_profit_cumulative')
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, 'realized_profit_sum')
self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, 'realized_profit_to_rcap')
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'profit_value_created')
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'profit_value_destroyed')
self.distribution_flow: SeriesPattern1[Dollars] = SeriesPattern1(client, 'distribution_flow')
class SeriesTree_Cohorts_Utxo_All_Realized_Loss:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, 'realized_loss')
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, 'realized_loss_cumulative')
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, 'realized_loss_sum')
self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, 'neg_realized_loss')
self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, 'realized_loss_to_rcap')
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'loss_value_created')
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'loss_value_destroyed')
self.capitulation_flow: SeriesPattern1[Dollars] = SeriesPattern1(client, 'capitulation_flow')
class SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_All:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'realized_price_ratio_sd')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'realized_price_ratio_zscore')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'realized_price_0sd')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p0_5sd')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p1sd')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p1_5sd')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p2sd')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p2_5sd')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p3sd')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm0_5sd')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm1sd')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm1_5sd')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm2sd')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm2_5sd')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm3sd')
class SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_4y:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'realized_price_ratio_sd_4y')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'realized_price_ratio_zscore_4y')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'realized_price_0sd_4y')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p0_5sd_4y')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p1sd_4y')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p1_5sd_4y')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p2sd_4y')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p2_5sd_4y')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p3sd_4y')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm0_5sd_4y')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm1sd_4y')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm1_5sd_4y')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm2sd_4y')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm2_5sd_4y')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm3sd_4y')
class SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_2y:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'realized_price_ratio_sd_2y')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'realized_price_ratio_zscore_2y')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'realized_price_0sd_2y')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p0_5sd_2y')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p1sd_2y')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p1_5sd_2y')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p2sd_2y')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p2_5sd_2y')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p3sd_2y')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm0_5sd_2y')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm1sd_2y')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm1_5sd_2y')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm2sd_2y')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm2_5sd_2y')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm3sd_2y')
class SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_1y:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'realized_price_ratio_sd_1y')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'realized_price_ratio_zscore_1y')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'realized_price_0sd_1y')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p0_5sd_1y')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p1sd_1y')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p1_5sd_1y')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p2sd_1y')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p2_5sd_1y')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'p3sd_1y')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm0_5sd_1y')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm1sd_1y')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm1_5sd_1y')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm2sd_1y')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm2_5sd_1y')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'realized_price', 'm3sd_1y')
class SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.all: SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_All = SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_All(client)
self._4y: SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_4y = SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_4y(client)
self._2y: SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_2y = SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_2y(client)
self._1y: SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_1y = SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_1y(client)
class SeriesTree_Cohorts_Utxo_All_Realized_Price:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, 'realized_price')
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, 'realized_price_cents')
self.sats: SeriesPattern1[SatsFract] = SeriesPattern1(client, 'realized_price_sats')
self.bps: SeriesPattern1[BasisPoints32] = SeriesPattern1(client, 'realized_price_ratio_bps')
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'realized_price_ratio')
self.percentiles: Pct1Pct2Pct5Pct95Pct98Pct99Pattern = Pct1Pct2Pct5Pct95Pct98Pct99Pattern(client, 'realized_price')
self.sma: _1m1w1y2y4yAllPattern = _1m1w1y2y4yAllPattern(client, 'realized_price_ratio_sma')
self.std_dev: SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev = SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev(client)
class SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'asopr')
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'adj_value_created')
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'adj_value_destroyed')
class SeriesTree_Cohorts_Utxo_All_Realized_Sopr:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'value_created')
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'value_destroyed')
self.ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'sopr')
self.adjusted: SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted = SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted(client)
class SeriesTree_Cohorts_Utxo_All_Realized:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.cap: CentsDeltaToUsdPattern = CentsDeltaToUsdPattern(client, 'realized_cap')
self.profit: SeriesTree_Cohorts_Utxo_All_Realized_Profit = SeriesTree_Cohorts_Utxo_All_Realized_Profit(client)
self.loss: SeriesTree_Cohorts_Utxo_All_Realized_Loss = SeriesTree_Cohorts_Utxo_All_Realized_Loss(client)
self.price: SeriesTree_Cohorts_Utxo_All_Realized_Price = SeriesTree_Cohorts_Utxo_All_Realized_Price(client)
self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'mvrv')
self.sopr: SeriesTree_Cohorts_Utxo_All_Realized_Sopr = SeriesTree_Cohorts_Utxo_All_Realized_Sopr(client)
self.net_pnl: BaseChangeCumulativeDeltaSumToPattern = BaseChangeCumulativeDeltaSumToPattern(client, 'net')
self.gross_pnl: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'realized_gross_pnl')
self.sell_side_risk_ratio: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'sell_side_risk_ratio')
self.peak_regret: BaseCumulativeToPattern = BaseCumulativeToPattern(client, 'realized_peak_regret')
self.investor: PricePattern = PricePattern(client, 'investor_price')
self.profit_to_loss_ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'realized_profit_to_loss_ratio')
class SeriesTree_Cohorts_Utxo_All_CostBasis:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.min: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'cost_basis_min')
self.max: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'cost_basis_max')
self.percentiles: Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern = Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern(client, 'cost_basis')
self.invested_capital: Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern = Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern(client, 'invested_capital')
self.supply_density: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'supply_density')
class SeriesTree_Cohorts_Utxo_All_Unrealized_Profit:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, 'unrealized_profit')
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, 'unrealized_profit_cumulative')
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, 'unrealized_profit_sum')
self.to_mcap: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'unrealized_profit_to_mcap')
self.to_own_gross_pnl: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'unrealized_profit_to_own_gross_pnl')
class SeriesTree_Cohorts_Utxo_All_Unrealized_Loss:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, 'unrealized_loss')
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, 'unrealized_loss_cumulative')
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, 'unrealized_loss_sum')
self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, 'neg_unrealized_loss')
self.to_mcap: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'unrealized_loss_to_mcap')
self.to_own_gross_pnl: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'unrealized_loss_to_own_gross_pnl')
class SeriesTree_Cohorts_Utxo_All_Unrealized_NetPnl:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, 'net_unrealized_pnl')
self.cents: SeriesPattern1[CentsSigned] = SeriesPattern1(client, 'net_unrealized_pnl_cents')
self.to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'net_unrealized_pnl_to_own_gross_pnl')
class SeriesTree_Cohorts_Utxo_All_Unrealized_Sentiment:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.pain_index: CentsUsdPattern2 = CentsUsdPattern2(client, 'pain_index')
self.greed_index: CentsUsdPattern2 = CentsUsdPattern2(client, 'greed_index')
self.net: CentsUsdPattern = CentsUsdPattern(client, 'net_sentiment')
class SeriesTree_Cohorts_Utxo_All_Unrealized:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.nupl: BpsRatioPattern = BpsRatioPattern(client, 'nupl')
self.profit: SeriesTree_Cohorts_Utxo_All_Unrealized_Profit = SeriesTree_Cohorts_Utxo_All_Unrealized_Profit(client)
self.loss: SeriesTree_Cohorts_Utxo_All_Unrealized_Loss = SeriesTree_Cohorts_Utxo_All_Unrealized_Loss(client)
self.net_pnl: SeriesTree_Cohorts_Utxo_All_Unrealized_NetPnl = SeriesTree_Cohorts_Utxo_All_Unrealized_NetPnl(client)
self.gross_pnl: CentsUsdPattern2 = CentsUsdPattern2(client, 'unrealized_gross_pnl')
self.invested_capital: InPattern = InPattern(client, 'invested_capital_in')
self.sentiment: SeriesTree_Cohorts_Utxo_All_Unrealized_Sentiment = SeriesTree_Cohorts_Utxo_All_Unrealized_Sentiment(client)
class SeriesTree_Cohorts_Utxo_All:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.supply: SeriesTree_Cohorts_Utxo_All_Supply = SeriesTree_Cohorts_Utxo_All_Supply(client)
self.outputs: UnspentPattern = UnspentPattern(client, 'utxo_count')
self.activity: SeriesTree_Cohorts_Utxo_All_Activity = SeriesTree_Cohorts_Utxo_All_Activity(client)
self.realized: SeriesTree_Cohorts_Utxo_All_Realized = SeriesTree_Cohorts_Utxo_All_Realized(client)
self.cost_basis: SeriesTree_Cohorts_Utxo_All_CostBasis = SeriesTree_Cohorts_Utxo_All_CostBasis(client)
self.unrealized: SeriesTree_Cohorts_Utxo_All_Unrealized = SeriesTree_Cohorts_Utxo_All_Unrealized(client)
class SeriesTree_Cohorts_Utxo_Sth_Activity:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.transfer_volume: BaseCumulativeInSumPattern = BaseCumulativeInSumPattern(client, 'sth_transfer_volume')
self.coindays_destroyed: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'sth_coindays_destroyed')
self.coinyears_destroyed: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'sth_coinyears_destroyed')
self.dormancy: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_dormancy')
class SeriesTree_Cohorts_Utxo_Sth_Realized_Profit:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, 'sth_realized_profit')
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, 'sth_realized_profit_cumulative')
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, 'sth_realized_profit_sum')
self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, 'sth_realized_profit_to_rcap')
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_profit_value_created')
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_profit_value_destroyed')
self.distribution_flow: SeriesPattern1[Dollars] = SeriesPattern1(client, 'sth_distribution_flow')
class SeriesTree_Cohorts_Utxo_Sth_Realized_Loss:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, 'sth_realized_loss')
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, 'sth_realized_loss_cumulative')
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, 'sth_realized_loss_sum')
self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, 'sth_neg_realized_loss')
self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, 'sth_realized_loss_to_rcap')
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_loss_value_created')
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_loss_value_destroyed')
self.capitulation_flow: SeriesPattern1[Dollars] = SeriesPattern1(client, 'sth_capitulation_flow')
class SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_All:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_realized_price_ratio_sd')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_realized_price_ratio_zscore')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'sth_realized_price_0sd')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p0_5sd')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p1sd')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p1_5sd')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p2sd')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p2_5sd')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p3sd')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm0_5sd')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm1sd')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm1_5sd')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm2sd')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm2_5sd')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm3sd')
class SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_4y:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_realized_price_ratio_sd_4y')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_realized_price_ratio_zscore_4y')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'sth_realized_price_0sd_4y')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p0_5sd_4y')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p1sd_4y')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p1_5sd_4y')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p2sd_4y')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p2_5sd_4y')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p3sd_4y')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm0_5sd_4y')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm1sd_4y')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm1_5sd_4y')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm2sd_4y')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm2_5sd_4y')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm3sd_4y')
class SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_2y:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_realized_price_ratio_sd_2y')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_realized_price_ratio_zscore_2y')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'sth_realized_price_0sd_2y')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p0_5sd_2y')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p1sd_2y')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p1_5sd_2y')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p2sd_2y')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p2_5sd_2y')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p3sd_2y')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm0_5sd_2y')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm1sd_2y')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm1_5sd_2y')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm2sd_2y')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm2_5sd_2y')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm3sd_2y')
class SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_1y:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_realized_price_ratio_sd_1y')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_realized_price_ratio_zscore_1y')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'sth_realized_price_0sd_1y')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p0_5sd_1y')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p1sd_1y')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p1_5sd_1y')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p2sd_1y')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p2_5sd_1y')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'p3sd_1y')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm0_5sd_1y')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm1sd_1y')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm1_5sd_1y')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm2sd_1y')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm2_5sd_1y')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'sth_realized_price', 'm3sd_1y')
class SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.all: SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_All = SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_All(client)
self._4y: SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_4y = SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_4y(client)
self._2y: SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_2y = SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_2y(client)
self._1y: SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_1y = SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_1y(client)
class SeriesTree_Cohorts_Utxo_Sth_Realized_Price:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, 'sth_realized_price')
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, 'sth_realized_price_cents')
self.sats: SeriesPattern1[SatsFract] = SeriesPattern1(client, 'sth_realized_price_sats')
self.bps: SeriesPattern1[BasisPoints32] = SeriesPattern1(client, 'sth_realized_price_ratio_bps')
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_realized_price_ratio')
self.percentiles: Pct1Pct2Pct5Pct95Pct98Pct99Pattern = Pct1Pct2Pct5Pct95Pct98Pct99Pattern(client, 'sth_realized_price')
self.sma: _1m1w1y2y4yAllPattern = _1m1w1y2y4yAllPattern(client, 'sth_realized_price_ratio_sma')
self.std_dev: SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev = SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev(client)
class SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'sth_asopr')
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_adj_value_created')
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_adj_value_destroyed')
class SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_value_created')
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_value_destroyed')
self.ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'sth_sopr')
self.adjusted: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted = SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted(client)
class SeriesTree_Cohorts_Utxo_Sth_Realized:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.cap: CentsDeltaToUsdPattern = CentsDeltaToUsdPattern(client, 'sth_realized_cap')
self.profit: SeriesTree_Cohorts_Utxo_Sth_Realized_Profit = SeriesTree_Cohorts_Utxo_Sth_Realized_Profit(client)
self.loss: SeriesTree_Cohorts_Utxo_Sth_Realized_Loss = SeriesTree_Cohorts_Utxo_Sth_Realized_Loss(client)
self.price: SeriesTree_Cohorts_Utxo_Sth_Realized_Price = SeriesTree_Cohorts_Utxo_Sth_Realized_Price(client)
self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_mvrv')
self.sopr: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr = SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr(client)
self.net_pnl: BaseChangeCumulativeDeltaSumToPattern = BaseChangeCumulativeDeltaSumToPattern(client, 'sth_net')
self.gross_pnl: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'sth_realized_gross_pnl')
self.sell_side_risk_ratio: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'sth_sell_side_risk_ratio')
self.peak_regret: BaseCumulativeToPattern = BaseCumulativeToPattern(client, 'sth_realized_peak_regret')
self.investor: PricePattern = PricePattern(client, 'sth_investor_price')
self.profit_to_loss_ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'sth_realized_profit_to_loss_ratio')
class SeriesTree_Cohorts_Utxo_Sth_CostBasis:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.min: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'sth_cost_basis_min')
self.max: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'sth_cost_basis_max')
self.percentiles: Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern = Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern(client, 'sth_cost_basis')
self.invested_capital: Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern = Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern(client, 'sth_invested_capital')
self.supply_density: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'sth_supply_density')
class SeriesTree_Cohorts_Utxo_Sth_Unrealized_Sentiment:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.pain_index: CentsUsdPattern2 = CentsUsdPattern2(client, 'sth_pain_index')
self.greed_index: CentsUsdPattern2 = CentsUsdPattern2(client, 'sth_greed_index')
self.net: CentsUsdPattern = CentsUsdPattern(client, 'sth_net_sentiment')
class SeriesTree_Cohorts_Utxo_Sth_Unrealized:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.nupl: BpsRatioPattern = BpsRatioPattern(client, 'sth_nupl')
self.profit: BaseCumulativeSumToPattern2 = BaseCumulativeSumToPattern2(client, 'sth_unrealized_profit')
self.loss: BaseCumulativeNegativeSumToPattern2 = BaseCumulativeNegativeSumToPattern2(client, 'sth')
self.net_pnl: CentsToUsdPattern2 = CentsToUsdPattern2(client, 'sth_net_unrealized_pnl')
self.gross_pnl: CentsUsdPattern2 = CentsUsdPattern2(client, 'sth_unrealized_gross_pnl')
self.invested_capital: InPattern = InPattern(client, 'sth_invested_capital_in')
self.sentiment: SeriesTree_Cohorts_Utxo_Sth_Unrealized_Sentiment = SeriesTree_Cohorts_Utxo_Sth_Unrealized_Sentiment(client)
class SeriesTree_Cohorts_Utxo_Sth:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.supply: DeltaHalfInToTotalPattern2 = DeltaHalfInToTotalPattern2(client, 'sth_supply')
self.outputs: UnspentPattern = UnspentPattern(client, 'sth_utxo_count')
self.activity: SeriesTree_Cohorts_Utxo_Sth_Activity = SeriesTree_Cohorts_Utxo_Sth_Activity(client)
self.realized: SeriesTree_Cohorts_Utxo_Sth_Realized = SeriesTree_Cohorts_Utxo_Sth_Realized(client)
self.cost_basis: SeriesTree_Cohorts_Utxo_Sth_CostBasis = SeriesTree_Cohorts_Utxo_Sth_CostBasis(client)
self.unrealized: SeriesTree_Cohorts_Utxo_Sth_Unrealized = SeriesTree_Cohorts_Utxo_Sth_Unrealized(client)
class SeriesTree_Cohorts_Utxo_Lth_Activity:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.transfer_volume: BaseCumulativeInSumPattern = BaseCumulativeInSumPattern(client, 'lth_transfer_volume')
self.coindays_destroyed: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'lth_coindays_destroyed')
self.coinyears_destroyed: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'lth_coinyears_destroyed')
self.dormancy: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_dormancy')
class SeriesTree_Cohorts_Utxo_Lth_Realized_Profit:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, 'lth_realized_profit')
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, 'lth_realized_profit_cumulative')
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, 'lth_realized_profit_sum')
self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, 'lth_realized_profit_to_rcap')
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'lth_profit_value_created')
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'lth_profit_value_destroyed')
self.distribution_flow: SeriesPattern1[Dollars] = SeriesPattern1(client, 'lth_distribution_flow')
class SeriesTree_Cohorts_Utxo_Lth_Realized_Loss:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: CentsUsdPattern2 = CentsUsdPattern2(client, 'lth_realized_loss')
self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, 'lth_realized_loss_cumulative')
self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, 'lth_realized_loss_sum')
self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, 'lth_neg_realized_loss')
self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, 'lth_realized_loss_to_rcap')
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'lth_loss_value_created')
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'lth_loss_value_destroyed')
self.capitulation_flow: SeriesPattern1[Dollars] = SeriesPattern1(client, 'lth_capitulation_flow')
class SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_All:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_realized_price_ratio_sd')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_realized_price_ratio_zscore')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'lth_realized_price_0sd')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p0_5sd')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p1sd')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p1_5sd')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p2sd')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p2_5sd')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p3sd')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm0_5sd')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm1sd')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm1_5sd')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm2sd')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm2_5sd')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm3sd')
class SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_4y:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_realized_price_ratio_sd_4y')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_realized_price_ratio_zscore_4y')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'lth_realized_price_0sd_4y')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p0_5sd_4y')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p1sd_4y')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p1_5sd_4y')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p2sd_4y')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p2_5sd_4y')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p3sd_4y')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm0_5sd_4y')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm1sd_4y')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm1_5sd_4y')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm2sd_4y')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm2_5sd_4y')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm3sd_4y')
class SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_2y:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_realized_price_ratio_sd_2y')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_realized_price_ratio_zscore_2y')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'lth_realized_price_0sd_2y')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p0_5sd_2y')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p1sd_2y')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p1_5sd_2y')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p2sd_2y')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p2_5sd_2y')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p3sd_2y')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm0_5sd_2y')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm1sd_2y')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm1_5sd_2y')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm2sd_2y')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm2_5sd_2y')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm3sd_2y')
class SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_1y:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.sd: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_realized_price_ratio_sd_1y')
self.zscore: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_realized_price_ratio_zscore_1y')
self._0sd: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'lth_realized_price_0sd_1y')
self.p0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p0_5sd_1y')
self.p1sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p1sd_1y')
self.p1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p1_5sd_1y')
self.p2sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p2sd_1y')
self.p2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p2_5sd_1y')
self.p3sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'p3sd_1y')
self.m0_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm0_5sd_1y')
self.m1sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm1sd_1y')
self.m1_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm1_5sd_1y')
self.m2sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm2sd_1y')
self.m2_5sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm2_5sd_1y')
self.m3sd: PriceRatioPattern = PriceRatioPattern(client, 'lth_realized_price', 'm3sd_1y')
class SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.all: SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_All = SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_All(client)
self._4y: SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_4y = SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_4y(client)
self._2y: SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_2y = SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_2y(client)
self._1y: SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_1y = SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_1y(client)
class SeriesTree_Cohorts_Utxo_Lth_Realized_Price:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, 'lth_realized_price')
self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, 'lth_realized_price_cents')
self.sats: SeriesPattern1[SatsFract] = SeriesPattern1(client, 'lth_realized_price_sats')
self.bps: SeriesPattern1[BasisPoints32] = SeriesPattern1(client, 'lth_realized_price_ratio_bps')
self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_realized_price_ratio')
self.percentiles: Pct1Pct2Pct5Pct95Pct98Pct99Pattern = Pct1Pct2Pct5Pct95Pct98Pct99Pattern(client, 'lth_realized_price')
self.sma: _1m1w1y2y4yAllPattern = _1m1w1y2y4yAllPattern(client, 'lth_realized_price_ratio_sma')
self.std_dev: SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev = SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev(client)
class SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'lth_value_created')
self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'lth_value_destroyed')
self.ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'lth_sopr')
class SeriesTree_Cohorts_Utxo_Lth_Realized:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.cap: CentsDeltaToUsdPattern = CentsDeltaToUsdPattern(client, 'lth_realized_cap')
self.profit: SeriesTree_Cohorts_Utxo_Lth_Realized_Profit = SeriesTree_Cohorts_Utxo_Lth_Realized_Profit(client)
self.loss: SeriesTree_Cohorts_Utxo_Lth_Realized_Loss = SeriesTree_Cohorts_Utxo_Lth_Realized_Loss(client)
self.price: SeriesTree_Cohorts_Utxo_Lth_Realized_Price = SeriesTree_Cohorts_Utxo_Lth_Realized_Price(client)
self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_mvrv')
self.sopr: SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr = SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr(client)
self.net_pnl: BaseChangeCumulativeDeltaSumToPattern = BaseChangeCumulativeDeltaSumToPattern(client, 'lth_net')
self.gross_pnl: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'lth_realized_gross_pnl')
self.sell_side_risk_ratio: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'lth_sell_side_risk_ratio')
self.peak_regret: BaseCumulativeToPattern = BaseCumulativeToPattern(client, 'lth_realized_peak_regret')
self.investor: PricePattern = PricePattern(client, 'lth_investor_price')
self.profit_to_loss_ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'lth_realized_profit_to_loss_ratio')
class SeriesTree_Cohorts_Utxo_Lth_CostBasis:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.min: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'lth_cost_basis_min')
self.max: CentsSatsUsdPattern = CentsSatsUsdPattern(client, 'lth_cost_basis_max')
self.percentiles: Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern = Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern(client, 'lth_cost_basis')
self.invested_capital: Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern = Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern(client, 'lth_invested_capital')
self.supply_density: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'lth_supply_density')
class SeriesTree_Cohorts_Utxo_Lth_Unrealized_Sentiment:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.pain_index: CentsUsdPattern2 = CentsUsdPattern2(client, 'lth_pain_index')
self.greed_index: CentsUsdPattern2 = CentsUsdPattern2(client, 'lth_greed_index')
self.net: CentsUsdPattern = CentsUsdPattern(client, 'lth_net_sentiment')
class SeriesTree_Cohorts_Utxo_Lth_Unrealized:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.nupl: BpsRatioPattern = BpsRatioPattern(client, 'lth_nupl')
self.profit: BaseCumulativeSumToPattern2 = BaseCumulativeSumToPattern2(client, 'lth_unrealized_profit')
self.loss: BaseCumulativeNegativeSumToPattern2 = BaseCumulativeNegativeSumToPattern2(client, 'lth')
self.net_pnl: CentsToUsdPattern2 = CentsToUsdPattern2(client, 'lth_net_unrealized_pnl')
self.gross_pnl: CentsUsdPattern2 = CentsUsdPattern2(client, 'lth_unrealized_gross_pnl')
self.invested_capital: InPattern = InPattern(client, 'lth_invested_capital_in')
self.sentiment: SeriesTree_Cohorts_Utxo_Lth_Unrealized_Sentiment = SeriesTree_Cohorts_Utxo_Lth_Unrealized_Sentiment(client)
class SeriesTree_Cohorts_Utxo_Lth:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.supply: DeltaHalfInToTotalPattern2 = DeltaHalfInToTotalPattern2(client, 'lth_supply')
self.outputs: UnspentPattern = UnspentPattern(client, 'lth_utxo_count')
self.activity: SeriesTree_Cohorts_Utxo_Lth_Activity = SeriesTree_Cohorts_Utxo_Lth_Activity(client)
self.realized: SeriesTree_Cohorts_Utxo_Lth_Realized = SeriesTree_Cohorts_Utxo_Lth_Realized(client)
self.cost_basis: SeriesTree_Cohorts_Utxo_Lth_CostBasis = SeriesTree_Cohorts_Utxo_Lth_CostBasis(client)
self.unrealized: SeriesTree_Cohorts_Utxo_Lth_Unrealized = SeriesTree_Cohorts_Utxo_Lth_Unrealized(client)
class SeriesTree_Cohorts_Utxo_AgeRange:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.under_1h: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1h_old')
self._1h_to_1d: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1h_to_1d_old')
self._1d_to_1w: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1d_to_1w_old')
self._1w_to_1m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1w_to_1m_old')
self._1m_to_2m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1m_to_2m_old')
self._2m_to_3m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_2m_to_3m_old')
self._3m_to_4m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_3m_to_4m_old')
self._4m_to_5m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_4m_to_5m_old')
self._5m_to_6m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_5m_to_6m_old')
self._6m_to_1y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_6m_to_1y_old')
self._1y_to_2y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1y_to_2y_old')
self._2y_to_3y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_2y_to_3y_old')
self._3y_to_4y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_3y_to_4y_old')
self._4y_to_5y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_4y_to_5y_old')
self._5y_to_6y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_5y_to_6y_old')
self._6y_to_7y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_6y_to_7y_old')
self._7y_to_8y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_7y_to_8y_old')
self._8y_to_10y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_8y_to_10y_old')
self._10y_to_12y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10y_to_12y_old')
self._12y_to_15y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_12y_to_15y_old')
self.over_15y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_15y_old')
class SeriesTree_Cohorts_Utxo_UnderAge:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._1w: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1w_old')
self._1m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1m_old')
self._2m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_2m_old')
self._3m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_3m_old')
self._4m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_4m_old')
self._5m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_5m_old')
self._6m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_6m_old')
self._1y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1y_old')
self._2y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_2y_old')
self._3y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_3y_old')
self._4y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_4y_old')
self._5y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_5y_old')
self._6y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_6y_old')
self._7y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_7y_old')
self._8y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_8y_old')
self._10y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10y_old')
self._12y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_12y_old')
self._15y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_15y_old')
class SeriesTree_Cohorts_Utxo_OverAge:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._1d: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1d_old')
self._1w: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1w_old')
self._1m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1m_old')
self._2m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_2m_old')
self._3m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_3m_old')
self._4m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_4m_old')
self._5m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_5m_old')
self._6m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_6m_old')
self._1y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1y_old')
self._2y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_2y_old')
self._3y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_3y_old')
self._4y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_4y_old')
self._5y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_5y_old')
self._6y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_6y_old')
self._7y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_7y_old')
self._8y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_8y_old')
self._10y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10y_old')
self._12y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_12y_old')
class SeriesTree_Cohorts_Utxo_Epoch:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._0: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_0')
self._1: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_1')
self._2: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_2')
self._3: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_3')
self._4: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_4')
class SeriesTree_Cohorts_Utxo_Class:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._2009: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2009')
self._2010: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2010')
self._2011: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2011')
self._2012: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2012')
self._2013: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2013')
self._2014: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2014')
self._2015: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2015')
self._2016: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2016')
self._2017: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2017')
self._2018: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2018')
self._2019: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2019')
self._2020: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2020')
self._2021: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2021')
self._2022: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2022')
self._2023: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2023')
self._2024: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2024')
self._2025: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2025')
self._2026: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2026')
class SeriesTree_Cohorts_Utxo_OverAmount:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._1sat: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1sat')
self._10sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10sats')
self._100sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_100sats')
self._1k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1k_sats')
self._10k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10k_sats')
self._100k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_100k_sats')
self._1m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1m_sats')
self._10m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10m_sats')
self._1btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1btc')
self._10btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10btc')
self._100btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_100btc')
self._1k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1k_btc')
self._10k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10k_btc')
class SeriesTree_Cohorts_Utxo_AmountRange:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._0sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_0sats')
self._1sat_to_10sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1sat_to_10sats')
self._10sats_to_100sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10sats_to_100sats')
self._100sats_to_1k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_100sats_to_1k_sats')
self._1k_sats_to_10k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1k_sats_to_10k_sats')
self._10k_sats_to_100k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10k_sats_to_100k_sats')
self._100k_sats_to_1m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_100k_sats_to_1m_sats')
self._1m_sats_to_10m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1m_sats_to_10m_sats')
self._10m_sats_to_1btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10m_sats_to_1btc')
self._1btc_to_10btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1btc_to_10btc')
self._10btc_to_100btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10btc_to_100btc')
self._100btc_to_1k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_100btc_to_1k_btc')
self._1k_btc_to_10k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1k_btc_to_10k_btc')
self._10k_btc_to_100k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10k_btc_to_100k_btc')
self.over_100k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_100k_btc')
class SeriesTree_Cohorts_Utxo_UnderAmount:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._10sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10sats')
self._100sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_100sats')
self._1k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1k_sats')
self._10k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10k_sats')
self._100k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_100k_sats')
self._1m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1m_sats')
self._10m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10m_sats')
self._1btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1btc')
self._10btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10btc')
self._100btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_100btc')
self._1k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1k_btc')
self._10k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10k_btc')
self._100k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_100k_btc')
class SeriesTree_Cohorts_Utxo_Type:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.p2pk65: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2pk65')
self.p2pk33: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2pk33')
self.p2pkh: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2pkh')
self.p2ms: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2ms')
self.p2sh: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2sh')
self.p2wpkh: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2wpkh')
self.p2wsh: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2wsh')
self.p2tr: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2tr')
self.p2a: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2a')
self.unknown: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'unknown_outputs')
self.empty: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'empty_outputs')
class SeriesTree_Cohorts_Utxo_Profitability_Range:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.over_1000pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_1000pct_in_profit')
self._500pct_to_1000pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_500pct_to_1000pct_in_profit')
self._300pct_to_500pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_300pct_to_500pct_in_profit')
self._200pct_to_300pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_200pct_to_300pct_in_profit')
self._100pct_to_200pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_100pct_to_200pct_in_profit')
self._90pct_to_100pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_90pct_to_100pct_in_profit')
self._80pct_to_90pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_80pct_to_90pct_in_profit')
self._70pct_to_80pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_70pct_to_80pct_in_profit')
self._60pct_to_70pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_60pct_to_70pct_in_profit')
self._50pct_to_60pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_50pct_to_60pct_in_profit')
self._40pct_to_50pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_40pct_to_50pct_in_profit')
self._30pct_to_40pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_30pct_to_40pct_in_profit')
self._20pct_to_30pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_20pct_to_30pct_in_profit')
self._10pct_to_20pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_10pct_to_20pct_in_profit')
self._0pct_to_10pct_in_profit: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_0pct_to_10pct_in_profit')
self._0pct_to_10pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_0pct_to_10pct_in_loss')
self._10pct_to_20pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_10pct_to_20pct_in_loss')
self._20pct_to_30pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_20pct_to_30pct_in_loss')
self._30pct_to_40pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_30pct_to_40pct_in_loss')
self._40pct_to_50pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_40pct_to_50pct_in_loss')
self._50pct_to_60pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_50pct_to_60pct_in_loss')
self._60pct_to_70pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_60pct_to_70pct_in_loss')
self._70pct_to_80pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_70pct_to_80pct_in_loss')
self._80pct_to_90pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_80pct_to_90pct_in_loss')
self._90pct_to_100pct_in_loss: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_90pct_to_100pct_in_loss')
class SeriesTree_Cohorts_Utxo_Profitability_Profit:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.all: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_in_profit')
self._10pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_10pct_in_profit')
self._20pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_20pct_in_profit')
self._30pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_30pct_in_profit')
self._40pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_40pct_in_profit')
self._50pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_50pct_in_profit')
self._60pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_60pct_in_profit')
self._70pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_70pct_in_profit')
self._80pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_80pct_in_profit')
self._90pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_90pct_in_profit')
self._100pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_100pct_in_profit')
self._200pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_200pct_in_profit')
self._300pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_300pct_in_profit')
self._500pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_500pct_in_profit')
class SeriesTree_Cohorts_Utxo_Profitability_Loss:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.all: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_in_loss')
self._10pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_10pct_in_loss')
self._20pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_20pct_in_loss')
self._30pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_30pct_in_loss')
self._40pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_40pct_in_loss')
self._50pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_50pct_in_loss')
self._60pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_60pct_in_loss')
self._70pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_70pct_in_loss')
self._80pct: NuplRealizedSupplyPattern = NuplRealizedSupplyPattern(client, 'utxos_over_80pct_in_loss')
class SeriesTree_Cohorts_Utxo_Profitability:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.range: SeriesTree_Cohorts_Utxo_Profitability_Range = SeriesTree_Cohorts_Utxo_Profitability_Range(client)
self.profit: SeriesTree_Cohorts_Utxo_Profitability_Profit = SeriesTree_Cohorts_Utxo_Profitability_Profit(client)
self.loss: SeriesTree_Cohorts_Utxo_Profitability_Loss = SeriesTree_Cohorts_Utxo_Profitability_Loss(client)
class SeriesTree_Cohorts_Utxo_Matured:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.under_1h: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_under_1h_old_matured_supply')
self._1h_to_1d: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_1h_to_1d_old_matured_supply')
self._1d_to_1w: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_1d_to_1w_old_matured_supply')
self._1w_to_1m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_1w_to_1m_old_matured_supply')
self._1m_to_2m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_1m_to_2m_old_matured_supply')
self._2m_to_3m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_2m_to_3m_old_matured_supply')
self._3m_to_4m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_3m_to_4m_old_matured_supply')
self._4m_to_5m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_4m_to_5m_old_matured_supply')
self._5m_to_6m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_5m_to_6m_old_matured_supply')
self._6m_to_1y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_6m_to_1y_old_matured_supply')
self._1y_to_2y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_1y_to_2y_old_matured_supply')
self._2y_to_3y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_2y_to_3y_old_matured_supply')
self._3y_to_4y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_3y_to_4y_old_matured_supply')
self._4y_to_5y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_4y_to_5y_old_matured_supply')
self._5y_to_6y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_5y_to_6y_old_matured_supply')
self._6y_to_7y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_6y_to_7y_old_matured_supply')
self._7y_to_8y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_7y_to_8y_old_matured_supply')
self._8y_to_10y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_8y_to_10y_old_matured_supply')
self._10y_to_12y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_10y_to_12y_old_matured_supply')
self._12y_to_15y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_12y_to_15y_old_matured_supply')
self.over_15y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_over_15y_old_matured_supply')
class SeriesTree_Cohorts_Utxo:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.all: SeriesTree_Cohorts_Utxo_All = SeriesTree_Cohorts_Utxo_All(client)
self.sth: SeriesTree_Cohorts_Utxo_Sth = SeriesTree_Cohorts_Utxo_Sth(client)
self.lth: SeriesTree_Cohorts_Utxo_Lth = SeriesTree_Cohorts_Utxo_Lth(client)
self.age_range: SeriesTree_Cohorts_Utxo_AgeRange = SeriesTree_Cohorts_Utxo_AgeRange(client)
self.under_age: SeriesTree_Cohorts_Utxo_UnderAge = SeriesTree_Cohorts_Utxo_UnderAge(client)
self.over_age: SeriesTree_Cohorts_Utxo_OverAge = SeriesTree_Cohorts_Utxo_OverAge(client)
self.epoch: SeriesTree_Cohorts_Utxo_Epoch = SeriesTree_Cohorts_Utxo_Epoch(client)
self.class_: SeriesTree_Cohorts_Utxo_Class = SeriesTree_Cohorts_Utxo_Class(client)
self.over_amount: SeriesTree_Cohorts_Utxo_OverAmount = SeriesTree_Cohorts_Utxo_OverAmount(client)
self.amount_range: SeriesTree_Cohorts_Utxo_AmountRange = SeriesTree_Cohorts_Utxo_AmountRange(client)
self.under_amount: SeriesTree_Cohorts_Utxo_UnderAmount = SeriesTree_Cohorts_Utxo_UnderAmount(client)
self.type: SeriesTree_Cohorts_Utxo_Type = SeriesTree_Cohorts_Utxo_Type(client)
self.profitability: SeriesTree_Cohorts_Utxo_Profitability = SeriesTree_Cohorts_Utxo_Profitability(client)
self.matured: SeriesTree_Cohorts_Utxo_Matured = SeriesTree_Cohorts_Utxo_Matured(client)
class SeriesTree_Cohorts_Addr_OverAmount:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._1sat: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1sat')
self._10sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10sats')
self._100sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100sats')
self._1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1k_sats')
self._10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10k_sats')
self._100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100k_sats')
self._1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1m_sats')
self._10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10m_sats')
self._1btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1btc')
self._10btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10btc')
self._100btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100btc')
self._1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1k_btc')
self._10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10k_btc')
class SeriesTree_Cohorts_Addr_AmountRange:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._0sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_0sats')
self._1sat_to_10sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1sat_to_10sats')
self._10sats_to_100sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10sats_to_100sats')
self._100sats_to_1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100sats_to_1k_sats')
self._1k_sats_to_10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1k_sats_to_10k_sats')
self._10k_sats_to_100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10k_sats_to_100k_sats')
self._100k_sats_to_1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100k_sats_to_1m_sats')
self._1m_sats_to_10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1m_sats_to_10m_sats')
self._10m_sats_to_1btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10m_sats_to_1btc')
self._1btc_to_10btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1btc_to_10btc')
self._10btc_to_100btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10btc_to_100btc')
self._100btc_to_1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100btc_to_1k_btc')
self._1k_btc_to_10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1k_btc_to_10k_btc')
self._10k_btc_to_100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10k_btc_to_100k_btc')
self.over_100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100k_btc')
class SeriesTree_Cohorts_Addr_UnderAmount:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self._10sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10sats')
self._100sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100sats')
self._1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1k_sats')
self._10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10k_sats')
self._100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100k_sats')
self._1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1m_sats')
self._10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10m_sats')
self._1btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1btc')
self._10btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10btc')
self._100btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100btc')
self._1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1k_btc')
self._10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10k_btc')
self._100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100k_btc')
class SeriesTree_Cohorts_Addr:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.over_amount: SeriesTree_Cohorts_Addr_OverAmount = SeriesTree_Cohorts_Addr_OverAmount(client)
self.amount_range: SeriesTree_Cohorts_Addr_AmountRange = SeriesTree_Cohorts_Addr_AmountRange(client)
self.under_amount: SeriesTree_Cohorts_Addr_UnderAmount = SeriesTree_Cohorts_Addr_UnderAmount(client)
class SeriesTree_Cohorts:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.utxo: SeriesTree_Cohorts_Utxo = SeriesTree_Cohorts_Utxo(client)
self.addr: SeriesTree_Cohorts_Addr = SeriesTree_Cohorts_Addr(client)
class SeriesTree:
"""Series tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.blocks: SeriesTree_Blocks = SeriesTree_Blocks(client)
self.transactions: SeriesTree_Transactions = SeriesTree_Transactions(client)
self.inputs: SeriesTree_Inputs = SeriesTree_Inputs(client)
self.outputs: SeriesTree_Outputs = SeriesTree_Outputs(client)
self.addrs: SeriesTree_Addrs = SeriesTree_Addrs(client)
self.scripts: SeriesTree_Scripts = SeriesTree_Scripts(client)
self.mining: SeriesTree_Mining = SeriesTree_Mining(client)
self.positions: SeriesTree_Positions = SeriesTree_Positions(client)
self.cointime: SeriesTree_Cointime = SeriesTree_Cointime(client)
self.constants: SeriesTree_Constants = SeriesTree_Constants(client)
self.indexes: SeriesTree_Indexes = SeriesTree_Indexes(client)
self.indicators: SeriesTree_Indicators = SeriesTree_Indicators(client)
self.market: SeriesTree_Market = SeriesTree_Market(client)
self.pools: SeriesTree_Pools = SeriesTree_Pools(client)
self.prices: SeriesTree_Prices = SeriesTree_Prices(client)
self.supply: SeriesTree_Supply = SeriesTree_Supply(client)
self.cohorts: SeriesTree_Cohorts = SeriesTree_Cohorts(client)
class BrkClient(BrkClientBase):
"""Main BRK client with series tree and API methods."""
VERSION = "v0.1.9"
INDEXES = [
"minute10",
"minute30",
"hour1",
"hour4",
"hour12",
"day1",
"day3",
"week1",
"month1",
"month3",
"month6",
"year1",
"year10",
"halving",
"epoch",
"height",
"tx_index",
"txin_index",
"txout_index",
"empty_output_index",
"op_return_index",
"p2a_addr_index",
"p2ms_output_index",
"p2pk33_addr_index",
"p2pk65_addr_index",
"p2pkh_addr_index",
"p2sh_addr_index",
"p2tr_addr_index",
"p2wpkh_addr_index",
"p2wsh_addr_index",
"unknown_output_index",
"funded_addr_index",
"empty_addr_index"
]
POOL_ID_TO_POOL_NAME = {
"aaopool": "AAO Pool",
"antpool": "AntPool",
"arkpool": "ArkPool",
"asicminer": "ASICMiner",
"axbt": "A-XBT",
"batpool": "BATPOOL",
"bcmonster": "BCMonster",
"bcpoolio": "bcpool.io",
"binancepool": "Binance Pool",
"bitalo": "Bitalo",
"bitclub": "BitClub",
"bitcoinaffiliatenetwork": "Bitcoin Affiliate Network",
"bitcoincom": "Bitcoin.com",
"bitcoinindia": "Bitcoin India",
"bitcoinindiapool": "BitcoinIndia",
"bitcoinrussia": "BitcoinRussia",
"bitcoinukraine": "Bitcoin-Ukraine",
"bitfarms": "Bitfarms",
"bitfufupool": "BitFuFuPool",
"bitfury": "BitFury",
"bitminter": "BitMinter",
"bitparking": "Bitparking",
"bitsolo": "Bitsolo",
"bixin": "Bixin",
"blockfills": "BlockFills",
"braiinspool": "Braiins Pool",
"bravomining": "Bravo Mining",
"btcc": "BTCC",
"btccom": "BTC.com",
"btcdig": "BTCDig",
"btcguild": "BTC Guild",
"btclab": "BTCLab",
"btcmp": "BTCMP",
"btcnuggets": "BTC Nuggets",
"btcpoolparty": "BTC Pool Party",
"btcserv": "BTCServ",
"btctop": "BTC.TOP",
"btpool": "BTPOOL",
"bwpool": "BWPool",
"bytepool": "BytePool",
"canoe": "CANOE",
"canoepool": "CanoePool",
"carbonnegative": "Carbon Negative",
"ckpool": "CKPool",
"cloudhashing": "CloudHashing",
"coinlab": "CoinLab",
"cointerra": "Cointerra",
"connectbtc": "ConnectBTC",
"dcex": "DCEX",
"dcexploration": "DCExploration",
"digitalbtc": "digitalBTC",
"digitalxmintsy": "digitalX Mintsy",
"dpool": "DPOOL",
"eclipsemc": "EclipseMC",
"eightbaochi": "8baochi",
"ekanembtc": "EkanemBTC",
"eligius": "Eligius",
"emcdpool": "EMCDPool",
"entrustcharitypool": "Entrust Charity Pool",
"eobot": "Eobot",
"est3lar": "Est3lar",
"exxbw": "EXX&BW",
"f2pool": "F2Pool",
"fiftyeightcoin": "58COIN",
"foundryusa": "Foundry USA",
"futurebitapollosolo": "FutureBit Apollo Solo",
"gbminers": "GBMiners",
"gdpool": "GDPool",
"ghashio": "GHash.IO",
"givemecoins": "Give Me Coins",
"gogreenlight": "GoGreenLight",
"haominer": "haominer",
"haozhuzhu": "HAOZHUZHU",
"hashbx": "HashBX",
"hashpool": "HASHPOOL",
"helix": "Helix",
"hhtt": "HHTT",
"hotpool": "HotPool",
"hummerpool": "Hummerpool",
"huobipool": "Huobi.pool",
"innopolistech": "Innopolis Tech",
"kanopool": "KanoPool",
"kncminer": "KnCMiner",
"kucoinpool": "KuCoinPool",
"lubiancom": "Lubian.com",
"luxor": "Luxor",
"marapool": "MARA Pool",
"maxbtc": "MaxBTC",
"maxipool": "MaxiPool",
"megabigpower": "MegaBigPower",
"minerium": "Minerium",
"miningcity": "MiningCity",
"miningdutch": "Mining-Dutch",
"miningkings": "MiningKings",
"miningsquared": "Mining Squared",
"mmpool": "mmpool",
"mtred": "Mt Red",
"multicoinco": "MultiCoin.co",
"multipool": "Multipool",
"mybtccoinpool": "myBTCcoin Pool",
"neopool": "Neopool",
"nexious": "Nexious",
"nicehash": "NiceHash",
"nmcbit": "NMCbit",
"novablock": "NovaBlock",
"ocean": "OCEAN",
"okexpool": "OKExPool",
"okkong": "OKKONG",
"okminer": "OKMINER",
"okpooltop": "okpool.top",
"onehash": "1Hash",
"onem1x": "1M1X",
"onethash": "1THash",
"ozcoin": "OzCoin",
"parasite": "Parasite",
"patels": "Patels",
"pegapool": "PEGA Pool",
"phashio": "PHash.IO",
"phoenix": "Phoenix",
"polmine": "Polmine",
"pool175btc": "175btc",
"pool50btc": "50BTC",
"poolin": "Poolin",
"portlandhodl": "Portland.HODL",
"publicpool": "Public Pool",
"purebtccom": "PureBTC.COM",
"rawpool": "Rawpool",
"redrockpool": "RedRock Pool",
"rigpool": "RigPool",
"sbicrypto": "SBI Crypto",
"secpool": "SECPOOL",
"secretsuperstar": "SecretSuperstar",
"sevenpool": "7pool",
"shawnp0wers": "shawnp0wers",
"sigmapoolcom": "Sigmapool.com",
"simplecoinus": "simplecoin.us",
"solock": "Solo CK",
"spiderpool": "SpiderPool",
"stminingcorp": "ST Mining Corp",
"tangpool": "Tangpool",
"tatmaspool": "TATMAS Pool",
"tbdice": "TBDice",
"telco214": "Telco 214",
"terrapool": "Terra Pool",
"tiger": "tiger",
"tigerpoolnet": "tigerpool.net",
"titan": "Titan",
"transactioncoinmining": "transactioncoinmining",
"trickysbtcpool": "Tricky's BTC Pool",
"triplemining": "TripleMining",
"twentyoneinc": "21 Inc.",
"ultimuspool": "ULTIMUSPOOL",
"unknown": "Unknown",
"unomp": "UNOMP",
"viabtc": "ViaBTC",
"waterhole": "Waterhole",
"wayicn": "WAYI.CN",
"whitepool": "WhitePool",
"wiz": "wiz",
"wk057": "wk057",
"yourbtcnet": "Yourbtc.net",
"zulupool": "Zulupool"
}
TERM_NAMES = {
"short": {
"id": "sth",
"short": "STH",
"long": "Short Term Holders"
},
"long": {
"id": "lth",
"short": "LTH",
"long": "Long Term Holders"
}
}
EPOCH_NAMES = {
"_0": {
"id": "epoch_0",
"short": "0",
"long": "Epoch 0"
},
"_1": {
"id": "epoch_1",
"short": "1",
"long": "Epoch 1"
},
"_2": {
"id": "epoch_2",
"short": "2",
"long": "Epoch 2"
},
"_3": {
"id": "epoch_3",
"short": "3",
"long": "Epoch 3"
},
"_4": {
"id": "epoch_4",
"short": "4",
"long": "Epoch 4"
}
}
CLASS_NAMES = {
"_2009": {
"id": "class_2009",
"short": "2009",
"long": "Class 2009"
},
"_2010": {
"id": "class_2010",
"short": "2010",
"long": "Class 2010"
},
"_2011": {
"id": "class_2011",
"short": "2011",
"long": "Class 2011"
},
"_2012": {
"id": "class_2012",
"short": "2012",
"long": "Class 2012"
},
"_2013": {
"id": "class_2013",
"short": "2013",
"long": "Class 2013"
},
"_2014": {
"id": "class_2014",
"short": "2014",
"long": "Class 2014"
},
"_2015": {
"id": "class_2015",
"short": "2015",
"long": "Class 2015"
},
"_2016": {
"id": "class_2016",
"short": "2016",
"long": "Class 2016"
},
"_2017": {
"id": "class_2017",
"short": "2017",
"long": "Class 2017"
},
"_2018": {
"id": "class_2018",
"short": "2018",
"long": "Class 2018"
},
"_2019": {
"id": "class_2019",
"short": "2019",
"long": "Class 2019"
},
"_2020": {
"id": "class_2020",
"short": "2020",
"long": "Class 2020"
},
"_2021": {
"id": "class_2021",
"short": "2021",
"long": "Class 2021"
},
"_2022": {
"id": "class_2022",
"short": "2022",
"long": "Class 2022"
},
"_2023": {
"id": "class_2023",
"short": "2023",
"long": "Class 2023"
},
"_2024": {
"id": "class_2024",
"short": "2024",
"long": "Class 2024"
},
"_2025": {
"id": "class_2025",
"short": "2025",
"long": "Class 2025"
},
"_2026": {
"id": "class_2026",
"short": "2026",
"long": "Class 2026"
}
}
SPENDABLE_TYPE_NAMES = {
"p2pk65": {
"id": "p2pk65",
"short": "P2PK65",
"long": "Pay to Public Key (65 bytes)"
},
"p2pk33": {
"id": "p2pk33",
"short": "P2PK33",
"long": "Pay to Public Key (33 bytes)"
},
"p2pkh": {
"id": "p2pkh",
"short": "P2PKH",
"long": "Pay to Public Key Hash"
},
"p2ms": {
"id": "p2ms",
"short": "P2MS",
"long": "Pay to Multisig"
},
"p2sh": {
"id": "p2sh",
"short": "P2SH",
"long": "Pay to Script Hash"
},
"p2wpkh": {
"id": "p2wpkh",
"short": "P2WPKH",
"long": "Pay to Witness Public Key Hash"
},
"p2wsh": {
"id": "p2wsh",
"short": "P2WSH",
"long": "Pay to Witness Script Hash"
},
"p2tr": {
"id": "p2tr",
"short": "P2TR",
"long": "Pay to Taproot"
},
"p2a": {
"id": "p2a",
"short": "P2A",
"long": "Pay to Anchor"
},
"unknown": {
"id": "unknown_outputs",
"short": "Unknown",
"long": "Unknown Output Type"
},
"empty": {
"id": "empty_outputs",
"short": "Empty",
"long": "Empty Output"
}
}
AGE_RANGE_NAMES = {
"under_1h": {
"id": "under_1h_old",
"short": "<1h",
"long": "Under 1 Hour Old"
},
"_1h_to_1d": {
"id": "1h_to_1d_old",
"short": "1h-1d",
"long": "1 Hour to 1 Day Old"
},
"_1d_to_1w": {
"id": "1d_to_1w_old",
"short": "1d-1w",
"long": "1 Day to 1 Week Old"
},
"_1w_to_1m": {
"id": "1w_to_1m_old",
"short": "1w-1m",
"long": "1 Week to 1 Month Old"
},
"_1m_to_2m": {
"id": "1m_to_2m_old",
"short": "1m-2m",
"long": "1 to 2 Months Old"
},
"_2m_to_3m": {
"id": "2m_to_3m_old",
"short": "2m-3m",
"long": "2 to 3 Months Old"
},
"_3m_to_4m": {
"id": "3m_to_4m_old",
"short": "3m-4m",
"long": "3 to 4 Months Old"
},
"_4m_to_5m": {
"id": "4m_to_5m_old",
"short": "4m-5m",
"long": "4 to 5 Months Old"
},
"_5m_to_6m": {
"id": "5m_to_6m_old",
"short": "5m-6m",
"long": "5 to 6 Months Old"
},
"_6m_to_1y": {
"id": "6m_to_1y_old",
"short": "6m-1y",
"long": "6 Months to 1 Year Old"
},
"_1y_to_2y": {
"id": "1y_to_2y_old",
"short": "1y-2y",
"long": "1 to 2 Years Old"
},
"_2y_to_3y": {
"id": "2y_to_3y_old",
"short": "2y-3y",
"long": "2 to 3 Years Old"
},
"_3y_to_4y": {
"id": "3y_to_4y_old",
"short": "3y-4y",
"long": "3 to 4 Years Old"
},
"_4y_to_5y": {
"id": "4y_to_5y_old",
"short": "4y-5y",
"long": "4 to 5 Years Old"
},
"_5y_to_6y": {
"id": "5y_to_6y_old",
"short": "5y-6y",
"long": "5 to 6 Years Old"
},
"_6y_to_7y": {
"id": "6y_to_7y_old",
"short": "6y-7y",
"long": "6 to 7 Years Old"
},
"_7y_to_8y": {
"id": "7y_to_8y_old",
"short": "7y-8y",
"long": "7 to 8 Years Old"
},
"_8y_to_10y": {
"id": "8y_to_10y_old",
"short": "8y-10y",
"long": "8 to 10 Years Old"
},
"_10y_to_12y": {
"id": "10y_to_12y_old",
"short": "10y-12y",
"long": "10 to 12 Years Old"
},
"_12y_to_15y": {
"id": "12y_to_15y_old",
"short": "12y-15y",
"long": "12 to 15 Years Old"
},
"over_15y": {
"id": "over_15y_old",
"short": "15y+",
"long": "15+ Years Old"
}
}
UNDER_AGE_NAMES = {
"_1w": {
"id": "under_1w_old",
"short": "<1w",
"long": "Under 1 Week Old"
},
"_1m": {
"id": "under_1m_old",
"short": "<1m",
"long": "Under 1 Month Old"
},
"_2m": {
"id": "under_2m_old",
"short": "<2m",
"long": "Under 2 Months Old"
},
"_3m": {
"id": "under_3m_old",
"short": "<3m",
"long": "Under 3 Months Old"
},
"_4m": {
"id": "under_4m_old",
"short": "<4m",
"long": "Under 4 Months Old"
},
"_5m": {
"id": "under_5m_old",
"short": "<5m",
"long": "Under 5 Months Old"
},
"_6m": {
"id": "under_6m_old",
"short": "<6m",
"long": "Under 6 Months Old"
},
"_1y": {
"id": "under_1y_old",
"short": "<1y",
"long": "Under 1 Year Old"
},
"_2y": {
"id": "under_2y_old",
"short": "<2y",
"long": "Under 2 Years Old"
},
"_3y": {
"id": "under_3y_old",
"short": "<3y",
"long": "Under 3 Years Old"
},
"_4y": {
"id": "under_4y_old",
"short": "<4y",
"long": "Under 4 Years Old"
},
"_5y": {
"id": "under_5y_old",
"short": "<5y",
"long": "Under 5 Years Old"
},
"_6y": {
"id": "under_6y_old",
"short": "<6y",
"long": "Under 6 Years Old"
},
"_7y": {
"id": "under_7y_old",
"short": "<7y",
"long": "Under 7 Years Old"
},
"_8y": {
"id": "under_8y_old",
"short": "<8y",
"long": "Under 8 Years Old"
},
"_10y": {
"id": "under_10y_old",
"short": "<10y",
"long": "Under 10 Years Old"
},
"_12y": {
"id": "under_12y_old",
"short": "<12y",
"long": "Under 12 Years Old"
},
"_15y": {
"id": "under_15y_old",
"short": "<15y",
"long": "Under 15 Years Old"
}
}
OVER_AGE_NAMES = {
"_1d": {
"id": "over_1d_old",
"short": "1d+",
"long": "Over 1 Day Old"
},
"_1w": {
"id": "over_1w_old",
"short": "1w+",
"long": "Over 1 Week Old"
},
"_1m": {
"id": "over_1m_old",
"short": "1m+",
"long": "Over 1 Month Old"
},
"_2m": {
"id": "over_2m_old",
"short": "2m+",
"long": "Over 2 Months Old"
},
"_3m": {
"id": "over_3m_old",
"short": "3m+",
"long": "Over 3 Months Old"
},
"_4m": {
"id": "over_4m_old",
"short": "4m+",
"long": "Over 4 Months Old"
},
"_5m": {
"id": "over_5m_old",
"short": "5m+",
"long": "Over 5 Months Old"
},
"_6m": {
"id": "over_6m_old",
"short": "6m+",
"long": "Over 6 Months Old"
},
"_1y": {
"id": "over_1y_old",
"short": "1y+",
"long": "Over 1 Year Old"
},
"_2y": {
"id": "over_2y_old",
"short": "2y+",
"long": "Over 2 Years Old"
},
"_3y": {
"id": "over_3y_old",
"short": "3y+",
"long": "Over 3 Years Old"
},
"_4y": {
"id": "over_4y_old",
"short": "4y+",
"long": "Over 4 Years Old"
},
"_5y": {
"id": "over_5y_old",
"short": "5y+",
"long": "Over 5 Years Old"
},
"_6y": {
"id": "over_6y_old",
"short": "6y+",
"long": "Over 6 Years Old"
},
"_7y": {
"id": "over_7y_old",
"short": "7y+",
"long": "Over 7 Years Old"
},
"_8y": {
"id": "over_8y_old",
"short": "8y+",
"long": "Over 8 Years Old"
},
"_10y": {
"id": "over_10y_old",
"short": "10y+",
"long": "Over 10 Years Old"
},
"_12y": {
"id": "over_12y_old",
"short": "12y+",
"long": "Over 12 Years Old"
}
}
AMOUNT_RANGE_NAMES = {
"_0sats": {
"id": "0sats",
"short": "0 sats",
"long": "0 Sats"
},
"_1sat_to_10sats": {
"id": "1sat_to_10sats",
"short": "1-10 sats",
"long": "1-10 Sats"
},
"_10sats_to_100sats": {
"id": "10sats_to_100sats",
"short": "10-100 sats",
"long": "10-100 Sats"
},
"_100sats_to_1k_sats": {
"id": "100sats_to_1k_sats",
"short": "100-1k sats",
"long": "100-1K Sats"
},
"_1k_sats_to_10k_sats": {
"id": "1k_sats_to_10k_sats",
"short": "1k-10k sats",
"long": "1K-10K Sats"
},
"_10k_sats_to_100k_sats": {
"id": "10k_sats_to_100k_sats",
"short": "10k-100k sats",
"long": "10K-100K Sats"
},
"_100k_sats_to_1m_sats": {
"id": "100k_sats_to_1m_sats",
"short": "100k-1M sats",
"long": "100K-1M Sats"
},
"_1m_sats_to_10m_sats": {
"id": "1m_sats_to_10m_sats",
"short": "1M-10M sats",
"long": "1M-10M Sats"
},
"_10m_sats_to_1btc": {
"id": "10m_sats_to_1btc",
"short": "0.1-1 BTC",
"long": "0.1-1 BTC"
},
"_1btc_to_10btc": {
"id": "1btc_to_10btc",
"short": "1-10 BTC",
"long": "1-10 BTC"
},
"_10btc_to_100btc": {
"id": "10btc_to_100btc",
"short": "10-100 BTC",
"long": "10-100 BTC"
},
"_100btc_to_1k_btc": {
"id": "100btc_to_1k_btc",
"short": "100-1k BTC",
"long": "100-1K BTC"
},
"_1k_btc_to_10k_btc": {
"id": "1k_btc_to_10k_btc",
"short": "1k-10k BTC",
"long": "1K-10K BTC"
},
"_10k_btc_to_100k_btc": {
"id": "10k_btc_to_100k_btc",
"short": "10k-100k BTC",
"long": "10K-100K BTC"
},
"over_100k_btc": {
"id": "over_100k_btc",
"short": "100k+ BTC",
"long": "100K+ BTC"
}
}
OVER_AMOUNT_NAMES = {
"_1sat": {
"id": "over_1sat",
"short": "1+ sats",
"long": "Over 1 Sat"
},
"_10sats": {
"id": "over_10sats",
"short": "10+ sats",
"long": "Over 10 Sats"
},
"_100sats": {
"id": "over_100sats",
"short": "100+ sats",
"long": "Over 100 Sats"
},
"_1k_sats": {
"id": "over_1k_sats",
"short": "1k+ sats",
"long": "Over 1K Sats"
},
"_10k_sats": {
"id": "over_10k_sats",
"short": "10k+ sats",
"long": "Over 10K Sats"
},
"_100k_sats": {
"id": "over_100k_sats",
"short": "100k+ sats",
"long": "Over 100K Sats"
},
"_1m_sats": {
"id": "over_1m_sats",
"short": "1M+ sats",
"long": "Over 1M Sats"
},
"_10m_sats": {
"id": "over_10m_sats",
"short": "0.1+ BTC",
"long": "Over 0.1 BTC"
},
"_1btc": {
"id": "over_1btc",
"short": "1+ BTC",
"long": "Over 1 BTC"
},
"_10btc": {
"id": "over_10btc",
"short": "10+ BTC",
"long": "Over 10 BTC"
},
"_100btc": {
"id": "over_100btc",
"short": "100+ BTC",
"long": "Over 100 BTC"
},
"_1k_btc": {
"id": "over_1k_btc",
"short": "1k+ BTC",
"long": "Over 1K BTC"
},
"_10k_btc": {
"id": "over_10k_btc",
"short": "10k+ BTC",
"long": "Over 10K BTC"
}
}
UNDER_AMOUNT_NAMES = {
"_10sats": {
"id": "under_10sats",
"short": "<10 sats",
"long": "Under 10 Sats"
},
"_100sats": {
"id": "under_100sats",
"short": "<100 sats",
"long": "Under 100 Sats"
},
"_1k_sats": {
"id": "under_1k_sats",
"short": "<1k sats",
"long": "Under 1K Sats"
},
"_10k_sats": {
"id": "under_10k_sats",
"short": "<10k sats",
"long": "Under 10K Sats"
},
"_100k_sats": {
"id": "under_100k_sats",
"short": "<100k sats",
"long": "Under 100K Sats"
},
"_1m_sats": {
"id": "under_1m_sats",
"short": "<1M sats",
"long": "Under 1M Sats"
},
"_10m_sats": {
"id": "under_10m_sats",
"short": "<0.1 BTC",
"long": "Under 0.1 BTC"
},
"_1btc": {
"id": "under_1btc",
"short": "<1 BTC",
"long": "Under 1 BTC"
},
"_10btc": {
"id": "under_10btc",
"short": "<10 BTC",
"long": "Under 10 BTC"
},
"_100btc": {
"id": "under_100btc",
"short": "<100 BTC",
"long": "Under 100 BTC"
},
"_1k_btc": {
"id": "under_1k_btc",
"short": "<1k BTC",
"long": "Under 1K BTC"
},
"_10k_btc": {
"id": "under_10k_btc",
"short": "<10k BTC",
"long": "Under 10K BTC"
},
"_100k_btc": {
"id": "under_100k_btc",
"short": "<100k BTC",
"long": "Under 100K BTC"
}
}
PROFITABILITY_RANGE_NAMES = {
"over_1000pct_in_profit": {
"id": "utxos_over_1000pct_in_profit",
"short": "+>1000%",
"long": "Over 1000% in Profit"
},
"_500pct_to_1000pct_in_profit": {
"id": "utxos_500pct_to_1000pct_in_profit",
"short": "+500-1000%",
"long": "500-1000% in Profit"
},
"_300pct_to_500pct_in_profit": {
"id": "utxos_300pct_to_500pct_in_profit",
"short": "+300-500%",
"long": "300-500% in Profit"
},
"_200pct_to_300pct_in_profit": {
"id": "utxos_200pct_to_300pct_in_profit",
"short": "+200-300%",
"long": "200-300% in Profit"
},
"_100pct_to_200pct_in_profit": {
"id": "utxos_100pct_to_200pct_in_profit",
"short": "+100-200%",
"long": "100-200% in Profit"
},
"_90pct_to_100pct_in_profit": {
"id": "utxos_90pct_to_100pct_in_profit",
"short": "+90-100%",
"long": "90-100% in Profit"
},
"_80pct_to_90pct_in_profit": {
"id": "utxos_80pct_to_90pct_in_profit",
"short": "+80-90%",
"long": "80-90% in Profit"
},
"_70pct_to_80pct_in_profit": {
"id": "utxos_70pct_to_80pct_in_profit",
"short": "+70-80%",
"long": "70-80% in Profit"
},
"_60pct_to_70pct_in_profit": {
"id": "utxos_60pct_to_70pct_in_profit",
"short": "+60-70%",
"long": "60-70% in Profit"
},
"_50pct_to_60pct_in_profit": {
"id": "utxos_50pct_to_60pct_in_profit",
"short": "+50-60%",
"long": "50-60% in Profit"
},
"_40pct_to_50pct_in_profit": {
"id": "utxos_40pct_to_50pct_in_profit",
"short": "+40-50%",
"long": "40-50% in Profit"
},
"_30pct_to_40pct_in_profit": {
"id": "utxos_30pct_to_40pct_in_profit",
"short": "+30-40%",
"long": "30-40% in Profit"
},
"_20pct_to_30pct_in_profit": {
"id": "utxos_20pct_to_30pct_in_profit",
"short": "+20-30%",
"long": "20-30% in Profit"
},
"_10pct_to_20pct_in_profit": {
"id": "utxos_10pct_to_20pct_in_profit",
"short": "+10-20%",
"long": "10-20% in Profit"
},
"_0pct_to_10pct_in_profit": {
"id": "utxos_0pct_to_10pct_in_profit",
"short": "+0-10%",
"long": "0-10% in Profit"
},
"_0pct_to_10pct_in_loss": {
"id": "utxos_0pct_to_10pct_in_loss",
"short": "-0-10%",
"long": "0-10% in Loss"
},
"_10pct_to_20pct_in_loss": {
"id": "utxos_10pct_to_20pct_in_loss",
"short": "-10-20%",
"long": "10-20% in Loss"
},
"_20pct_to_30pct_in_loss": {
"id": "utxos_20pct_to_30pct_in_loss",
"short": "-20-30%",
"long": "20-30% in Loss"
},
"_30pct_to_40pct_in_loss": {
"id": "utxos_30pct_to_40pct_in_loss",
"short": "-30-40%",
"long": "30-40% in Loss"
},
"_40pct_to_50pct_in_loss": {
"id": "utxos_40pct_to_50pct_in_loss",
"short": "-40-50%",
"long": "40-50% in Loss"
},
"_50pct_to_60pct_in_loss": {
"id": "utxos_50pct_to_60pct_in_loss",
"short": "-50-60%",
"long": "50-60% in Loss"
},
"_60pct_to_70pct_in_loss": {
"id": "utxos_60pct_to_70pct_in_loss",
"short": "-60-70%",
"long": "60-70% in Loss"
},
"_70pct_to_80pct_in_loss": {
"id": "utxos_70pct_to_80pct_in_loss",
"short": "-70-80%",
"long": "70-80% in Loss"
},
"_80pct_to_90pct_in_loss": {
"id": "utxos_80pct_to_90pct_in_loss",
"short": "-80-90%",
"long": "80-90% in Loss"
},
"_90pct_to_100pct_in_loss": {
"id": "utxos_90pct_to_100pct_in_loss",
"short": "-90-100%",
"long": "90-100% in Loss"
}
}
PROFIT_NAMES = {
"all": {
"id": "utxos_in_profit",
"short": "All",
"long": "In Profit"
},
"_10pct": {
"id": "utxos_over_10pct_in_profit",
"short": ">=10%",
"long": "Over 10% in Profit"
},
"_20pct": {
"id": "utxos_over_20pct_in_profit",
"short": ">=20%",
"long": "Over 20% in Profit"
},
"_30pct": {
"id": "utxos_over_30pct_in_profit",
"short": ">=30%",
"long": "Over 30% in Profit"
},
"_40pct": {
"id": "utxos_over_40pct_in_profit",
"short": ">=40%",
"long": "Over 40% in Profit"
},
"_50pct": {
"id": "utxos_over_50pct_in_profit",
"short": ">=50%",
"long": "Over 50% in Profit"
},
"_60pct": {
"id": "utxos_over_60pct_in_profit",
"short": ">=60%",
"long": "Over 60% in Profit"
},
"_70pct": {
"id": "utxos_over_70pct_in_profit",
"short": ">=70%",
"long": "Over 70% in Profit"
},
"_80pct": {
"id": "utxos_over_80pct_in_profit",
"short": ">=80%",
"long": "Over 80% in Profit"
},
"_90pct": {
"id": "utxos_over_90pct_in_profit",
"short": ">=90%",
"long": "Over 90% in Profit"
},
"_100pct": {
"id": "utxos_over_100pct_in_profit",
"short": ">=100%",
"long": "Over 100% in Profit"
},
"_200pct": {
"id": "utxos_over_200pct_in_profit",
"short": ">=200%",
"long": "Over 200% in Profit"
},
"_300pct": {
"id": "utxos_over_300pct_in_profit",
"short": ">=300%",
"long": "Over 300% in Profit"
},
"_500pct": {
"id": "utxos_over_500pct_in_profit",
"short": ">=500%",
"long": "Over 500% in Profit"
}
}
LOSS_NAMES = {
"all": {
"id": "utxos_in_loss",
"short": "All",
"long": "In Loss"
},
"_10pct": {
"id": "utxos_over_10pct_in_loss",
"short": ">=10%",
"long": "Over 10% in Loss"
},
"_20pct": {
"id": "utxos_over_20pct_in_loss",
"short": ">=20%",
"long": "Over 20% in Loss"
},
"_30pct": {
"id": "utxos_over_30pct_in_loss",
"short": ">=30%",
"long": "Over 30% in Loss"
},
"_40pct": {
"id": "utxos_over_40pct_in_loss",
"short": ">=40%",
"long": "Over 40% in Loss"
},
"_50pct": {
"id": "utxos_over_50pct_in_loss",
"short": ">=50%",
"long": "Over 50% in Loss"
},
"_60pct": {
"id": "utxos_over_60pct_in_loss",
"short": ">=60%",
"long": "Over 60% in Loss"
},
"_70pct": {
"id": "utxos_over_70pct_in_loss",
"short": ">=70%",
"long": "Over 70% in Loss"
},
"_80pct": {
"id": "utxos_over_80pct_in_loss",
"short": ">=80%",
"long": "Over 80% in Loss"
}
}
def __init__(self, base_url: str = 'http://localhost:3000', timeout: float = 30.0):
super().__init__(base_url, timeout)
self.series = SeriesTree(self)
def series_endpoint(self, series: str, index: Index) -> SeriesEndpoint[Any]:
"""Create a dynamic series endpoint builder for any series/index combination.
Use this for programmatic access when the series name is determined at runtime.
For type-safe access, use the `series` tree instead.
"""
return SeriesEndpoint(self, series, index)
def index_to_date(self, index: Index, i: int) -> Union[date, datetime]:
"""Convert an index value to a date/datetime for date-based indexes."""
return _index_to_date(index, i)
def date_to_index(self, index: Index, d: Union[date, datetime]) -> int:
"""Convert a date/datetime to an index value for date-based indexes."""
return _date_to_index(index, d)
def get_api(self) -> Any:
"""Compact OpenAPI specification.
Compact OpenAPI specification optimized for LLM consumption. Removes redundant fields while preserving essential API information. Full spec available at `/openapi.json`.
Endpoint: `GET /api.json`"""
return self.get_json('/api.json')
def get_address(self, address: Addr) -> AddrStats:
"""Address information.
Retrieve address information including balance and transaction counts. Supports all standard Bitcoin address types (P2PKH, P2SH, P2WPKH, P2WSH, P2TR).
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-address)*
Endpoint: `GET /api/address/{address}`"""
return self.get_json(f'/api/address/{address}')
def get_address_txs(self, address: Addr, after_txid: Optional[Txid] = None) -> List[Transaction]:
"""Address transactions.
Get transaction history for an address, sorted with newest first. Returns up to 50 mempool transactions plus the first 25 confirmed transactions. Use ?after_txid=<txid> for pagination.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-transactions)*
Endpoint: `GET /api/address/{address}/txs`"""
params = []
if after_txid is not None: params.append(f'after_txid={after_txid}')
query = '&'.join(params)
path = f'/api/address/{address}/txs{"?" + query if query else ""}'
return self.get_json(path)
def get_address_confirmed_txs(self, address: Addr, after_txid: Optional[Txid] = None) -> List[Transaction]:
"""Address confirmed transactions.
Get confirmed transactions for an address, 25 per page. Use ?after_txid=<txid> for pagination.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-transactions-chain)*
Endpoint: `GET /api/address/{address}/txs/chain`"""
params = []
if after_txid is not None: params.append(f'after_txid={after_txid}')
query = '&'.join(params)
path = f'/api/address/{address}/txs/chain{"?" + query if query else ""}'
return self.get_json(path)
def get_address_mempool_txs(self, address: Addr) -> List[Txid]:
"""Address mempool transactions.
Get unconfirmed transaction IDs for an address from the mempool (up to 50).
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-transactions-mempool)*
Endpoint: `GET /api/address/{address}/txs/mempool`"""
return self.get_json(f'/api/address/{address}/txs/mempool')
def get_address_utxos(self, address: Addr) -> List[Utxo]:
"""Address UTXOs.
Get unspent transaction outputs (UTXOs) for an address. Returns txid, vout, value, and confirmation status for each UTXO.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-utxo)*
Endpoint: `GET /api/address/{address}/utxo`"""
return self.get_json(f'/api/address/{address}/utxo')
def get_block_by_height(self, height: Height) -> BlockInfo:
"""Block by height.
Retrieve block information by block height. Returns block metadata including hash, timestamp, difficulty, size, weight, and transaction count.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-height)*
Endpoint: `GET /api/block-height/{height}`"""
return self.get_json(f'/api/block-height/{height}')
def get_block(self, hash: BlockHash) -> BlockInfo:
"""Block information.
Retrieve block information by block hash. Returns block metadata including height, timestamp, difficulty, size, weight, and transaction count.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block)*
Endpoint: `GET /api/block/{hash}`"""
return self.get_json(f'/api/block/{hash}')
def get_block_raw(self, hash: BlockHash) -> List[float]:
"""Raw block.
Returns the raw block data in binary format.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-raw)*
Endpoint: `GET /api/block/{hash}/raw`"""
return self.get_json(f'/api/block/{hash}/raw')
def get_block_status(self, hash: BlockHash) -> BlockStatus:
"""Block status.
Retrieve the status of a block. Returns whether the block is in the best chain and, if so, its height and the hash of the next block.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-status)*
Endpoint: `GET /api/block/{hash}/status`"""
return self.get_json(f'/api/block/{hash}/status')
def get_block_txid(self, hash: BlockHash, index: TxIndex) -> Txid:
"""Transaction ID at index.
Retrieve a single transaction ID at a specific index within a block. Returns plain text txid.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-transaction-id)*
Endpoint: `GET /api/block/{hash}/txid/{index}`"""
return self.get_json(f'/api/block/{hash}/txid/{index}')
def get_block_txids(self, hash: BlockHash) -> List[Txid]:
"""Block transaction IDs.
Retrieve all transaction IDs in a block. Returns an array of txids in block order.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-transaction-ids)*
Endpoint: `GET /api/block/{hash}/txids`"""
return self.get_json(f'/api/block/{hash}/txids')
def get_block_txs(self, hash: BlockHash, start_index: TxIndex) -> List[Transaction]:
"""Block transactions (paginated).
Retrieve transactions in a block by block hash, starting from the specified index. Returns up to 25 transactions at a time.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-transactions)*
Endpoint: `GET /api/block/{hash}/txs/{start_index}`"""
return self.get_json(f'/api/block/{hash}/txs/{start_index}')
def get_blocks(self) -> List[BlockInfo]:
"""Recent blocks.
Retrieve the last 10 blocks. Returns block metadata for each block.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-blocks)*
Endpoint: `GET /api/blocks`"""
return self.get_json('/api/blocks')
def get_blocks_from_height(self, height: Height) -> List[BlockInfo]:
"""Blocks from height.
Retrieve up to 10 blocks going backwards from the given height. For example, height=100 returns blocks 100, 99, 98, ..., 91. Height=0 returns only block 0.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-blocks)*
Endpoint: `GET /api/blocks/{height}`"""
return self.get_json(f'/api/blocks/{height}')
def get_mempool(self) -> MempoolInfo:
"""Mempool statistics.
Get current mempool statistics including transaction count, total vsize, and total fees.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-mempool)*
Endpoint: `GET /api/mempool/info`"""
return self.get_json('/api/mempool/info')
def get_live_price(self) -> Dollars:
"""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`"""
return self.get_json('/api/mempool/price')
def get_mempool_txids(self) -> List[Txid]:
"""Mempool transaction IDs.
Get all transaction IDs currently in the mempool.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-mempool-transaction-ids)*
Endpoint: `GET /api/mempool/txids`"""
return self.get_json('/api/mempool/txids')
def get_series_tree(self) -> TreeNode:
"""Series catalog.
Returns the complete hierarchical catalog of available series organized as a tree structure. Series are grouped by categories and subcategories.
Endpoint: `GET /api/series`"""
return self.get_json('/api/series')
def get_series_bulk(self, series: SeriesList, index: Index, start: Optional[RangeIndex] = None, end: Optional[RangeIndex] = None, limit: Optional[Limit] = None, format: Optional[Format] = None) -> Union[List[AnySeriesData], str]:
"""Bulk series data.
Fetch multiple series in a single request. Supports filtering by index and date range. Returns an array of SeriesData objects. For a single series, use `get_series` instead.
Endpoint: `GET /api/series/bulk`"""
params = []
params.append(f'series={series}')
params.append(f'index={index}')
if start is not None: params.append(f'start={start}')
if end is not None: params.append(f'end={end}')
if limit is not None: params.append(f'limit={limit}')
if format is not None: params.append(f'format={format}')
query = '&'.join(params)
path = f'/api/series/bulk{"?" + query if query else ""}'
if format == 'csv':
return self.get_text(path)
return self.get_json(path)
def get_cost_basis_cohorts(self) -> List[str]:
"""Available cost basis cohorts.
List available cohorts for cost basis distribution.
Endpoint: `GET /api/series/cost-basis`"""
return self.get_json('/api/series/cost-basis')
def get_cost_basis_dates(self, cohort: Cohort) -> List[Date]:
"""Available cost basis dates.
List available dates for a cohort's cost basis distribution.
Endpoint: `GET /api/series/cost-basis/{cohort}/dates`"""
return self.get_json(f'/api/series/cost-basis/{cohort}/dates')
def get_cost_basis(self, cohort: Cohort, date: str, bucket: Optional[CostBasisBucket] = None, value: Optional[CostBasisValue] = None) -> dict:
"""Cost basis distribution.
Get the cost basis distribution for a cohort on a specific date.
Query params:
- `bucket`: raw (default), lin200, lin500, lin1000, log10, log50, log100
- `value`: supply (default, in BTC), realized (USD), unrealized (USD)
Endpoint: `GET /api/series/cost-basis/{cohort}/{date}`"""
params = []
if bucket is not None: params.append(f'bucket={bucket}')
if value is not None: params.append(f'value={value}')
query = '&'.join(params)
path = f'/api/series/cost-basis/{cohort}/{date}{"?" + query if query else ""}'
return self.get_json(path)
def get_series_count(self) -> List[SeriesCount]:
"""Series count.
Returns the number of series available per index type.
Endpoint: `GET /api/series/count`"""
return self.get_json('/api/series/count')
def get_indexes(self) -> List[IndexInfo]:
"""List available indexes.
Returns all available indexes with their accepted query aliases. Use any alias when querying series.
Endpoint: `GET /api/series/indexes`"""
return self.get_json('/api/series/indexes')
def list_series(self, page: Optional[float] = None, per_page: Optional[float] = None) -> PaginatedSeries:
"""Series list.
Paginated flat list of all available series names. Use `page` query param for pagination.
Endpoint: `GET /api/series/list`"""
params = []
if page is not None: params.append(f'page={page}')
if per_page is not None: params.append(f'per_page={per_page}')
query = '&'.join(params)
path = f'/api/series/list{"?" + query if query else ""}'
return self.get_json(path)
def search_series(self, q: SeriesName, limit: Optional[Limit] = None) -> List[str]:
"""Search series.
Fuzzy search for series by name. Supports partial matches and typos.
Endpoint: `GET /api/series/search`"""
params = []
params.append(f'q={q}')
if limit is not None: params.append(f'limit={limit}')
query = '&'.join(params)
path = f'/api/series/search{"?" + query if query else ""}'
return self.get_json(path)
def get_series_info(self, series: SeriesName) -> SeriesInfo:
"""Get series info.
Returns the supported indexes and value type for the specified series.
Endpoint: `GET /api/series/{series}`"""
return self.get_json(f'/api/series/{series}')
def get_series(self, series: SeriesName, index: Index, start: Optional[RangeIndex] = None, end: Optional[RangeIndex] = None, limit: Optional[Limit] = None, format: Optional[Format] = None) -> Union[AnySeriesData, str]:
"""Get series data.
Fetch data for a specific series at the given index. Use query parameters to filter by date range and format (json/csv).
Endpoint: `GET /api/series/{series}/{index}`"""
params = []
if start is not None: params.append(f'start={start}')
if end is not None: params.append(f'end={end}')
if limit is not None: params.append(f'limit={limit}')
if format is not None: params.append(f'format={format}')
query = '&'.join(params)
path = f'/api/series/{series}/{index}{"?" + query if query else ""}'
if format == 'csv':
return self.get_text(path)
return self.get_json(path)
def get_series_data(self, series: SeriesName, index: Index, start: Optional[RangeIndex] = None, end: Optional[RangeIndex] = None, limit: Optional[Limit] = None, format: Optional[Format] = None) -> Union[List[bool], str]:
"""Get raw series data.
Returns just the data array without the SeriesData wrapper. Supports the same range and format parameters as the standard endpoint.
Endpoint: `GET /api/series/{series}/{index}/data`"""
params = []
if start is not None: params.append(f'start={start}')
if end is not None: params.append(f'end={end}')
if limit is not None: params.append(f'limit={limit}')
if format is not None: params.append(f'format={format}')
query = '&'.join(params)
path = f'/api/series/{series}/{index}/data{"?" + query if query else ""}'
if format == 'csv':
return self.get_text(path)
return self.get_json(path)
def get_series_latest(self, series: SeriesName, index: Index) -> Any:
"""Get latest series value.
Returns the single most recent value for a series, unwrapped (not inside a SeriesData object).
Endpoint: `GET /api/series/{series}/{index}/latest`"""
return self.get_json(f'/api/series/{series}/{index}/latest')
def get_series_len(self, series: SeriesName, index: Index) -> float:
"""Get series data length.
Returns the total number of data points for a series at the given index.
Endpoint: `GET /api/series/{series}/{index}/len`"""
return self.get_json(f'/api/series/{series}/{index}/len')
def get_series_version(self, series: SeriesName, index: Index) -> Version:
"""Get series version.
Returns the current version of a series. Changes when the series data is updated.
Endpoint: `GET /api/series/{series}/{index}/version`"""
return self.get_json(f'/api/series/{series}/{index}/version')
def get_disk_usage(self) -> DiskUsage:
"""Disk usage.
Returns the disk space used by BRK and Bitcoin data.
Endpoint: `GET /api/server/disk`"""
return self.get_json('/api/server/disk')
def get_sync_status(self) -> SyncStatus:
"""Sync status.
Returns the sync status of the indexer, including indexed height, tip height, blocks behind, and last indexed timestamp.
Endpoint: `GET /api/server/sync`"""
return self.get_json('/api/server/sync')
def get_tx(self, txid: Txid) -> Transaction:
"""Transaction information.
Retrieve complete transaction data by transaction ID (txid). Returns inputs, outputs, fee, size, and confirmation status.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction)*
Endpoint: `GET /api/tx/{txid}`"""
return self.get_json(f'/api/tx/{txid}')
def get_tx_hex(self, txid: Txid) -> Hex:
"""Transaction hex.
Retrieve the raw transaction as a hex-encoded string. Returns the serialized transaction in hexadecimal format.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction-hex)*
Endpoint: `GET /api/tx/{txid}/hex`"""
return self.get_json(f'/api/tx/{txid}/hex')
def get_tx_outspend(self, txid: Txid, vout: Vout) -> TxOutspend:
"""Output spend status.
Get the spending status of a transaction output. Returns whether the output has been spent and, if so, the spending transaction details.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction-outspend)*
Endpoint: `GET /api/tx/{txid}/outspend/{vout}`"""
return self.get_json(f'/api/tx/{txid}/outspend/{vout}')
def get_tx_outspends(self, txid: Txid) -> List[TxOutspend]:
"""All output spend statuses.
Get the spending status of all outputs in a transaction. Returns an array with the spend status for each output.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction-outspends)*
Endpoint: `GET /api/tx/{txid}/outspends`"""
return self.get_json(f'/api/tx/{txid}/outspends')
def get_tx_status(self, txid: Txid) -> TxStatus:
"""Transaction status.
Retrieve the confirmation status of a transaction. Returns whether the transaction is confirmed and, if so, the block height, hash, and timestamp.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction-status)*
Endpoint: `GET /api/tx/{txid}/status`"""
return self.get_json(f'/api/tx/{txid}/status')
def get_difficulty_adjustment(self) -> DifficultyAdjustment:
"""Difficulty adjustment.
Get current difficulty adjustment information including progress through the current epoch, estimated retarget date, and difficulty change prediction.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-difficulty-adjustment)*
Endpoint: `GET /api/v1/difficulty-adjustment`"""
return self.get_json('/api/v1/difficulty-adjustment')
def get_mempool_blocks(self) -> List[MempoolBlock]:
"""Projected mempool blocks.
Get projected blocks from the mempool for fee estimation. Each block contains statistics about transactions that would be included if a block were mined now.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-mempool-blocks-fees)*
Endpoint: `GET /api/v1/fees/mempool-blocks`"""
return self.get_json('/api/v1/fees/mempool-blocks')
def get_recommended_fees(self) -> RecommendedFees:
"""Recommended fees.
Get recommended fee rates for different confirmation targets based on current mempool state.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-recommended-fees)*
Endpoint: `GET /api/v1/fees/recommended`"""
return self.get_json('/api/v1/fees/recommended')
def get_block_fee_rates(self, time_period: TimePeriod) -> Any:
"""Block fee rates (WIP).
**Work in progress.** Get block fee rate percentiles (min, 10th, 25th, median, 75th, 90th, max) for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-feerates)*
Endpoint: `GET /api/v1/mining/blocks/fee-rates/{time_period}`"""
return self.get_json(f'/api/v1/mining/blocks/fee-rates/{time_period}')
def get_block_fees(self, time_period: TimePeriod) -> List[BlockFeesEntry]:
"""Block fees.
Get average block fees for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-fees)*
Endpoint: `GET /api/v1/mining/blocks/fees/{time_period}`"""
return self.get_json(f'/api/v1/mining/blocks/fees/{time_period}')
def get_block_rewards(self, time_period: TimePeriod) -> List[BlockRewardsEntry]:
"""Block rewards.
Get average block rewards (coinbase = subsidy + fees) for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-rewards)*
Endpoint: `GET /api/v1/mining/blocks/rewards/{time_period}`"""
return self.get_json(f'/api/v1/mining/blocks/rewards/{time_period}')
def get_block_sizes_weights(self, time_period: TimePeriod) -> BlockSizesWeights:
"""Block sizes and weights.
Get average block sizes and weights for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-sizes-weights)*
Endpoint: `GET /api/v1/mining/blocks/sizes-weights/{time_period}`"""
return self.get_json(f'/api/v1/mining/blocks/sizes-weights/{time_period}')
def get_block_by_timestamp(self, timestamp: Timestamp) -> BlockTimestamp:
"""Block by timestamp.
Find the block closest to a given UNIX timestamp.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-timestamp)*
Endpoint: `GET /api/v1/mining/blocks/timestamp/{timestamp}`"""
return self.get_json(f'/api/v1/mining/blocks/timestamp/{timestamp}')
def get_difficulty_adjustments(self) -> List[DifficultyAdjustmentEntry]:
"""Difficulty adjustments (all time).
Get historical difficulty adjustments including timestamp, block height, difficulty value, and percentage change.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-difficulty-adjustments)*
Endpoint: `GET /api/v1/mining/difficulty-adjustments`"""
return self.get_json('/api/v1/mining/difficulty-adjustments')
def get_difficulty_adjustments_by_period(self, time_period: TimePeriod) -> List[DifficultyAdjustmentEntry]:
"""Difficulty adjustments.
Get historical difficulty adjustments for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-difficulty-adjustments)*
Endpoint: `GET /api/v1/mining/difficulty-adjustments/{time_period}`"""
return self.get_json(f'/api/v1/mining/difficulty-adjustments/{time_period}')
def get_hashrate(self) -> HashrateSummary:
"""Network hashrate (all time).
Get network hashrate and difficulty data for all time.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-hashrate)*
Endpoint: `GET /api/v1/mining/hashrate`"""
return self.get_json('/api/v1/mining/hashrate')
def get_hashrate_by_period(self, time_period: TimePeriod) -> HashrateSummary:
"""Network hashrate.
Get network hashrate and difficulty data for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-hashrate)*
Endpoint: `GET /api/v1/mining/hashrate/{time_period}`"""
return self.get_json(f'/api/v1/mining/hashrate/{time_period}')
def get_pool(self, slug: PoolSlug) -> PoolDetail:
"""Mining pool details.
Get detailed information about a specific mining pool including block counts and shares for different time periods.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-mining-pool)*
Endpoint: `GET /api/v1/mining/pool/{slug}`"""
return self.get_json(f'/api/v1/mining/pool/{slug}')
def get_pools(self) -> List[PoolInfo]:
"""List all mining pools.
Get list of all known mining pools with their identifiers.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-mining-pools)*
Endpoint: `GET /api/v1/mining/pools`"""
return self.get_json('/api/v1/mining/pools')
def get_pool_stats(self, time_period: TimePeriod) -> PoolsSummary:
"""Mining pool statistics.
Get mining pool statistics for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-mining-pools)*
Endpoint: `GET /api/v1/mining/pools/{time_period}`"""
return self.get_json(f'/api/v1/mining/pools/{time_period}')
def get_reward_stats(self, block_count: float) -> RewardStats:
"""Mining reward statistics.
Get mining reward statistics for the last N blocks including total rewards, fees, and transaction count.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-reward-stats)*
Endpoint: `GET /api/v1/mining/reward-stats/{block_count}`"""
return self.get_json(f'/api/v1/mining/reward-stats/{block_count}')
def validate_address(self, address: str) -> AddrValidation:
"""Validate address.
Validate a Bitcoin address and get information about its type and scriptPubKey.
*[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-validate)*
Endpoint: `GET /api/v1/validate-address/{address}`"""
return self.get_json(f'/api/v1/validate-address/{address}')
def get_health(self) -> Health:
"""Health check.
Returns the health status of the API server, including uptime information.
Endpoint: `GET /health`"""
return self.get_json('/health')
def get_openapi(self) -> Any:
"""OpenAPI specification.
Full OpenAPI 3.1 specification for this API.
Endpoint: `GET /openapi.json`"""
return self.get_json('/openapi.json')
def get_version(self) -> str:
"""API version.
Returns the current version of the API server
Endpoint: `GET /version`"""
return self.get_json('/version')