global: snapshot

This commit is contained in:
nym21
2026-03-16 15:54:24 +01:00
parent ae2dd43073
commit ae067739ce
23 changed files with 478 additions and 478 deletions
@@ -214,7 +214,7 @@ function _wrapSeriesData(raw) {{
/**
* @template T
* @typedef {{Object}} SeriesEndpointBuilder
* @typedef {{Object}} SeriesEndpoint
* @property {{(index: number) => SingleItemBuilder<T>}} get - Get single item at index
* @property {{(start?: number, end?: number) => RangeBuilder<T>}} slice - Slice by index
* @property {{(n: number) => RangeBuilder<T>}} first - Get first n items
@@ -228,7 +228,7 @@ function _wrapSeriesData(raw) {{
/**
* @template T
* @typedef {{Object}} DateSeriesEndpointBuilder
* @typedef {{Object}} DateSeriesEndpoint
* @property {{(index: number | globalThis.Date) => DateSingleItemBuilder<T>}} get - Get single item at index or Date
* @property {{(start?: number | globalThis.Date, end?: number | globalThis.Date) => DateRangeBuilder<T>}} slice - Slice by index or Date
* @property {{(n: number) => DateRangeBuilder<T>}} first - Get first n items
@@ -240,7 +240,7 @@ function _wrapSeriesData(raw) {{
* @property {{string}} path - The endpoint path
*/
/** @typedef {{SeriesEndpointBuilder<any>}} AnySeriesEndpointBuilder */
/** @typedef {{SeriesEndpoint<any>}} AnySeriesEndpoint */
/** @template T @typedef {{Object}} SingleItemBuilder
* @property {{(onUpdate?: (value: SeriesData<T>) => void) => Promise<SeriesData<T>>}} fetch - Fetch the item
@@ -284,9 +284,9 @@ function _wrapSeriesData(raw) {{
* @template T
* @typedef {{Object}} SeriesPattern
* @property {{string}} name - The series name
* @property {{Readonly<Partial<Record<Index, SeriesEndpointBuilder<T>>>>}} by - Index endpoints as lazy getters
* @property {{Readonly<Partial<Record<Index, SeriesEndpoint<T>>>>}} by - Index endpoints as lazy getters
* @property {{() => readonly Index[]}} indexes - Get the list of available indexes
* @property {{(index: Index) => SeriesEndpointBuilder<T>|undefined}} get - Get an endpoint for a specific index
* @property {{(index: Index) => SeriesEndpoint<T>|undefined}} get - Get an endpoint for a specific index
*/
/** @typedef {{SeriesPattern<any>}} AnySeriesPattern */
@@ -297,7 +297,7 @@ function _wrapSeriesData(raw) {{
* @param {{BrkClientBase}} client
* @param {{string}} name - The series vec name
* @param {{Index}} index - The index name
* @returns {{DateSeriesEndpointBuilder<T>}}
* @returns {{DateSeriesEndpoint<T>}}
*/
function _endpoint(client, name, index) {{
const p = `/api/series/${{name}}/${{index}}`;
@@ -349,7 +349,7 @@ function _endpoint(client, name, index) {{
then(resolve, reject) {{ return this.fetch().then(resolve, reject); }},
}});
/** @type {{DateSeriesEndpointBuilder<T>}} */
/** @type {{DateSeriesEndpoint<T>}} */
const endpoint = {{
get(idx) {{ if (idx instanceof Date) idx = dateToIndex(index, idx); return singleItemBuilder(idx); }},
slice(start, end) {{
@@ -615,7 +615,7 @@ function _mp(client, name, indexes) {{
by,
/** @returns {{readonly Index[]}} */
indexes() {{ return indexes; }},
/** @param {{Index}} index @returns {{SeriesEndpointBuilder<T>|undefined}} */
/** @param {{Index}} index @returns {{SeriesEndpoint<T>|undefined}} */
get(index) {{ return indexes.includes(index) ? _endpoint(client, name, index) : undefined; }}
}};
}}
@@ -631,9 +631,9 @@ function _mp(client, name, indexes) {{
.iter()
.map(|idx| {
let builder = if idx.is_date_based() {
"DateSeriesEndpointBuilder"
"DateSeriesEndpoint"
} else {
"SeriesEndpointBuilder"
"SeriesEndpoint"
};
format!("readonly {}: {}<T>", idx.name(), builder)
})
@@ -642,7 +642,7 @@ function _mp(client, name, indexes) {{
writeln!(
output,
"/** @template T @typedef {{{{ name: string, by: {}, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }}}} {} */",
"/** @template T @typedef {{{{ name: string, by: {}, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }}}} {} */",
by_type, pattern.name
)
.unwrap();
@@ -152,7 +152,7 @@ pub fn generate_main_client(
writeln!(output, " *").unwrap();
writeln!(output, " * @param {{string}} series - The series name").unwrap();
writeln!(output, " * @param {{Index}} index - The index name").unwrap();
writeln!(output, " * @returns {{SeriesEndpointBuilder<unknown>}}").unwrap();
writeln!(output, " * @returns {{SeriesEndpoint<unknown>}}").unwrap();
writeln!(output, " */").unwrap();
writeln!(output, " seriesEndpoint(series, index) {{").unwrap();
writeln!(output, " return _endpoint(this, series, index);").unwrap();
@@ -36,7 +36,7 @@ pub fn generate_main_client(output: &mut String, endpoints: &[Endpoint]) {
// Generate series_endpoint() method for dynamic series access
writeln!(
output,
" def series_endpoint(self, series: str, index: Index) -> SeriesEndpointBuilder[Any]:"
" def series_endpoint(self, series: str, index: Index) -> SeriesEndpoint[Any]:"
)
.unwrap();
writeln!(
@@ -58,7 +58,7 @@ pub fn generate_main_client(output: &mut String, endpoints: &[Endpoint]) {
writeln!(output, " \"\"\"").unwrap();
writeln!(
output,
" return SeriesEndpointBuilder(self, series, index)"
" return SeriesEndpoint(self, series, index)"
)
.unwrap();
writeln!(output).unwrap();
@@ -127,7 +127,7 @@ def _p(prefix: str, acc: str) -> str:
.unwrap();
}
/// Generate the SeriesData and SeriesEndpointBuilder classes
/// Generate the SeriesData and SeriesEndpoint classes
pub fn generate_endpoint_class(output: &mut String) {
writeln!(
output,
@@ -439,7 +439,7 @@ class DateSkippedBuilder(SkippedBuilder[T]):
return self._config.get_date_series()
class SeriesEndpointBuilder(Generic[T]):
class SeriesEndpoint(Generic[T]):
"""Builder for series endpoint queries with int-based indexing.
Examples:
@@ -489,7 +489,7 @@ class SeriesEndpointBuilder(Generic[T]):
return self._config.path()
class DateSeriesEndpointBuilder(Generic[T]):
class DateSeriesEndpoint(Generic[T]):
"""Builder for series endpoint queries with date-based indexing.
Accepts dates in __getitem__ and returns DateSeriesData from fetch().
@@ -553,8 +553,8 @@ class DateSeriesEndpointBuilder(Generic[T]):
# Type aliases for non-generic usage
AnySeriesEndpointBuilder = SeriesEndpointBuilder[Any]
AnyDateSeriesEndpointBuilder = DateSeriesEndpointBuilder[Any]
AnySeriesEndpoint = SeriesEndpoint[Any]
AnyDateSeriesEndpoint = DateSeriesEndpoint[Any]
class SeriesPattern(Protocol[T]):
@@ -569,7 +569,7 @@ class SeriesPattern(Protocol[T]):
"""Get the list of available indexes for this series."""
...
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]:
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]:
"""Get an endpoint builder for a specific index, if supported."""
...
@@ -605,11 +605,11 @@ pub fn generate_index_accessors(output: &mut String, patterns: &[IndexSetPattern
// Generate helper functions
writeln!(
output,
r#"def _ep(c: BrkClientBase, n: str, i: Index) -> SeriesEndpointBuilder[Any]:
return SeriesEndpointBuilder(c, n, i)
r#"def _ep(c: BrkClientBase, n: str, i: Index) -> SeriesEndpoint[Any]:
return SeriesEndpoint(c, n, i)
def _dep(c: BrkClientBase, n: str, i: Index) -> DateSeriesEndpointBuilder[Any]:
return DateSeriesEndpointBuilder(c, n, i)
def _dep(c: BrkClientBase, n: str, i: Index) -> DateSeriesEndpoint[Any]:
return DateSeriesEndpoint(c, n, i)
"#
)
.unwrap();
@@ -631,9 +631,9 @@ def _dep(c: BrkClientBase, n: str, i: Index) -> DateSeriesEndpointBuilder[Any]:
let method_name = index_to_field_name(index);
let index_name = index.name();
let (builder_type, helper) = if index.is_date_based() {
("DateSeriesEndpointBuilder", "_dep")
("DateSeriesEndpoint", "_dep")
} else {
("SeriesEndpointBuilder", "_ep")
("SeriesEndpoint", "_ep")
};
writeln!(
output,
@@ -663,7 +663,7 @@ def _dep(c: BrkClientBase, n: str, i: Index) -> DateSeriesEndpointBuilder[Any]:
.unwrap();
writeln!(
output,
" def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in {} else None",
" def get(self, index: Index) -> Optional[SeriesEndpoint[T]]: return _ep(self.by._c, self._n, index) if index in {} else None",
idx_var
)
.unwrap();
@@ -50,8 +50,8 @@ impl BrkClient {{
/// .last(10)
/// .json::<f64>()?;
/// ```
pub fn series_endpoint(&self, series: impl Into<Series>, index: Index) -> SeriesEndpointBuilder<serde_json::Value> {{
SeriesEndpointBuilder::new(
pub fn series_endpoint(&self, series: impl Into<SeriesName>, index: Index) -> SeriesEndpoint<serde_json::Value> {{
SeriesEndpoint::new(
self.base.clone(),
Arc::from(series.into().as_str()),
index,
@@ -61,11 +61,11 @@ impl BrkClient {{
/// Create a dynamic date-based series endpoint builder.
///
/// Returns `Err` if the index is not date-based.
pub fn date_series_endpoint(&self, series: impl Into<Series>, index: Index) -> Result<DateSeriesEndpointBuilder<serde_json::Value>> {{
pub fn date_series_endpoint(&self, series: impl Into<SeriesName>, index: Index) -> Result<DateSeriesEndpoint<serde_json::Value>> {{
if !index.is_date_based() {{
return Err(BrkError {{ message: format!("{{}} is not a date-based index", index.name()) }});
}}
Ok(DateSeriesEndpointBuilder::new(
Ok(DateSeriesEndpoint::new(
self.base.clone(),
Arc::from(series.into().as_str()),
index,
@@ -217,7 +217,7 @@ fn param_type_to_rust(param_type: &str) -> String {
"string" | "*" => "&str".to_string(),
"integer" | "number" => "i64".to_string(),
"boolean" => "bool".to_string(),
other => other.to_string(), // Domain types like Index, Series, Format
other => other.to_string(), // Domain types like Index, SeriesName, Format
}
}
@@ -140,7 +140,7 @@ pub trait AnySeriesPattern {{
/// Generic trait for series patterns with endpoint access.
pub trait SeriesPattern<T>: AnySeriesPattern {{
/// Get an endpoint builder for a specific index, if supported.
fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>>;
fn get(&self, index: Index) -> Option<SeriesEndpoint<T>>;
}}
"#
@@ -148,7 +148,7 @@ pub trait SeriesPattern<T>: AnySeriesPattern {{
.unwrap();
}
/// Generate the SeriesEndpointBuilder structs with typestate pattern.
/// Generate the SeriesEndpoint structs with typestate pattern.
pub fn generate_endpoint(output: &mut String) {
writeln!(
output,
@@ -192,7 +192,7 @@ impl EndpointConfig {{
/// Builder for series endpoint queries.
///
/// Parameterized by element type `T` and response type `D` (defaults to `SeriesData<T>`).
/// For date-based indexes, use `DateSeriesEndpointBuilder<T>` which sets `D = DateSeriesData<T>`.
/// For date-based indexes, use `DateSeriesEndpoint<T>` which sets `D = DateSeriesData<T>`.
///
/// # Examples
/// ```ignore
@@ -204,18 +204,18 @@ impl EndpointConfig {{
/// let data = endpoint.last(10).fetch()?; // last 10
/// let data = endpoint.skip(100).take(10).fetch()?; // iterator-style
/// ```
pub struct SeriesEndpointBuilder<T, D = SeriesData<T>> {{
pub struct SeriesEndpoint<T, D = SeriesData<T>> {{
config: EndpointConfig,
_marker: std::marker::PhantomData<fn() -> (T, D)>,
}}
/// Builder for date-based series endpoint queries.
///
/// Like `SeriesEndpointBuilder` but returns `DateSeriesData` and provides
/// Like `SeriesEndpoint` but returns `DateSeriesData` and provides
/// date-based access methods (`get_date`, `date_range`).
pub type DateSeriesEndpointBuilder<T> = SeriesEndpointBuilder<T, DateSeriesData<T>>;
pub type DateSeriesEndpoint<T> = SeriesEndpoint<T, DateSeriesData<T>>;
impl<T: DeserializeOwned, D: DeserializeOwned> SeriesEndpointBuilder<T, D> {{
impl<T: DeserializeOwned, D: DeserializeOwned> SeriesEndpoint<T, D> {{
pub fn new(client: Arc<BrkClientBase>, name: Arc<str>, index: Index) -> Self {{
Self {{ config: EndpointConfig::new(client, name, index), _marker: std::marker::PhantomData }}
}}
@@ -286,8 +286,8 @@ impl<T: DeserializeOwned, D: DeserializeOwned> SeriesEndpointBuilder<T, D> {{
}}
}}
/// Date-specific methods available only on `DateSeriesEndpointBuilder`.
impl<T: DeserializeOwned> SeriesEndpointBuilder<T, DateSeriesData<T>> {{
/// Date-specific methods available only on `DateSeriesEndpoint`.
impl<T: DeserializeOwned> SeriesEndpoint<T, DateSeriesData<T>> {{
/// Select a specific date position (for day-precision or coarser indexes).
pub fn get_date(self, date: Date) -> SingleItemBuilder<T, DateSeriesData<T>> {{
let index = self.config.index.date_to_index(date).unwrap_or(0);
@@ -414,13 +414,13 @@ pub fn generate_index_accessors(output: &mut String, patterns: &[IndexSetPattern
writeln!(
output,
r#"#[inline]
fn _ep<T: DeserializeOwned>(c: &Arc<BrkClientBase>, n: &Arc<str>, i: Index) -> SeriesEndpointBuilder<T> {{
SeriesEndpointBuilder::new(c.clone(), n.clone(), i)
fn _ep<T: DeserializeOwned>(c: &Arc<BrkClientBase>, n: &Arc<str>, i: Index) -> SeriesEndpoint<T> {{
SeriesEndpoint::new(c.clone(), n.clone(), i)
}}
#[inline]
fn _dep<T: DeserializeOwned>(c: &Arc<BrkClientBase>, n: &Arc<str>, i: Index) -> DateSeriesEndpointBuilder<T> {{
DateSeriesEndpointBuilder::new(c.clone(), n.clone(), i)
fn _dep<T: DeserializeOwned>(c: &Arc<BrkClientBase>, n: &Arc<str>, i: Index) -> DateSeriesEndpoint<T> {{
DateSeriesEndpoint::new(c.clone(), n.clone(), i)
}}
"#
)
@@ -441,14 +441,14 @@ fn _dep<T: DeserializeOwned>(c: &Arc<BrkClientBase>, n: &Arc<str>, i: Index) ->
if index.is_date_based() {
writeln!(
output,
" pub fn {}(&self) -> DateSeriesEndpointBuilder<T> {{ _dep(&self.client, &self.name, Index::{}) }}",
" pub fn {}(&self) -> DateSeriesEndpoint<T> {{ _dep(&self.client, &self.name, Index::{}) }}",
method_name, index
)
.unwrap();
} else {
writeln!(
output,
" pub fn {}(&self) -> SeriesEndpointBuilder<T> {{ _ep(&self.client, &self.name, Index::{}) }}",
" pub fn {}(&self) -> SeriesEndpoint<T> {{ _ep(&self.client, &self.name, Index::{}) }}",
method_name, index
)
.unwrap();
@@ -484,7 +484,7 @@ fn _dep<T: DeserializeOwned>(c: &Arc<BrkClientBase>, n: &Arc<str>, i: Index) ->
// Implement SeriesPattern<T> trait
writeln!(
output,
"impl<T: DeserializeOwned> SeriesPattern<T> for {}<T> {{ fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> {{ {}.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) }} }}\n",
"impl<T: DeserializeOwned> SeriesPattern<T> for {}<T> {{ fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> {{ {}.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) }} }}\n",
pattern.name, idx_const
)
.unwrap();
+8 -8
View File
@@ -1,7 +1,7 @@
//! Basic example of using the BRK client.
use brk_client::{BrkClient, BrkClientOptions};
use brk_types::{FormatResponse, Index, Metric, RangeIndex};
use brk_types::{FormatResponse, Index, RangeIndex};
fn main() -> brk_client::Result<()> {
// Create client with default options
@@ -16,7 +16,7 @@ fn main() -> brk_client::Result<()> {
// Fetch price data using the typed metrics API
// day1() returns DateMetricEndpointBuilder, so fetch() returns DateMetricData
let price_close = client
.metrics()
.series()
.prices
.split
.close
@@ -37,7 +37,7 @@ fn main() -> brk_client::Result<()> {
// Fetch block data with height index (non-date, returns MetricData)
let block_count = client
.metrics()
.series()
.blocks
.count
.total
@@ -53,9 +53,9 @@ fn main() -> brk_client::Result<()> {
}
// Fetch supply data as CSV
dbg!(client.metrics().supply.circulating.btc.by.day1().path());
dbg!(client.series().supply.circulating.btc.by.day1().path());
let circulating = client
.metrics()
.series()
.supply
.circulating
.btc
@@ -67,7 +67,7 @@ fn main() -> brk_client::Result<()> {
// Using dynamic metric fetching with date_metric() for date-based indexes
let date_metric = client
.date_metric(Metric::from("price_close"), Index::Day1)?
.date_series_endpoint("price_close", Index::Day1)?
.last(3)
.fetch()?;
println!("Dynamic date metric fetch:");
@@ -76,8 +76,8 @@ fn main() -> brk_client::Result<()> {
}
// Using generic metric fetching (returns FormatResponse)
let metricdata = client.get_metric(
Metric::from("price_close"),
let metricdata = client.get_series(
"price_close".into(),
Index::Day1,
Some(RangeIndex::Int(-3)),
None,
+122 -122
View File
@@ -120,7 +120,7 @@ pub trait AnySeriesPattern {
/// Generic trait for series patterns with endpoint access.
pub trait SeriesPattern<T>: AnySeriesPattern {
/// Get an endpoint builder for a specific index, if supported.
fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>>;
fn get(&self, index: Index) -> Option<SeriesEndpoint<T>>;
}
@@ -164,7 +164,7 @@ impl EndpointConfig {
/// Builder for series endpoint queries.
///
/// Parameterized by element type `T` and response type `D` (defaults to `SeriesData<T>`).
/// For date-based indexes, use `DateSeriesEndpointBuilder<T>` which sets `D = DateSeriesData<T>`.
/// For date-based indexes, use `DateSeriesEndpoint<T>` which sets `D = DateSeriesData<T>`.
///
/// # Examples
/// ```ignore
@@ -176,18 +176,18 @@ impl EndpointConfig {
/// let data = endpoint.last(10).fetch()?; // last 10
/// let data = endpoint.skip(100).take(10).fetch()?; // iterator-style
/// ```
pub struct SeriesEndpointBuilder<T, D = SeriesData<T>> {
pub struct SeriesEndpoint<T, D = SeriesData<T>> {
config: EndpointConfig,
_marker: std::marker::PhantomData<fn() -> (T, D)>,
}
/// Builder for date-based series endpoint queries.
///
/// Like `SeriesEndpointBuilder` but returns `DateSeriesData` and provides
/// Like `SeriesEndpoint` but returns `DateSeriesData` and provides
/// date-based access methods (`get_date`, `date_range`).
pub type DateSeriesEndpointBuilder<T> = SeriesEndpointBuilder<T, DateSeriesData<T>>;
pub type DateSeriesEndpoint<T> = SeriesEndpoint<T, DateSeriesData<T>>;
impl<T: DeserializeOwned, D: DeserializeOwned> SeriesEndpointBuilder<T, D> {
impl<T: DeserializeOwned, D: DeserializeOwned> SeriesEndpoint<T, D> {
pub fn new(client: Arc<BrkClientBase>, name: Arc<str>, index: Index) -> Self {
Self { config: EndpointConfig::new(client, name, index), _marker: std::marker::PhantomData }
}
@@ -258,8 +258,8 @@ impl<T: DeserializeOwned, D: DeserializeOwned> SeriesEndpointBuilder<T, D> {
}
}
/// Date-specific methods available only on `DateSeriesEndpointBuilder`.
impl<T: DeserializeOwned> SeriesEndpointBuilder<T, DateSeriesData<T>> {
/// Date-specific methods available only on `DateSeriesEndpoint`.
impl<T: DeserializeOwned> SeriesEndpoint<T, DateSeriesData<T>> {
/// Select a specific date position (for day-precision or coarser indexes).
pub fn get_date(self, date: Date) -> SingleItemBuilder<T, DateSeriesData<T>> {
let index = self.config.index.date_to_index(date).unwrap_or(0);
@@ -396,35 +396,35 @@ const _I34: &[Index] = &[Index::FundedAddressIndex];
const _I35: &[Index] = &[Index::EmptyAddressIndex];
#[inline]
fn _ep<T: DeserializeOwned>(c: &Arc<BrkClientBase>, n: &Arc<str>, i: Index) -> SeriesEndpointBuilder<T> {
SeriesEndpointBuilder::new(c.clone(), n.clone(), i)
fn _ep<T: DeserializeOwned>(c: &Arc<BrkClientBase>, n: &Arc<str>, i: Index) -> SeriesEndpoint<T> {
SeriesEndpoint::new(c.clone(), n.clone(), i)
}
#[inline]
fn _dep<T: DeserializeOwned>(c: &Arc<BrkClientBase>, n: &Arc<str>, i: Index) -> DateSeriesEndpointBuilder<T> {
DateSeriesEndpointBuilder::new(c.clone(), n.clone(), i)
fn _dep<T: DeserializeOwned>(c: &Arc<BrkClientBase>, n: &Arc<str>, i: Index) -> DateSeriesEndpoint<T> {
DateSeriesEndpoint::new(c.clone(), n.clone(), i)
}
// Index accessor structs
pub struct SeriesPattern1By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern1By<T> {
pub fn minute10(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Minute10) }
pub fn minute30(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Minute30) }
pub fn hour1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Hour1) }
pub fn hour4(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Hour4) }
pub fn hour12(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Hour12) }
pub fn day1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Day1) }
pub fn day3(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Day3) }
pub fn week1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Week1) }
pub fn month1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Month1) }
pub fn month3(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Month3) }
pub fn month6(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Month6) }
pub fn year1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Year1) }
pub fn year10(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Year10) }
pub fn halving(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::Halving) }
pub fn epoch(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::Epoch) }
pub fn height(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::Height) }
pub fn minute10(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Minute10) }
pub fn minute30(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Minute30) }
pub fn hour1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Hour1) }
pub fn hour4(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Hour4) }
pub fn hour12(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Hour12) }
pub fn day1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Day1) }
pub fn day3(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Day3) }
pub fn week1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Week1) }
pub fn month1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Month1) }
pub fn month3(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Month3) }
pub fn month6(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Month6) }
pub fn year1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Year1) }
pub fn year10(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Year10) }
pub fn halving(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::Halving) }
pub fn epoch(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::Epoch) }
pub fn height(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::Height) }
}
pub struct SeriesPattern1<T> { name: Arc<str>, pub by: SeriesPattern1By<T> }
@@ -434,25 +434,25 @@ impl<T: DeserializeOwned> SeriesPattern1<T> {
}
impl<T> AnySeriesPattern for SeriesPattern1<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I1 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern1<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I1.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern1<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I1.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern2By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern2By<T> {
pub fn minute10(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Minute10) }
pub fn minute30(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Minute30) }
pub fn hour1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Hour1) }
pub fn hour4(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Hour4) }
pub fn hour12(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Hour12) }
pub fn day1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Day1) }
pub fn day3(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Day3) }
pub fn week1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Week1) }
pub fn month1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Month1) }
pub fn month3(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Month3) }
pub fn month6(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Month6) }
pub fn year1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Year1) }
pub fn year10(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Year10) }
pub fn halving(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::Halving) }
pub fn epoch(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::Epoch) }
pub fn minute10(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Minute10) }
pub fn minute30(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Minute30) }
pub fn hour1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Hour1) }
pub fn hour4(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Hour4) }
pub fn hour12(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Hour12) }
pub fn day1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Day1) }
pub fn day3(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Day3) }
pub fn week1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Week1) }
pub fn month1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Month1) }
pub fn month3(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Month3) }
pub fn month6(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Month6) }
pub fn year1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Year1) }
pub fn year10(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Year10) }
pub fn halving(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::Halving) }
pub fn epoch(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::Epoch) }
}
pub struct SeriesPattern2<T> { name: Arc<str>, pub by: SeriesPattern2By<T> }
@@ -462,11 +462,11 @@ impl<T: DeserializeOwned> SeriesPattern2<T> {
}
impl<T> AnySeriesPattern for SeriesPattern2<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I2 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern2<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I2.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern2<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I2.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern3By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern3By<T> {
pub fn minute10(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Minute10) }
pub fn minute10(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Minute10) }
}
pub struct SeriesPattern3<T> { name: Arc<str>, pub by: SeriesPattern3By<T> }
@@ -476,11 +476,11 @@ impl<T: DeserializeOwned> SeriesPattern3<T> {
}
impl<T> AnySeriesPattern for SeriesPattern3<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I3 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern3<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I3.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern3<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I3.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern4By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern4By<T> {
pub fn minute30(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Minute30) }
pub fn minute30(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Minute30) }
}
pub struct SeriesPattern4<T> { name: Arc<str>, pub by: SeriesPattern4By<T> }
@@ -490,11 +490,11 @@ impl<T: DeserializeOwned> SeriesPattern4<T> {
}
impl<T> AnySeriesPattern for SeriesPattern4<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I4 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern4<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I4.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern4<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I4.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern5By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern5By<T> {
pub fn hour1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Hour1) }
pub fn hour1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Hour1) }
}
pub struct SeriesPattern5<T> { name: Arc<str>, pub by: SeriesPattern5By<T> }
@@ -504,11 +504,11 @@ impl<T: DeserializeOwned> SeriesPattern5<T> {
}
impl<T> AnySeriesPattern for SeriesPattern5<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I5 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern5<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I5.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern5<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I5.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern6By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern6By<T> {
pub fn hour4(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Hour4) }
pub fn hour4(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Hour4) }
}
pub struct SeriesPattern6<T> { name: Arc<str>, pub by: SeriesPattern6By<T> }
@@ -518,11 +518,11 @@ impl<T: DeserializeOwned> SeriesPattern6<T> {
}
impl<T> AnySeriesPattern for SeriesPattern6<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I6 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern6<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I6.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern6<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I6.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern7By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern7By<T> {
pub fn hour12(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Hour12) }
pub fn hour12(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Hour12) }
}
pub struct SeriesPattern7<T> { name: Arc<str>, pub by: SeriesPattern7By<T> }
@@ -532,11 +532,11 @@ impl<T: DeserializeOwned> SeriesPattern7<T> {
}
impl<T> AnySeriesPattern for SeriesPattern7<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I7 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern7<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I7.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern7<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I7.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern8By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern8By<T> {
pub fn day1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Day1) }
pub fn day1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Day1) }
}
pub struct SeriesPattern8<T> { name: Arc<str>, pub by: SeriesPattern8By<T> }
@@ -546,11 +546,11 @@ impl<T: DeserializeOwned> SeriesPattern8<T> {
}
impl<T> AnySeriesPattern for SeriesPattern8<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I8 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern8<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I8.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern8<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I8.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern9By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern9By<T> {
pub fn day3(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Day3) }
pub fn day3(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Day3) }
}
pub struct SeriesPattern9<T> { name: Arc<str>, pub by: SeriesPattern9By<T> }
@@ -560,11 +560,11 @@ impl<T: DeserializeOwned> SeriesPattern9<T> {
}
impl<T> AnySeriesPattern for SeriesPattern9<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I9 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern9<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I9.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern9<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I9.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern10By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern10By<T> {
pub fn week1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Week1) }
pub fn week1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Week1) }
}
pub struct SeriesPattern10<T> { name: Arc<str>, pub by: SeriesPattern10By<T> }
@@ -574,11 +574,11 @@ impl<T: DeserializeOwned> SeriesPattern10<T> {
}
impl<T> AnySeriesPattern for SeriesPattern10<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I10 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern10<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I10.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern10<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I10.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern11By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern11By<T> {
pub fn month1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Month1) }
pub fn month1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Month1) }
}
pub struct SeriesPattern11<T> { name: Arc<str>, pub by: SeriesPattern11By<T> }
@@ -588,11 +588,11 @@ impl<T: DeserializeOwned> SeriesPattern11<T> {
}
impl<T> AnySeriesPattern for SeriesPattern11<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I11 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern11<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I11.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern11<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I11.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern12By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern12By<T> {
pub fn month3(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Month3) }
pub fn month3(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Month3) }
}
pub struct SeriesPattern12<T> { name: Arc<str>, pub by: SeriesPattern12By<T> }
@@ -602,11 +602,11 @@ impl<T: DeserializeOwned> SeriesPattern12<T> {
}
impl<T> AnySeriesPattern for SeriesPattern12<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I12 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern12<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I12.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern12<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I12.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern13By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern13By<T> {
pub fn month6(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Month6) }
pub fn month6(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Month6) }
}
pub struct SeriesPattern13<T> { name: Arc<str>, pub by: SeriesPattern13By<T> }
@@ -616,11 +616,11 @@ impl<T: DeserializeOwned> SeriesPattern13<T> {
}
impl<T> AnySeriesPattern for SeriesPattern13<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I13 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern13<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I13.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern13<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I13.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern14By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern14By<T> {
pub fn year1(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Year1) }
pub fn year1(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Year1) }
}
pub struct SeriesPattern14<T> { name: Arc<str>, pub by: SeriesPattern14By<T> }
@@ -630,11 +630,11 @@ impl<T: DeserializeOwned> SeriesPattern14<T> {
}
impl<T> AnySeriesPattern for SeriesPattern14<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I14 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern14<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I14.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern14<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I14.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern15By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern15By<T> {
pub fn year10(&self) -> DateSeriesEndpointBuilder<T> { _dep(&self.client, &self.name, Index::Year10) }
pub fn year10(&self) -> DateSeriesEndpoint<T> { _dep(&self.client, &self.name, Index::Year10) }
}
pub struct SeriesPattern15<T> { name: Arc<str>, pub by: SeriesPattern15By<T> }
@@ -644,11 +644,11 @@ impl<T: DeserializeOwned> SeriesPattern15<T> {
}
impl<T> AnySeriesPattern for SeriesPattern15<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I15 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern15<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I15.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern15<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I15.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern16By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern16By<T> {
pub fn halving(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::Halving) }
pub fn halving(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::Halving) }
}
pub struct SeriesPattern16<T> { name: Arc<str>, pub by: SeriesPattern16By<T> }
@@ -658,11 +658,11 @@ impl<T: DeserializeOwned> SeriesPattern16<T> {
}
impl<T> AnySeriesPattern for SeriesPattern16<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I16 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern16<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I16.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern16<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I16.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern17By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern17By<T> {
pub fn epoch(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::Epoch) }
pub fn epoch(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::Epoch) }
}
pub struct SeriesPattern17<T> { name: Arc<str>, pub by: SeriesPattern17By<T> }
@@ -672,11 +672,11 @@ impl<T: DeserializeOwned> SeriesPattern17<T> {
}
impl<T> AnySeriesPattern for SeriesPattern17<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I17 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern17<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I17.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern17<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I17.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern18By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern18By<T> {
pub fn height(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::Height) }
pub fn height(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::Height) }
}
pub struct SeriesPattern18<T> { name: Arc<str>, pub by: SeriesPattern18By<T> }
@@ -686,11 +686,11 @@ impl<T: DeserializeOwned> SeriesPattern18<T> {
}
impl<T> AnySeriesPattern for SeriesPattern18<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I18 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern18<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I18.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern18<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I18.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern19By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern19By<T> {
pub fn tx_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::TxIndex) }
pub fn tx_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::TxIndex) }
}
pub struct SeriesPattern19<T> { name: Arc<str>, pub by: SeriesPattern19By<T> }
@@ -700,11 +700,11 @@ impl<T: DeserializeOwned> SeriesPattern19<T> {
}
impl<T> AnySeriesPattern for SeriesPattern19<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I19 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern19<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I19.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern19<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I19.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern20By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern20By<T> {
pub fn txin_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::TxInIndex) }
pub fn txin_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::TxInIndex) }
}
pub struct SeriesPattern20<T> { name: Arc<str>, pub by: SeriesPattern20By<T> }
@@ -714,11 +714,11 @@ impl<T: DeserializeOwned> SeriesPattern20<T> {
}
impl<T> AnySeriesPattern for SeriesPattern20<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I20 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern20<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I20.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern20<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I20.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern21By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern21By<T> {
pub fn txout_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::TxOutIndex) }
pub fn txout_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::TxOutIndex) }
}
pub struct SeriesPattern21<T> { name: Arc<str>, pub by: SeriesPattern21By<T> }
@@ -728,11 +728,11 @@ impl<T: DeserializeOwned> SeriesPattern21<T> {
}
impl<T> AnySeriesPattern for SeriesPattern21<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I21 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern21<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I21.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern21<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I21.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern22By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern22By<T> {
pub fn empty_output_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::EmptyOutputIndex) }
pub fn empty_output_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::EmptyOutputIndex) }
}
pub struct SeriesPattern22<T> { name: Arc<str>, pub by: SeriesPattern22By<T> }
@@ -742,11 +742,11 @@ impl<T: DeserializeOwned> SeriesPattern22<T> {
}
impl<T> AnySeriesPattern for SeriesPattern22<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I22 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern22<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I22.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern22<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I22.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern23By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern23By<T> {
pub fn op_return_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::OpReturnIndex) }
pub fn op_return_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::OpReturnIndex) }
}
pub struct SeriesPattern23<T> { name: Arc<str>, pub by: SeriesPattern23By<T> }
@@ -756,11 +756,11 @@ impl<T: DeserializeOwned> SeriesPattern23<T> {
}
impl<T> AnySeriesPattern for SeriesPattern23<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I23 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern23<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I23.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern23<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I23.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern24By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern24By<T> {
pub fn p2a_address_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::P2AAddressIndex) }
pub fn p2a_address_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::P2AAddressIndex) }
}
pub struct SeriesPattern24<T> { name: Arc<str>, pub by: SeriesPattern24By<T> }
@@ -770,11 +770,11 @@ impl<T: DeserializeOwned> SeriesPattern24<T> {
}
impl<T> AnySeriesPattern for SeriesPattern24<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I24 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern24<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I24.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern24<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I24.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern25By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern25By<T> {
pub fn p2ms_output_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::P2MSOutputIndex) }
pub fn p2ms_output_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::P2MSOutputIndex) }
}
pub struct SeriesPattern25<T> { name: Arc<str>, pub by: SeriesPattern25By<T> }
@@ -784,11 +784,11 @@ impl<T: DeserializeOwned> SeriesPattern25<T> {
}
impl<T> AnySeriesPattern for SeriesPattern25<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I25 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern25<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I25.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern25<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I25.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern26By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern26By<T> {
pub fn p2pk33_address_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::P2PK33AddressIndex) }
pub fn p2pk33_address_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::P2PK33AddressIndex) }
}
pub struct SeriesPattern26<T> { name: Arc<str>, pub by: SeriesPattern26By<T> }
@@ -798,11 +798,11 @@ impl<T: DeserializeOwned> SeriesPattern26<T> {
}
impl<T> AnySeriesPattern for SeriesPattern26<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I26 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern26<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I26.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern26<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I26.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern27By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern27By<T> {
pub fn p2pk65_address_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::P2PK65AddressIndex) }
pub fn p2pk65_address_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::P2PK65AddressIndex) }
}
pub struct SeriesPattern27<T> { name: Arc<str>, pub by: SeriesPattern27By<T> }
@@ -812,11 +812,11 @@ impl<T: DeserializeOwned> SeriesPattern27<T> {
}
impl<T> AnySeriesPattern for SeriesPattern27<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I27 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern27<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I27.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern27<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I27.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern28By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern28By<T> {
pub fn p2pkh_address_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::P2PKHAddressIndex) }
pub fn p2pkh_address_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::P2PKHAddressIndex) }
}
pub struct SeriesPattern28<T> { name: Arc<str>, pub by: SeriesPattern28By<T> }
@@ -826,11 +826,11 @@ impl<T: DeserializeOwned> SeriesPattern28<T> {
}
impl<T> AnySeriesPattern for SeriesPattern28<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I28 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern28<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I28.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern28<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I28.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern29By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern29By<T> {
pub fn p2sh_address_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::P2SHAddressIndex) }
pub fn p2sh_address_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::P2SHAddressIndex) }
}
pub struct SeriesPattern29<T> { name: Arc<str>, pub by: SeriesPattern29By<T> }
@@ -840,11 +840,11 @@ impl<T: DeserializeOwned> SeriesPattern29<T> {
}
impl<T> AnySeriesPattern for SeriesPattern29<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I29 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern29<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I29.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern29<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I29.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern30By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern30By<T> {
pub fn p2tr_address_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::P2TRAddressIndex) }
pub fn p2tr_address_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::P2TRAddressIndex) }
}
pub struct SeriesPattern30<T> { name: Arc<str>, pub by: SeriesPattern30By<T> }
@@ -854,11 +854,11 @@ impl<T: DeserializeOwned> SeriesPattern30<T> {
}
impl<T> AnySeriesPattern for SeriesPattern30<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I30 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern30<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I30.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern30<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I30.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern31By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern31By<T> {
pub fn p2wpkh_address_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::P2WPKHAddressIndex) }
pub fn p2wpkh_address_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::P2WPKHAddressIndex) }
}
pub struct SeriesPattern31<T> { name: Arc<str>, pub by: SeriesPattern31By<T> }
@@ -868,11 +868,11 @@ impl<T: DeserializeOwned> SeriesPattern31<T> {
}
impl<T> AnySeriesPattern for SeriesPattern31<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I31 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern31<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I31.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern31<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I31.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern32By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern32By<T> {
pub fn p2wsh_address_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::P2WSHAddressIndex) }
pub fn p2wsh_address_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::P2WSHAddressIndex) }
}
pub struct SeriesPattern32<T> { name: Arc<str>, pub by: SeriesPattern32By<T> }
@@ -882,11 +882,11 @@ impl<T: DeserializeOwned> SeriesPattern32<T> {
}
impl<T> AnySeriesPattern for SeriesPattern32<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I32 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern32<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I32.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern32<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I32.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern33By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern33By<T> {
pub fn unknown_output_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::UnknownOutputIndex) }
pub fn unknown_output_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::UnknownOutputIndex) }
}
pub struct SeriesPattern33<T> { name: Arc<str>, pub by: SeriesPattern33By<T> }
@@ -896,11 +896,11 @@ impl<T: DeserializeOwned> SeriesPattern33<T> {
}
impl<T> AnySeriesPattern for SeriesPattern33<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I33 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern33<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I33.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern33<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I33.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern34By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern34By<T> {
pub fn funded_address_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::FundedAddressIndex) }
pub fn funded_address_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::FundedAddressIndex) }
}
pub struct SeriesPattern34<T> { name: Arc<str>, pub by: SeriesPattern34By<T> }
@@ -910,11 +910,11 @@ impl<T: DeserializeOwned> SeriesPattern34<T> {
}
impl<T> AnySeriesPattern for SeriesPattern34<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I34 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern34<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I34.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern34<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I34.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
pub struct SeriesPattern35By<T> { client: Arc<BrkClientBase>, name: Arc<str>, _marker: std::marker::PhantomData<T> }
impl<T: DeserializeOwned> SeriesPattern35By<T> {
pub fn empty_address_index(&self) -> SeriesEndpointBuilder<T> { _ep(&self.client, &self.name, Index::EmptyAddressIndex) }
pub fn empty_address_index(&self) -> SeriesEndpoint<T> { _ep(&self.client, &self.name, Index::EmptyAddressIndex) }
}
pub struct SeriesPattern35<T> { name: Arc<str>, pub by: SeriesPattern35By<T> }
@@ -924,7 +924,7 @@ impl<T: DeserializeOwned> SeriesPattern35<T> {
}
impl<T> AnySeriesPattern for SeriesPattern35<T> { fn name(&self) -> &str { &self.name } fn indexes(&self) -> &'static [Index] { _I35 } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern35<T> { fn get(&self, index: Index) -> Option<SeriesEndpointBuilder<T>> { _I35.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
impl<T: DeserializeOwned> SeriesPattern<T> for SeriesPattern35<T> { fn get(&self, index: Index) -> Option<SeriesEndpoint<T>> { _I35.contains(&index).then(|| _ep(&self.by.client, &self.by.name, index)) } }
// Reusable pattern structs
@@ -8402,8 +8402,8 @@ impl BrkClient {
/// .last(10)
/// .json::<f64>()?;
/// ```
pub fn series_endpoint(&self, series: impl Into<Series>, index: Index) -> SeriesEndpointBuilder<serde_json::Value> {
SeriesEndpointBuilder::new(
pub fn series_endpoint(&self, series: impl Into<SeriesName>, index: Index) -> SeriesEndpoint<serde_json::Value> {
SeriesEndpoint::new(
self.base.clone(),
Arc::from(series.into().as_str()),
index,
@@ -8413,11 +8413,11 @@ impl BrkClient {
/// Create a dynamic date-based series endpoint builder.
///
/// Returns `Err` if the index is not date-based.
pub fn date_series_endpoint(&self, series: impl Into<Series>, index: Index) -> Result<DateSeriesEndpointBuilder<serde_json::Value>> {
pub fn date_series_endpoint(&self, series: impl Into<SeriesName>, index: Index) -> Result<DateSeriesEndpoint<serde_json::Value>> {
if !index.is_date_based() {
return Err(BrkError { message: format!("{} is not a date-based index", index.name()) });
}
Ok(DateSeriesEndpointBuilder::new(
Ok(DateSeriesEndpoint::new(
self.base.clone(),
Arc::from(series.into().as_str()),
index,
@@ -8730,7 +8730,7 @@ impl BrkClient {
/// Fuzzy search for series by name. Supports partial matches and typos.
///
/// Endpoint: `GET /api/series/search`
pub fn search_series(&self, q: Series, limit: Option<Limit>) -> Result<Vec<String>> {
pub fn search_series(&self, q: SeriesName, limit: Option<Limit>) -> Result<Vec<String>> {
let mut query = Vec::new();
query.push(format!("q={}", q));
if let Some(v) = limit { query.push(format!("limit={}", v)); }
@@ -8744,7 +8744,7 @@ impl BrkClient {
/// Returns the supported indexes and value type for the specified series.
///
/// Endpoint: `GET /api/series/{series}`
pub fn get_series_info(&self, series: Series) -> Result<SeriesInfo> {
pub fn get_series_info(&self, series: SeriesName) -> Result<SeriesInfo> {
self.base.get_json(&format!("/api/series/{series}"))
}
@@ -8753,7 +8753,7 @@ impl BrkClient {
/// 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}`
pub fn get_series(&self, series: Series, index: Index, start: Option<RangeIndex>, end: Option<RangeIndex>, limit: Option<Limit>, format: Option<Format>) -> Result<FormatResponse<SeriesData>> {
pub fn get_series(&self, series: SeriesName, index: Index, start: Option<RangeIndex>, end: Option<RangeIndex>, limit: Option<Limit>, format: Option<Format>) -> Result<FormatResponse<SeriesData>> {
let mut query = Vec::new();
if let Some(v) = start { query.push(format!("start={}", v)); }
if let Some(v) = end { query.push(format!("end={}", v)); }
@@ -8773,7 +8773,7 @@ impl BrkClient {
/// 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`
pub fn get_series_data(&self, series: Series, index: Index, start: Option<RangeIndex>, end: Option<RangeIndex>, limit: Option<Limit>, format: Option<Format>) -> Result<FormatResponse<Vec<bool>>> {
pub fn get_series_data(&self, series: SeriesName, index: Index, start: Option<RangeIndex>, end: Option<RangeIndex>, limit: Option<Limit>, format: Option<Format>) -> Result<FormatResponse<Vec<bool>>> {
let mut query = Vec::new();
if let Some(v) = start { query.push(format!("start={}", v)); }
if let Some(v) = end { query.push(format!("end={}", v)); }
@@ -8793,7 +8793,7 @@ impl BrkClient {
/// Returns the single most recent value for a series, unwrapped (not inside a SeriesData object).
///
/// Endpoint: `GET /api/series/{series}/{index}/latest`
pub fn get_series_latest(&self, series: Series, index: Index) -> Result<serde_json::Value> {
pub fn get_series_latest(&self, series: SeriesName, index: Index) -> Result<serde_json::Value> {
self.base.get_json(&format!("/api/series/{series}/{}/latest", index.name()))
}
@@ -8802,7 +8802,7 @@ impl BrkClient {
/// Returns the total number of data points for a series at the given index.
///
/// Endpoint: `GET /api/series/{series}/{index}/len`
pub fn get_series_len(&self, series: Series, index: Index) -> Result<f64> {
pub fn get_series_len(&self, series: SeriesName, index: Index) -> Result<f64> {
self.base.get_json(&format!("/api/series/{series}/{}/len", index.name()))
}
@@ -8811,7 +8811,7 @@ impl BrkClient {
/// Returns the current version of a series. Changes when the series data is updated.
///
/// Endpoint: `GET /api/series/{series}/{index}/version`
pub fn get_series_version(&self, series: Series, index: Index) -> Result<Version> {
pub fn get_series_version(&self, series: SeriesName, index: Index) -> Result<Version> {
self.base.get_json(&format!("/api/series/{series}/{}/version", index.name()))
}
+7 -7
View File
@@ -4,7 +4,7 @@ use brk_error::{Error, Result};
use brk_traversable::TreeNode;
use brk_types::{
Date, DetailedSeriesCount, Epoch, Etag, Format, Halving, Height, Index, IndexInfo, LegacyValue,
Limit, Series, SeriesData, SeriesInfo, SeriesOutput, SeriesOutputLegacy, SeriesSelection,
Limit, SeriesName, SeriesData, SeriesInfo, SeriesOutput, SeriesOutputLegacy, SeriesSelection,
Output, OutputLegacy, PaginatedSeries, Pagination, PaginationIndex, RangeIndex, RangeMap,
SearchQuery, Timestamp, Version,
};
@@ -30,7 +30,7 @@ impl Query {
self.vecs().matches(&query.q, query.limit)
}
pub fn series_not_found_error(&self, series: &Series) -> Error {
pub fn series_not_found_error(&self, series: &SeriesName) -> Error {
// Check if series exists but with different indexes
if let Some(indexes) = self.vecs().series_to_indexes(series.clone()) {
let supported = indexes
@@ -108,7 +108,7 @@ impl Query {
}
/// Returns the latest value for a single series as a JSON value.
pub fn latest(&self, series: &Series, index: Index) -> Result<serde_json::Value> {
pub fn latest(&self, series: &SeriesName, index: Index) -> Result<serde_json::Value> {
let vec = self
.vecs()
.get(series, index)
@@ -117,7 +117,7 @@ impl Query {
}
/// Returns the length (total data points) for a single series.
pub fn len(&self, series: &Series, index: Index) -> Result<usize> {
pub fn len(&self, series: &SeriesName, index: Index) -> Result<usize> {
let vec = self
.vecs()
.get(series, index)
@@ -126,7 +126,7 @@ impl Query {
}
/// Returns the version for a single series.
pub fn version(&self, series: &Series, index: Index) -> Result<Version> {
pub fn version(&self, series: &SeriesName, index: Index) -> Result<Version> {
let vec = self
.vecs()
.get(series, index)
@@ -308,7 +308,7 @@ impl Query {
self.vecs().index_to_ids(paginated_index)
}
pub fn series_info(&self, series: &Series) -> Option<SeriesInfo> {
pub fn series_info(&self, series: &SeriesName) -> Option<SeriesInfo> {
let index_to_vec = self.vecs().series_to_index_to_vec.get(series.replace("-", "_").as_str())?;
let value_type = index_to_vec.values().next()?.value_type_to_string();
let indexes = index_to_vec.keys().copied().collect();
@@ -318,7 +318,7 @@ impl Query {
})
}
pub fn series_to_indexes(&self, series: Series) -> Option<&Vec<Index>> {
pub fn series_to_indexes(&self, series: SeriesName) -> Option<&Vec<Index>> {
self.vecs().series_to_indexes(series)
}
+4 -4
View File
@@ -4,7 +4,7 @@ use brk_computer::Computer;
use brk_indexer::Indexer;
use brk_traversable::{Traversable, TreeNode};
use brk_types::{
Index, IndexInfo, Limit, PaginatedSeries, Pagination, PaginationIndex, Series, SeriesCount,
Index, IndexInfo, Limit, PaginatedSeries, Pagination, PaginationIndex, SeriesName, SeriesCount,
};
use derive_more::{Deref, DerefMut};
use quickmatch::{QuickMatch, QuickMatchConfig};
@@ -182,7 +182,7 @@ impl<'a> Vecs<'a> {
}
}
pub fn series_to_indexes(&self, series: Series) -> Option<&Vec<Index>> {
pub fn series_to_indexes(&self, series: SeriesName) -> Option<&Vec<Index>> {
self.series_to_indexes
.get(series.replace("-", "_").as_str())
}
@@ -204,7 +204,7 @@ impl<'a> Vecs<'a> {
self.catalog.as_ref().expect("catalog not initialized")
}
pub fn matches(&self, series: &Series, limit: Limit) -> Vec<&'_ str> {
pub fn matches(&self, series: &SeriesName, limit: Limit) -> Vec<&'_ str> {
if limit.is_zero() {
return Vec::new();
}
@@ -215,7 +215,7 @@ impl<'a> Vecs<'a> {
}
/// Look up a vec by series name and index
pub fn get(&self, series: &Series, index: Index) -> Option<&'a dyn AnyExportableVec> {
pub fn get(&self, series: &SeriesName, index: Index) -> Option<&'a dyn AnyExportableVec> {
let series_name = series.replace("-", "_");
self.series_to_index_to_vec
.get(series_name.as_str())
@@ -10,7 +10,7 @@ use axum::{
use brk_traversable::TreeNode;
use brk_types::{
CostBasisCohortParam, CostBasisFormatted, CostBasisParams, CostBasisQuery, DataRangeFormat,
Date, DetailedSeriesCount, Index, IndexInfo, PaginatedSeries, Pagination, SearchQuery, Series,
Date, DetailedSeriesCount, Index, IndexInfo, PaginatedSeries, Pagination, SearchQuery, SeriesName,
SeriesData, SeriesInfo, SeriesList, SeriesSelection, SeriesSelectionLegacy,
};
use schemars::JsonSchema;
@@ -24,13 +24,13 @@ use super::series::legacy;
/// Legacy path parameter for `/api/metric/{metric}`
#[derive(Deserialize, JsonSchema)]
struct LegacySeriesParam {
metric: Series,
metric: SeriesName,
}
/// Legacy path parameters for `/api/metric/{metric}/{index}`
#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema)]
struct LegacySeriesWithIndex {
metric: Series,
metric: SeriesName,
index: Index,
}
+7 -7
View File
@@ -10,8 +10,8 @@ use axum::{
use brk_traversable::TreeNode;
use brk_types::{
CostBasisCohortParam, CostBasisFormatted, CostBasisParams, CostBasisQuery, DataRangeFormat,
Date, IndexInfo, PaginatedSeries, Pagination, SearchQuery, SeriesCount, SeriesData,
SeriesInfo, SeriesParam, SeriesSelection, SeriesWithIndex,
Date, IndexInfo, PaginatedSeries, Pagination, SearchQuery, SeriesCount, SeriesData, SeriesInfo,
SeriesNameWithIndex, SeriesParam, SeriesSelection,
};
use crate::{CacheStrategy, extended::TransformResponseExtended};
@@ -177,7 +177,7 @@ impl ApiSeriesRoutes for ApiRouter<AppState> {
headers: HeaderMap,
addr: Extension<SocketAddr>,
state: State<AppState>,
Path(path): Path<SeriesWithIndex>,
Path(path): Path<SeriesNameWithIndex>,
Query(range): Query<DataRangeFormat>|
-> Response {
data::handler(
@@ -211,7 +211,7 @@ impl ApiSeriesRoutes for ApiRouter<AppState> {
headers: HeaderMap,
addr: Extension<SocketAddr>,
state: State<AppState>,
Path(path): Path<SeriesWithIndex>,
Path(path): Path<SeriesNameWithIndex>,
Query(range): Query<DataRangeFormat>|
-> Response {
data::raw_handler(
@@ -244,7 +244,7 @@ impl ApiSeriesRoutes for ApiRouter<AppState> {
async |uri: Uri,
headers: HeaderMap,
State(state): State<AppState>,
Path(path): Path<SeriesWithIndex>| {
Path(path): Path<SeriesNameWithIndex>| {
state
.cached_json(&headers, CacheStrategy::Height, &uri, move |q| {
q.latest(&path.series, path.index)
@@ -268,7 +268,7 @@ impl ApiSeriesRoutes for ApiRouter<AppState> {
async |uri: Uri,
headers: HeaderMap,
State(state): State<AppState>,
Path(path): Path<SeriesWithIndex>| {
Path(path): Path<SeriesNameWithIndex>| {
state
.cached_json(&headers, CacheStrategy::Height, &uri, move |q| {
q.len(&path.series, path.index)
@@ -290,7 +290,7 @@ impl ApiSeriesRoutes for ApiRouter<AppState> {
async |uri: Uri,
headers: HeaderMap,
State(state): State<AppState>,
Path(path): Path<SeriesWithIndex>| {
Path(path): Path<SeriesNameWithIndex>| {
state
.cached_json(&headers, CacheStrategy::Height, &uri, move |q| {
q.version(&path.series, path.index)
+52 -52
View File
@@ -24,13 +24,8 @@ mod blk_metadata;
mod blk_position;
mod block;
mod block_count_param;
mod block_fees_entry;
mod block_fee_rates_entry;
mod blockhash;
mod blockhash_param;
mod blockhash_prefix;
mod blockhash_start_index;
mod blockhash_tx_index;
mod block_fees_entry;
mod block_info;
mod block_rewards_entry;
mod block_size_entry;
@@ -38,6 +33,11 @@ mod block_sizes_weights;
mod block_status;
mod block_timestamp;
mod block_weight_entry;
mod blockhash;
mod blockhash_param;
mod blockhash_prefix;
mod blockhash_start_index;
mod blockhash_tx_index;
mod bytes;
mod cents;
mod cents_compact;
@@ -82,24 +82,13 @@ mod hour1;
mod hour12;
mod hour4;
mod index;
mod indexes;
mod index_info;
mod indexes;
mod limit;
mod limit_param;
mod mempool_block;
mod mempool_entry_info;
mod mempool_info;
mod series;
mod series_count;
mod series_data;
mod series_info;
mod series_output;
mod series_param;
mod series_list;
mod series_selection;
mod series_selection_legacy;
mod series_paginated;
mod series_with_index;
mod minute10;
mod minute30;
mod month1;
@@ -135,21 +124,32 @@ mod percentile;
mod pool;
mod pool_detail;
mod pool_info;
mod pools;
mod pool_slug;
mod pool_slug_param;
mod pools_summary;
mod pool_stats;
mod pools;
mod pools_summary;
mod port;
mod range_map;
mod range_index;
mod range_map;
mod raw_locktime;
mod recommended_fees;
mod reward_stats;
mod sats;
mod sats_signed;
mod sats_fract;
mod sats_signed;
mod search_query;
mod series_count;
mod series_data;
mod series_info;
mod series_list;
mod series_name;
mod series_name_with_index;
mod series_output;
mod series_paginated;
mod series_param;
mod series_selection;
mod series_selection_legacy;
mod stored_bool;
mod stored_f32;
mod stored_f64;
@@ -170,19 +170,19 @@ mod timestamp;
mod timestamp_param;
mod tree_node;
mod tx;
mod tx_index;
mod tx_status;
mod tx_version;
mod tx_with_hex;
mod txid;
mod txid_param;
mod txid_prefix;
mod txid_vout;
mod txin;
mod tx_index;
mod txin_index;
mod txout;
mod txout_index;
mod txout_spend;
mod tx_status;
mod tx_version;
mod tx_with_hex;
mod type_index;
mod unit;
mod unknown_output_index;
@@ -219,13 +219,8 @@ pub use blk_metadata::*;
pub use blk_position::*;
pub use block::*;
pub use block_count_param::*;
pub use block_fees_entry::*;
pub use block_fee_rates_entry::*;
pub use blockhash::*;
pub use blockhash_param::*;
pub use blockhash_prefix::*;
pub use blockhash_start_index::*;
pub use blockhash_tx_index::*;
pub use block_fees_entry::*;
pub use block_info::*;
pub use block_rewards_entry::*;
pub use block_size_entry::*;
@@ -233,6 +228,11 @@ pub use block_sizes_weights::*;
pub use block_status::*;
pub use block_timestamp::*;
pub use block_weight_entry::*;
pub use blockhash::*;
pub use blockhash_param::*;
pub use blockhash_prefix::*;
pub use blockhash_start_index::*;
pub use blockhash_tx_index::*;
pub use bytes::*;
pub use cents::*;
pub use cents_compact::*;
@@ -277,24 +277,13 @@ pub use hour1::*;
pub use hour4::*;
pub use hour12::*;
pub use index::*;
pub use indexes::*;
pub use index_info::*;
pub use indexes::*;
pub use limit::*;
pub use limit_param::*;
pub use mempool_block::*;
pub use mempool_entry_info::*;
pub use mempool_info::*;
pub use series::*;
pub use series_count::*;
pub use series_data::*;
pub use series_info::*;
pub use series_output::*;
pub use series_param::*;
pub use series_list::*;
pub use series_selection::*;
pub use series_selection_legacy::*;
pub use series_paginated::*;
pub use series_with_index::*;
pub use minute10::*;
pub use minute30::*;
pub use month1::*;
@@ -330,21 +319,32 @@ pub use percentile::*;
pub use pool::*;
pub use pool_detail::*;
pub use pool_info::*;
pub use pools::*;
pub use pool_slug::*;
pub use pool_slug_param::*;
pub use pools_summary::*;
pub use pool_stats::*;
pub use pools::*;
pub use pools_summary::*;
pub use port::*;
pub use range_map::*;
pub use range_index::*;
pub use range_map::*;
pub use raw_locktime::*;
pub use recommended_fees::*;
pub use reward_stats::*;
pub use sats::*;
pub use sats_signed::*;
pub use sats_fract::*;
pub use sats_signed::*;
pub use search_query::*;
pub use series_count::*;
pub use series_data::*;
pub use series_info::*;
pub use series_list::*;
pub use series_name::*;
pub use series_name_with_index::*;
pub use series_output::*;
pub use series_paginated::*;
pub use series_param::*;
pub use series_selection::*;
pub use series_selection_legacy::*;
pub use stored_bool::*;
pub use stored_f32::*;
pub use stored_f64::*;
@@ -365,19 +365,19 @@ pub use timestamp::*;
pub use timestamp_param::*;
pub use tree_node::*;
pub use tx::*;
pub use tx_index::*;
pub use tx_status::*;
pub use tx_version::*;
pub use tx_with_hex::*;
pub use txid::*;
pub use txid_param::*;
pub use txid_prefix::*;
pub use txid_vout::*;
pub use txin::*;
pub use tx_index::*;
pub use txin_index::*;
pub use txout::*;
pub use txout_index::*;
pub use txout_spend::*;
pub use tx_status::*;
pub use tx_version::*;
pub use tx_with_hex::*;
pub use type_index::*;
pub use unit::*;
pub use unknown_output_index::*;
+2 -2
View File
@@ -1,12 +1,12 @@
use schemars::JsonSchema;
use serde::Deserialize;
use crate::{Limit, Series};
use crate::{Limit, SeriesName};
#[derive(Debug, Deserialize, JsonSchema)]
pub struct SearchQuery {
/// Search query string
pub q: Series,
pub q: SeriesName,
/// Maximum number of results
#[serde(default)]
pub limit: Limit,
+8 -8
View File
@@ -4,7 +4,7 @@ use derive_more::Deref;
use schemars::JsonSchema;
use serde::Deserialize;
use super::Series;
use super::SeriesName;
/// Comma-separated list of series names
#[derive(Debug, Deref, JsonSchema)]
@@ -15,14 +15,14 @@ use super::Series;
example = &"price_close,market_cap",
example = &"realized_price,market_cap,mvrv"
)]
pub struct SeriesList(Vec<Series>);
pub struct SeriesList(Vec<SeriesName>);
const MAX_VECS: usize = 32;
const MAX_STRING_SIZE: usize = 64 * MAX_VECS;
impl From<Series> for SeriesList {
impl From<SeriesName> for SeriesList {
#[inline]
fn from(series: Series) -> Self {
fn from(series: SeriesName) -> Self {
Self(vec![series])
}
}
@@ -30,7 +30,7 @@ impl From<Series> for SeriesList {
impl From<String> for SeriesList {
#[inline]
fn from(value: String) -> Self {
Self::from(Series::from(value.replace("-", "_").to_lowercase()))
Self::from(SeriesName::from(value.replace("-", "_").to_lowercase()))
}
}
@@ -40,7 +40,7 @@ impl<'a> From<Vec<&'a str>> for SeriesList {
Self(
value
.iter()
.map(|s| Series::from(s.replace("-", "_").to_lowercase()))
.map(|s| SeriesName::from(s.replace("-", "_").to_lowercase()))
.collect::<Vec<_>>(),
)
}
@@ -58,7 +58,7 @@ impl<'de> Deserialize<'de> for SeriesList {
Ok(Self(
sanitize(str.split(",").map(|s| s.to_string()))
.into_iter()
.map(Series::from)
.map(SeriesName::from)
.collect(),
))
} else {
@@ -69,7 +69,7 @@ impl<'de> Deserialize<'de> for SeriesList {
Ok(Self(
sanitize(vec.iter().filter_map(|s| s.as_str().map(String::from)))
.into_iter()
.map(Series::from)
.map(SeriesName::from)
.collect(),
))
} else {
@@ -13,23 +13,23 @@ use serde::{Deserialize, Serialize};
example = &"market_cap",
example = &"realized_price"
)]
pub struct Series(String);
pub struct SeriesName(String);
impl From<String> for Series {
impl From<String> for SeriesName {
#[inline]
fn from(series: String) -> Self {
Self(series)
}
}
impl From<&str> for Series {
impl From<&str> for SeriesName {
#[inline]
fn from(series: &str) -> Self {
Self(series.to_owned())
}
}
impl Display for Series {
impl Display for SeriesName {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.0)
}
@@ -1,19 +1,19 @@
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::{Index, Series};
use crate::{Index, SeriesName};
#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema)]
pub struct SeriesWithIndex {
pub struct SeriesNameWithIndex {
/// Series name
pub series: Series,
pub series: SeriesName,
/// Aggregation index
pub index: Index,
}
impl SeriesWithIndex {
pub fn new(series: impl Into<Series>, index: Index) -> Self {
impl SeriesNameWithIndex {
pub fn new(series: impl Into<SeriesName>, index: Index) -> Self {
Self {
series: series.into(),
index,
@@ -21,13 +21,13 @@ impl SeriesWithIndex {
}
}
impl From<(Series, Index)> for SeriesWithIndex {
fn from((series, index): (Series, Index)) -> Self {
impl From<(SeriesName, Index)> for SeriesNameWithIndex {
fn from((series, index): (SeriesName, Index)) -> Self {
Self { series, index }
}
}
impl From<(&str, Index)> for SeriesWithIndex {
impl From<(&str, Index)> for SeriesNameWithIndex {
fn from((series, index): (&str, Index)) -> Self {
Self {
series: series.into(),
+2 -2
View File
@@ -1,9 +1,9 @@
use schemars::JsonSchema;
use serde::Deserialize;
use crate::Series;
use crate::SeriesName;
#[derive(Deserialize, JsonSchema)]
pub struct SeriesParam {
pub series: Series,
pub series: SeriesName,
}
+3 -3
View File
@@ -2,7 +2,7 @@ use derive_more::Deref;
use schemars::JsonSchema;
use serde::Deserialize;
use crate::{DataRangeFormat, Index, Series, SeriesList};
use crate::{DataRangeFormat, Index, SeriesName, SeriesList};
/// Selection of series to query
#[derive(Debug, Deref, Deserialize, JsonSchema)]
@@ -20,9 +20,9 @@ pub struct SeriesSelection {
pub range: DataRangeFormat,
}
impl From<(Index, Series, DataRangeFormat)> for SeriesSelection {
impl From<(Index, SeriesName, DataRangeFormat)> for SeriesSelection {
#[inline]
fn from((index, series, range): (Index, Series, DataRangeFormat)) -> Self {
fn from((index, series, range): (Index, SeriesName, DataRangeFormat)) -> Self {
Self {
index,
series: SeriesList::from(series),
+65 -65
View File
@@ -449,13 +449,13 @@
* Legacy path parameter for `/api/metric/{metric}`
*
* @typedef {Object} LegacySeriesParam
* @property {Series} metric
* @property {SeriesName} metric
*/
/**
* Legacy path parameters for `/api/metric/{metric}/{index}`
*
* @typedef {Object} LegacySeriesWithIndex
* @property {Series} metric
* @property {SeriesName} metric
* @property {Index} index
*/
/**
@@ -692,14 +692,9 @@
*/
/**
* @typedef {Object} SearchQuery
* @property {Series} q - Search query string
* @property {SeriesName} q - Search query string
* @property {Limit=} limit - Maximum number of results
*/
/**
* Series name
*
* @typedef {string} Series
*/
/**
* Series count statistics - distinct series and total series-index combinations
*
@@ -730,9 +725,19 @@
*
* @typedef {string} SeriesList
*/
/**
* Series name
*
* @typedef {string} SeriesName
*/
/**
* @typedef {Object} SeriesNameWithIndex
* @property {SeriesName} series - Series name
* @property {Index} index - Aggregation index
*/
/**
* @typedef {Object} SeriesParam
* @property {Series} series
* @property {SeriesName} series
*/
/**
* Selection of series to query
@@ -756,11 +761,6 @@
* @property {(Limit|null)=} limit - Maximum number of values to return (ignored if `end` is set). Aliases: `count`, `c`, `l`
* @property {Format=} format - Format of the output
*/
/**
* @typedef {Object} SeriesWithIndex
* @property {Series} series - Series name
* @property {Index} index - Aggregation index
*/
/** @typedef {boolean} StoredBool */
/**
* Stored 32-bit floating point value
@@ -1170,7 +1170,7 @@ function _wrapSeriesData(raw) {
/**
* @template T
* @typedef {Object} SeriesEndpointBuilder
* @typedef {Object} SeriesEndpoint
* @property {(index: number) => SingleItemBuilder<T>} get - Get single item at index
* @property {(start?: number, end?: number) => RangeBuilder<T>} slice - Slice by index
* @property {(n: number) => RangeBuilder<T>} first - Get first n items
@@ -1184,7 +1184,7 @@ function _wrapSeriesData(raw) {
/**
* @template T
* @typedef {Object} DateSeriesEndpointBuilder
* @typedef {Object} DateSeriesEndpoint
* @property {(index: number | globalThis.Date) => DateSingleItemBuilder<T>} get - Get single item at index or Date
* @property {(start?: number | globalThis.Date, end?: number | globalThis.Date) => DateRangeBuilder<T>} slice - Slice by index or Date
* @property {(n: number) => DateRangeBuilder<T>} first - Get first n items
@@ -1196,7 +1196,7 @@ function _wrapSeriesData(raw) {
* @property {string} path - The endpoint path
*/
/** @typedef {SeriesEndpointBuilder<any>} AnySeriesEndpointBuilder */
/** @typedef {SeriesEndpoint<any>} AnySeriesEndpoint */
/** @template T @typedef {Object} SingleItemBuilder
* @property {(onUpdate?: (value: SeriesData<T>) => void) => Promise<SeriesData<T>>} fetch - Fetch the item
@@ -1240,9 +1240,9 @@ function _wrapSeriesData(raw) {
* @template T
* @typedef {Object} SeriesPattern
* @property {string} name - The series name
* @property {Readonly<Partial<Record<Index, SeriesEndpointBuilder<T>>>>} by - Index endpoints as lazy getters
* @property {Readonly<Partial<Record<Index, SeriesEndpoint<T>>>>} by - Index endpoints as lazy getters
* @property {() => readonly Index[]} indexes - Get the list of available indexes
* @property {(index: Index) => SeriesEndpointBuilder<T>|undefined} get - Get an endpoint for a specific index
* @property {(index: Index) => SeriesEndpoint<T>|undefined} get - Get an endpoint for a specific index
*/
/** @typedef {SeriesPattern<any>} AnySeriesPattern */
@@ -1253,7 +1253,7 @@ function _wrapSeriesData(raw) {
* @param {BrkClientBase} client
* @param {string} name - The series vec name
* @param {Index} index - The index name
* @returns {DateSeriesEndpointBuilder<T>}
* @returns {DateSeriesEndpoint<T>}
*/
function _endpoint(client, name, index) {
const p = `/api/series/${name}/${index}`;
@@ -1305,7 +1305,7 @@ function _endpoint(client, name, index) {
then(resolve, reject) { return this.fetch().then(resolve, reject); },
});
/** @type {DateSeriesEndpointBuilder<T>} */
/** @type {DateSeriesEndpoint<T>} */
const endpoint = {
get(idx) { if (idx instanceof Date) idx = dateToIndex(index, idx); return singleItemBuilder(idx); },
slice(start, end) {
@@ -1511,114 +1511,114 @@ function _mp(client, name, indexes) {
by,
/** @returns {readonly Index[]} */
indexes() { return indexes; },
/** @param {Index} index @returns {SeriesEndpointBuilder<T>|undefined} */
/** @param {Index} index @returns {SeriesEndpoint<T>|undefined} */
get(index) { return indexes.includes(index) ? _endpoint(client, name, index) : undefined; }
};
}
/** @template T @typedef {{ name: string, by: { readonly minute10: DateSeriesEndpointBuilder<T>, readonly minute30: DateSeriesEndpointBuilder<T>, readonly hour1: DateSeriesEndpointBuilder<T>, readonly hour4: DateSeriesEndpointBuilder<T>, readonly hour12: DateSeriesEndpointBuilder<T>, readonly day1: DateSeriesEndpointBuilder<T>, readonly day3: DateSeriesEndpointBuilder<T>, readonly week1: DateSeriesEndpointBuilder<T>, readonly month1: DateSeriesEndpointBuilder<T>, readonly month3: DateSeriesEndpointBuilder<T>, readonly month6: DateSeriesEndpointBuilder<T>, readonly year1: DateSeriesEndpointBuilder<T>, readonly year10: DateSeriesEndpointBuilder<T>, readonly halving: SeriesEndpointBuilder<T>, readonly epoch: SeriesEndpointBuilder<T>, readonly height: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern1 */
/** @template T @typedef {{ name: string, by: { readonly minute10: DateSeriesEndpoint<T>, readonly minute30: DateSeriesEndpoint<T>, readonly hour1: DateSeriesEndpoint<T>, readonly hour4: DateSeriesEndpoint<T>, readonly hour12: DateSeriesEndpoint<T>, readonly day1: DateSeriesEndpoint<T>, readonly day3: DateSeriesEndpoint<T>, readonly week1: DateSeriesEndpoint<T>, readonly month1: DateSeriesEndpoint<T>, readonly month3: DateSeriesEndpoint<T>, readonly month6: DateSeriesEndpoint<T>, readonly year1: DateSeriesEndpoint<T>, readonly year10: DateSeriesEndpoint<T>, readonly halving: SeriesEndpoint<T>, readonly epoch: SeriesEndpoint<T>, readonly height: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern1 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern1<T>} */
function createSeriesPattern1(client, name) { return /** @type {SeriesPattern1<T>} */ (_mp(client, name, _i1)); }
/** @template T @typedef {{ name: string, by: { readonly minute10: DateSeriesEndpointBuilder<T>, readonly minute30: DateSeriesEndpointBuilder<T>, readonly hour1: DateSeriesEndpointBuilder<T>, readonly hour4: DateSeriesEndpointBuilder<T>, readonly hour12: DateSeriesEndpointBuilder<T>, readonly day1: DateSeriesEndpointBuilder<T>, readonly day3: DateSeriesEndpointBuilder<T>, readonly week1: DateSeriesEndpointBuilder<T>, readonly month1: DateSeriesEndpointBuilder<T>, readonly month3: DateSeriesEndpointBuilder<T>, readonly month6: DateSeriesEndpointBuilder<T>, readonly year1: DateSeriesEndpointBuilder<T>, readonly year10: DateSeriesEndpointBuilder<T>, readonly halving: SeriesEndpointBuilder<T>, readonly epoch: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern2 */
/** @template T @typedef {{ name: string, by: { readonly minute10: DateSeriesEndpoint<T>, readonly minute30: DateSeriesEndpoint<T>, readonly hour1: DateSeriesEndpoint<T>, readonly hour4: DateSeriesEndpoint<T>, readonly hour12: DateSeriesEndpoint<T>, readonly day1: DateSeriesEndpoint<T>, readonly day3: DateSeriesEndpoint<T>, readonly week1: DateSeriesEndpoint<T>, readonly month1: DateSeriesEndpoint<T>, readonly month3: DateSeriesEndpoint<T>, readonly month6: DateSeriesEndpoint<T>, readonly year1: DateSeriesEndpoint<T>, readonly year10: DateSeriesEndpoint<T>, readonly halving: SeriesEndpoint<T>, readonly epoch: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern2 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern2<T>} */
function createSeriesPattern2(client, name) { return /** @type {SeriesPattern2<T>} */ (_mp(client, name, _i2)); }
/** @template T @typedef {{ name: string, by: { readonly minute10: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern3 */
/** @template T @typedef {{ name: string, by: { readonly minute10: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern3 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern3<T>} */
function createSeriesPattern3(client, name) { return /** @type {SeriesPattern3<T>} */ (_mp(client, name, _i3)); }
/** @template T @typedef {{ name: string, by: { readonly minute30: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern4 */
/** @template T @typedef {{ name: string, by: { readonly minute30: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern4 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern4<T>} */
function createSeriesPattern4(client, name) { return /** @type {SeriesPattern4<T>} */ (_mp(client, name, _i4)); }
/** @template T @typedef {{ name: string, by: { readonly hour1: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern5 */
/** @template T @typedef {{ name: string, by: { readonly hour1: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern5 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern5<T>} */
function createSeriesPattern5(client, name) { return /** @type {SeriesPattern5<T>} */ (_mp(client, name, _i5)); }
/** @template T @typedef {{ name: string, by: { readonly hour4: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern6 */
/** @template T @typedef {{ name: string, by: { readonly hour4: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern6 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern6<T>} */
function createSeriesPattern6(client, name) { return /** @type {SeriesPattern6<T>} */ (_mp(client, name, _i6)); }
/** @template T @typedef {{ name: string, by: { readonly hour12: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern7 */
/** @template T @typedef {{ name: string, by: { readonly hour12: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern7 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern7<T>} */
function createSeriesPattern7(client, name) { return /** @type {SeriesPattern7<T>} */ (_mp(client, name, _i7)); }
/** @template T @typedef {{ name: string, by: { readonly day1: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern8 */
/** @template T @typedef {{ name: string, by: { readonly day1: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern8 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern8<T>} */
function createSeriesPattern8(client, name) { return /** @type {SeriesPattern8<T>} */ (_mp(client, name, _i8)); }
/** @template T @typedef {{ name: string, by: { readonly day3: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern9 */
/** @template T @typedef {{ name: string, by: { readonly day3: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern9 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern9<T>} */
function createSeriesPattern9(client, name) { return /** @type {SeriesPattern9<T>} */ (_mp(client, name, _i9)); }
/** @template T @typedef {{ name: string, by: { readonly week1: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern10 */
/** @template T @typedef {{ name: string, by: { readonly week1: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern10 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern10<T>} */
function createSeriesPattern10(client, name) { return /** @type {SeriesPattern10<T>} */ (_mp(client, name, _i10)); }
/** @template T @typedef {{ name: string, by: { readonly month1: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern11 */
/** @template T @typedef {{ name: string, by: { readonly month1: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern11 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern11<T>} */
function createSeriesPattern11(client, name) { return /** @type {SeriesPattern11<T>} */ (_mp(client, name, _i11)); }
/** @template T @typedef {{ name: string, by: { readonly month3: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern12 */
/** @template T @typedef {{ name: string, by: { readonly month3: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern12 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern12<T>} */
function createSeriesPattern12(client, name) { return /** @type {SeriesPattern12<T>} */ (_mp(client, name, _i12)); }
/** @template T @typedef {{ name: string, by: { readonly month6: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern13 */
/** @template T @typedef {{ name: string, by: { readonly month6: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern13 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern13<T>} */
function createSeriesPattern13(client, name) { return /** @type {SeriesPattern13<T>} */ (_mp(client, name, _i13)); }
/** @template T @typedef {{ name: string, by: { readonly year1: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern14 */
/** @template T @typedef {{ name: string, by: { readonly year1: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern14 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern14<T>} */
function createSeriesPattern14(client, name) { return /** @type {SeriesPattern14<T>} */ (_mp(client, name, _i14)); }
/** @template T @typedef {{ name: string, by: { readonly year10: DateSeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern15 */
/** @template T @typedef {{ name: string, by: { readonly year10: DateSeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern15 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern15<T>} */
function createSeriesPattern15(client, name) { return /** @type {SeriesPattern15<T>} */ (_mp(client, name, _i15)); }
/** @template T @typedef {{ name: string, by: { readonly halving: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern16 */
/** @template T @typedef {{ name: string, by: { readonly halving: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern16 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern16<T>} */
function createSeriesPattern16(client, name) { return /** @type {SeriesPattern16<T>} */ (_mp(client, name, _i16)); }
/** @template T @typedef {{ name: string, by: { readonly epoch: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern17 */
/** @template T @typedef {{ name: string, by: { readonly epoch: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern17 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern17<T>} */
function createSeriesPattern17(client, name) { return /** @type {SeriesPattern17<T>} */ (_mp(client, name, _i17)); }
/** @template T @typedef {{ name: string, by: { readonly height: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern18 */
/** @template T @typedef {{ name: string, by: { readonly height: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern18 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern18<T>} */
function createSeriesPattern18(client, name) { return /** @type {SeriesPattern18<T>} */ (_mp(client, name, _i18)); }
/** @template T @typedef {{ name: string, by: { readonly tx_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern19 */
/** @template T @typedef {{ name: string, by: { readonly tx_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern19 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern19<T>} */
function createSeriesPattern19(client, name) { return /** @type {SeriesPattern19<T>} */ (_mp(client, name, _i19)); }
/** @template T @typedef {{ name: string, by: { readonly txin_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern20 */
/** @template T @typedef {{ name: string, by: { readonly txin_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern20 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern20<T>} */
function createSeriesPattern20(client, name) { return /** @type {SeriesPattern20<T>} */ (_mp(client, name, _i20)); }
/** @template T @typedef {{ name: string, by: { readonly txout_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern21 */
/** @template T @typedef {{ name: string, by: { readonly txout_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern21 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern21<T>} */
function createSeriesPattern21(client, name) { return /** @type {SeriesPattern21<T>} */ (_mp(client, name, _i21)); }
/** @template T @typedef {{ name: string, by: { readonly empty_output_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern22 */
/** @template T @typedef {{ name: string, by: { readonly empty_output_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern22 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern22<T>} */
function createSeriesPattern22(client, name) { return /** @type {SeriesPattern22<T>} */ (_mp(client, name, _i22)); }
/** @template T @typedef {{ name: string, by: { readonly op_return_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern23 */
/** @template T @typedef {{ name: string, by: { readonly op_return_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern23 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern23<T>} */
function createSeriesPattern23(client, name) { return /** @type {SeriesPattern23<T>} */ (_mp(client, name, _i23)); }
/** @template T @typedef {{ name: string, by: { readonly p2a_address_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern24 */
/** @template T @typedef {{ name: string, by: { readonly p2a_address_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern24 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern24<T>} */
function createSeriesPattern24(client, name) { return /** @type {SeriesPattern24<T>} */ (_mp(client, name, _i24)); }
/** @template T @typedef {{ name: string, by: { readonly p2ms_output_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern25 */
/** @template T @typedef {{ name: string, by: { readonly p2ms_output_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern25 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern25<T>} */
function createSeriesPattern25(client, name) { return /** @type {SeriesPattern25<T>} */ (_mp(client, name, _i25)); }
/** @template T @typedef {{ name: string, by: { readonly p2pk33_address_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern26 */
/** @template T @typedef {{ name: string, by: { readonly p2pk33_address_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern26 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern26<T>} */
function createSeriesPattern26(client, name) { return /** @type {SeriesPattern26<T>} */ (_mp(client, name, _i26)); }
/** @template T @typedef {{ name: string, by: { readonly p2pk65_address_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern27 */
/** @template T @typedef {{ name: string, by: { readonly p2pk65_address_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern27 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern27<T>} */
function createSeriesPattern27(client, name) { return /** @type {SeriesPattern27<T>} */ (_mp(client, name, _i27)); }
/** @template T @typedef {{ name: string, by: { readonly p2pkh_address_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern28 */
/** @template T @typedef {{ name: string, by: { readonly p2pkh_address_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern28 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern28<T>} */
function createSeriesPattern28(client, name) { return /** @type {SeriesPattern28<T>} */ (_mp(client, name, _i28)); }
/** @template T @typedef {{ name: string, by: { readonly p2sh_address_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern29 */
/** @template T @typedef {{ name: string, by: { readonly p2sh_address_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern29 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern29<T>} */
function createSeriesPattern29(client, name) { return /** @type {SeriesPattern29<T>} */ (_mp(client, name, _i29)); }
/** @template T @typedef {{ name: string, by: { readonly p2tr_address_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern30 */
/** @template T @typedef {{ name: string, by: { readonly p2tr_address_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern30 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern30<T>} */
function createSeriesPattern30(client, name) { return /** @type {SeriesPattern30<T>} */ (_mp(client, name, _i30)); }
/** @template T @typedef {{ name: string, by: { readonly p2wpkh_address_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern31 */
/** @template T @typedef {{ name: string, by: { readonly p2wpkh_address_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern31 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern31<T>} */
function createSeriesPattern31(client, name) { return /** @type {SeriesPattern31<T>} */ (_mp(client, name, _i31)); }
/** @template T @typedef {{ name: string, by: { readonly p2wsh_address_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern32 */
/** @template T @typedef {{ name: string, by: { readonly p2wsh_address_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern32 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern32<T>} */
function createSeriesPattern32(client, name) { return /** @type {SeriesPattern32<T>} */ (_mp(client, name, _i32)); }
/** @template T @typedef {{ name: string, by: { readonly unknown_output_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern33 */
/** @template T @typedef {{ name: string, by: { readonly unknown_output_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern33 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern33<T>} */
function createSeriesPattern33(client, name) { return /** @type {SeriesPattern33<T>} */ (_mp(client, name, _i33)); }
/** @template T @typedef {{ name: string, by: { readonly funded_address_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern34 */
/** @template T @typedef {{ name: string, by: { readonly funded_address_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern34 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern34<T>} */
function createSeriesPattern34(client, name) { return /** @type {SeriesPattern34<T>} */ (_mp(client, name, _i34)); }
/** @template T @typedef {{ name: string, by: { readonly empty_address_index: SeriesEndpointBuilder<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpointBuilder<T>|undefined }} SeriesPattern35 */
/** @template T @typedef {{ name: string, by: { readonly empty_address_index: SeriesEndpoint<T> }, indexes: () => readonly Index[], get: (index: Index) => SeriesEndpoint<T>|undefined }} SeriesPattern35 */
/** @template T @param {BrkClientBase} client @param {string} name @returns {SeriesPattern35<T>} */
function createSeriesPattern35(client, name) { return /** @type {SeriesPattern35<T>} */ (_mp(client, name, _i35)); }
@@ -9250,7 +9250,7 @@ class BrkClient extends BrkClientBase {
*
* @param {string} series - The series name
* @param {Index} index - The index name
* @returns {SeriesEndpointBuilder<unknown>}
* @returns {SeriesEndpoint<unknown>}
*/
seriesEndpoint(series, index) {
return _endpoint(this, series, index);
@@ -9688,7 +9688,7 @@ class BrkClient extends BrkClientBase {
*
* Endpoint: `GET /api/series/search`
*
* @param {Series} [q] - Search query string
* @param {SeriesName} [q] - Search query string
* @param {Limit=} [limit] - Maximum number of results
* @returns {Promise<string[]>}
*/
@@ -9708,7 +9708,7 @@ class BrkClient extends BrkClientBase {
*
* Endpoint: `GET /api/series/{series}`
*
* @param {Series} series
* @param {SeriesName} series
* @returns {Promise<SeriesInfo>}
*/
async getSeriesInfo(series) {
@@ -9722,7 +9722,7 @@ class BrkClient extends BrkClientBase {
*
* Endpoint: `GET /api/series/{series}/{index}`
*
* @param {Series} series - Series name
* @param {SeriesName} series - Series name
* @param {Index} index - Aggregation index
* @param {RangeIndex=} [start] - Inclusive start: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `from`, `f`, `s`
* @param {RangeIndex=} [end] - Exclusive end: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `to`, `t`, `e`
@@ -9751,7 +9751,7 @@ class BrkClient extends BrkClientBase {
*
* Endpoint: `GET /api/series/{series}/{index}/data`
*
* @param {Series} series - Series name
* @param {SeriesName} series - Series name
* @param {Index} index - Aggregation index
* @param {RangeIndex=} [start] - Inclusive start: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `from`, `f`, `s`
* @param {RangeIndex=} [end] - Exclusive end: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `to`, `t`, `e`
@@ -9780,7 +9780,7 @@ class BrkClient extends BrkClientBase {
*
* Endpoint: `GET /api/series/{series}/{index}/latest`
*
* @param {Series} series - Series name
* @param {SeriesName} series - Series name
* @param {Index} index - Aggregation index
* @returns {Promise<*>}
*/
@@ -9795,7 +9795,7 @@ class BrkClient extends BrkClientBase {
*
* Endpoint: `GET /api/series/{series}/{index}/len`
*
* @param {Series} series - Series name
* @param {SeriesName} series - Series name
* @param {Index} index - Aggregation index
* @returns {Promise<number>}
*/
@@ -9810,7 +9810,7 @@ class BrkClient extends BrkClientBase {
*
* Endpoint: `GET /api/series/{series}/{index}/version`
*
* @param {Series} series - Series name
* @param {SeriesName} series - Series name
* @param {Index} index - Aggregation index
* @returns {Promise<Version>}
*/
+2 -2
View File
@@ -5,7 +5,7 @@
import { BrkClient } from "../index.js";
/**
* @typedef {import('../index.js').AnyMetricPattern} AnyMetricPattern
* @typedef {import('../index.js').AnySeriesPattern} AnyMetricPattern
*/
/**
@@ -59,7 +59,7 @@ async function testAllEndpoints() {
timeout: 15000,
});
const metrics = getAllMetrics(client.metrics);
const metrics = getAllMetrics(client.series);
console.log(`\nFound ${metrics.length} metrics`);
let success = 0;
+131 -131
View File
@@ -105,7 +105,7 @@ Hour1 = int
Hour12 = int
Hour4 = int
# Series name
Series = str
SeriesName = str
# Lowest price value for a time period
Low = Dollars
# Virtual size in vbytes (weight / 4, rounded up)
@@ -658,13 +658,13 @@ class LegacySeriesParam(TypedDict):
"""
Legacy path parameter for `/api/metric/{metric}`
"""
metric: Series
metric: SeriesName
class LegacySeriesWithIndex(TypedDict):
"""
Legacy path parameters for `/api/metric/{metric}/{index}`
"""
metric: Series
metric: SeriesName
index: Index
class MempoolBlock(TypedDict):
@@ -907,7 +907,7 @@ class SearchQuery(TypedDict):
q: Search query string
limit: Maximum number of results
"""
q: Series
q: SeriesName
limit: Limit
class SeriesInfo(TypedDict):
@@ -921,8 +921,17 @@ class SeriesInfo(TypedDict):
indexes: List[Index]
type: str
class SeriesNameWithIndex(TypedDict):
"""
Attributes:
series: Series name
index: Aggregation index
"""
series: SeriesName
index: Index
class SeriesParam(TypedDict):
series: Series
series: SeriesName
class SeriesSelection(TypedDict):
"""
@@ -960,15 +969,6 @@ class SeriesSelectionLegacy(TypedDict):
limit: Union[Limit, None]
format: Format
class SeriesWithIndex(TypedDict):
"""
Attributes:
series: Series name
index: Aggregation index
"""
series: Series
index: Index
class SupplyState(TypedDict):
"""
Current supply state tracking UTXO count and total value
@@ -1519,7 +1519,7 @@ class DateSkippedBuilder(SkippedBuilder[T]):
return self._config.get_date_series()
class SeriesEndpointBuilder(Generic[T]):
class SeriesEndpoint(Generic[T]):
"""Builder for series endpoint queries with int-based indexing.
Examples:
@@ -1569,7 +1569,7 @@ class SeriesEndpointBuilder(Generic[T]):
return self._config.path()
class DateSeriesEndpointBuilder(Generic[T]):
class DateSeriesEndpoint(Generic[T]):
"""Builder for series endpoint queries with date-based indexing.
Accepts dates in __getitem__ and returns DateSeriesData from fetch().
@@ -1633,8 +1633,8 @@ class DateSeriesEndpointBuilder(Generic[T]):
# Type aliases for non-generic usage
AnySeriesEndpointBuilder = SeriesEndpointBuilder[Any]
AnyDateSeriesEndpointBuilder = DateSeriesEndpointBuilder[Any]
AnySeriesEndpoint = SeriesEndpoint[Any]
AnyDateSeriesEndpoint = DateSeriesEndpoint[Any]
class SeriesPattern(Protocol[T]):
@@ -1649,7 +1649,7 @@ class SeriesPattern(Protocol[T]):
"""Get the list of available indexes for this series."""
...
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]:
def get(self, index: Index) -> Optional[SeriesEndpoint[T]]:
"""Get an endpoint builder for a specific index, if supported."""
...
@@ -1691,32 +1691,32 @@ _i33 = ('unknown_output_index',)
_i34 = ('funded_address_index',)
_i35 = ('empty_address_index',)
def _ep(c: BrkClientBase, n: str, i: Index) -> SeriesEndpointBuilder[Any]:
return SeriesEndpointBuilder(c, n, i)
def _ep(c: BrkClientBase, n: str, i: Index) -> SeriesEndpoint[Any]:
return SeriesEndpoint(c, n, i)
def _dep(c: BrkClientBase, n: str, i: Index) -> DateSeriesEndpointBuilder[Any]:
return DateSeriesEndpointBuilder(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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'minute10')
def minute30(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'minute30')
def hour1(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'hour1')
def hour4(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'hour4')
def hour12(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'hour12')
def day1(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'day1')
def day3(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'day3')
def week1(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'week1')
def month1(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'month1')
def month3(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'month3')
def month6(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'month6')
def year1(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'year1')
def year10(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'year10')
def halving(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'halving')
def epoch(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'epoch')
def height(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'height')
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]
@@ -1724,25 +1724,25 @@ class SeriesPattern1(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i1)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i1 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'minute10')
def minute30(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'minute30')
def hour1(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'hour1')
def hour4(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'hour4')
def hour12(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'hour12')
def day1(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'day1')
def day3(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'day3')
def week1(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'week1')
def month1(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'month1')
def month3(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'month3')
def month6(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'month6')
def year1(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'year1')
def year10(self) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'year10')
def halving(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'halving')
def epoch(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'epoch')
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]
@@ -1750,11 +1750,11 @@ class SeriesPattern2(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i2)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i2 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'minute10')
def minute10(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'minute10')
class SeriesPattern3(Generic[T]):
by: _SeriesPattern3By[T]
@@ -1762,11 +1762,11 @@ class SeriesPattern3(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i3)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i3 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'minute30')
def minute30(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'minute30')
class SeriesPattern4(Generic[T]):
by: _SeriesPattern4By[T]
@@ -1774,11 +1774,11 @@ class SeriesPattern4(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i4)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i4 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'hour1')
def hour1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour1')
class SeriesPattern5(Generic[T]):
by: _SeriesPattern5By[T]
@@ -1786,11 +1786,11 @@ class SeriesPattern5(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i5)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i5 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'hour4')
def hour4(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour4')
class SeriesPattern6(Generic[T]):
by: _SeriesPattern6By[T]
@@ -1798,11 +1798,11 @@ class SeriesPattern6(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i6)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i6 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'hour12')
def hour12(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'hour12')
class SeriesPattern7(Generic[T]):
by: _SeriesPattern7By[T]
@@ -1810,11 +1810,11 @@ class SeriesPattern7(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i7)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i7 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'day1')
def day1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'day1')
class SeriesPattern8(Generic[T]):
by: _SeriesPattern8By[T]
@@ -1822,11 +1822,11 @@ class SeriesPattern8(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i8)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i8 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'day3')
def day3(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'day3')
class SeriesPattern9(Generic[T]):
by: _SeriesPattern9By[T]
@@ -1834,11 +1834,11 @@ class SeriesPattern9(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i9)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i9 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'week1')
def week1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'week1')
class SeriesPattern10(Generic[T]):
by: _SeriesPattern10By[T]
@@ -1846,11 +1846,11 @@ class SeriesPattern10(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i10)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i10 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'month1')
def month1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month1')
class SeriesPattern11(Generic[T]):
by: _SeriesPattern11By[T]
@@ -1858,11 +1858,11 @@ class SeriesPattern11(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i11)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i11 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'month3')
def month3(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month3')
class SeriesPattern12(Generic[T]):
by: _SeriesPattern12By[T]
@@ -1870,11 +1870,11 @@ class SeriesPattern12(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i12)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i12 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'month6')
def month6(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'month6')
class SeriesPattern13(Generic[T]):
by: _SeriesPattern13By[T]
@@ -1882,11 +1882,11 @@ class SeriesPattern13(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i13)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i13 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'year1')
def year1(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'year1')
class SeriesPattern14(Generic[T]):
by: _SeriesPattern14By[T]
@@ -1894,11 +1894,11 @@ class SeriesPattern14(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i14)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i14 else None
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) -> DateSeriesEndpointBuilder[T]: return _dep(self._c, self._n, 'year10')
def year10(self) -> DateSeriesEndpoint[T]: return _dep(self._c, self._n, 'year10')
class SeriesPattern15(Generic[T]):
by: _SeriesPattern15By[T]
@@ -1906,11 +1906,11 @@ class SeriesPattern15(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i15)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i15 else None
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) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'halving')
def halving(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'halving')
class SeriesPattern16(Generic[T]):
by: _SeriesPattern16By[T]
@@ -1918,11 +1918,11 @@ class SeriesPattern16(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i16)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i16 else None
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) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'epoch')
def epoch(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'epoch')
class SeriesPattern17(Generic[T]):
by: _SeriesPattern17By[T]
@@ -1930,11 +1930,11 @@ class SeriesPattern17(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i17)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i17 else None
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) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'height')
def height(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'height')
class SeriesPattern18(Generic[T]):
by: _SeriesPattern18By[T]
@@ -1942,11 +1942,11 @@ class SeriesPattern18(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i18)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i18 else None
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) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'tx_index')
def tx_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'tx_index')
class SeriesPattern19(Generic[T]):
by: _SeriesPattern19By[T]
@@ -1954,11 +1954,11 @@ class SeriesPattern19(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i19)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i19 else None
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) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'txin_index')
def txin_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'txin_index')
class SeriesPattern20(Generic[T]):
by: _SeriesPattern20By[T]
@@ -1966,11 +1966,11 @@ class SeriesPattern20(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i20)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i20 else None
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) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'txout_index')
def txout_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'txout_index')
class SeriesPattern21(Generic[T]):
by: _SeriesPattern21By[T]
@@ -1978,11 +1978,11 @@ class SeriesPattern21(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i21)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i21 else None
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) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'empty_output_index')
def empty_output_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'empty_output_index')
class SeriesPattern22(Generic[T]):
by: _SeriesPattern22By[T]
@@ -1990,11 +1990,11 @@ class SeriesPattern22(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i22)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i22 else None
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) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'op_return_index')
def op_return_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'op_return_index')
class SeriesPattern23(Generic[T]):
by: _SeriesPattern23By[T]
@@ -2002,11 +2002,11 @@ class SeriesPattern23(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i23)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i23 else None
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_address_index(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'p2a_address_index')
def p2a_address_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2a_address_index')
class SeriesPattern24(Generic[T]):
by: _SeriesPattern24By[T]
@@ -2014,11 +2014,11 @@ class SeriesPattern24(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i24)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i24 else None
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) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'p2ms_output_index')
def p2ms_output_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2ms_output_index')
class SeriesPattern25(Generic[T]):
by: _SeriesPattern25By[T]
@@ -2026,11 +2026,11 @@ class SeriesPattern25(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i25)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i25 else None
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_address_index(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'p2pk33_address_index')
def p2pk33_address_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2pk33_address_index')
class SeriesPattern26(Generic[T]):
by: _SeriesPattern26By[T]
@@ -2038,11 +2038,11 @@ class SeriesPattern26(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i26)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i26 else None
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_address_index(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'p2pk65_address_index')
def p2pk65_address_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2pk65_address_index')
class SeriesPattern27(Generic[T]):
by: _SeriesPattern27By[T]
@@ -2050,11 +2050,11 @@ class SeriesPattern27(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i27)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i27 else None
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_address_index(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'p2pkh_address_index')
def p2pkh_address_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2pkh_address_index')
class SeriesPattern28(Generic[T]):
by: _SeriesPattern28By[T]
@@ -2062,11 +2062,11 @@ class SeriesPattern28(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i28)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i28 else None
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_address_index(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'p2sh_address_index')
def p2sh_address_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2sh_address_index')
class SeriesPattern29(Generic[T]):
by: _SeriesPattern29By[T]
@@ -2074,11 +2074,11 @@ class SeriesPattern29(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i29)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i29 else None
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_address_index(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'p2tr_address_index')
def p2tr_address_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2tr_address_index')
class SeriesPattern30(Generic[T]):
by: _SeriesPattern30By[T]
@@ -2086,11 +2086,11 @@ class SeriesPattern30(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i30)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i30 else None
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_address_index(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'p2wpkh_address_index')
def p2wpkh_address_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2wpkh_address_index')
class SeriesPattern31(Generic[T]):
by: _SeriesPattern31By[T]
@@ -2098,11 +2098,11 @@ class SeriesPattern31(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i31)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i31 else None
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_address_index(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'p2wsh_address_index')
def p2wsh_address_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'p2wsh_address_index')
class SeriesPattern32(Generic[T]):
by: _SeriesPattern32By[T]
@@ -2110,11 +2110,11 @@ class SeriesPattern32(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i32)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i32 else None
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) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'unknown_output_index')
def unknown_output_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'unknown_output_index')
class SeriesPattern33(Generic[T]):
by: _SeriesPattern33By[T]
@@ -2122,11 +2122,11 @@ class SeriesPattern33(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i33)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i33 else None
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_address_index(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'funded_address_index')
def funded_address_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'funded_address_index')
class SeriesPattern34(Generic[T]):
by: _SeriesPattern34By[T]
@@ -2134,11 +2134,11 @@ class SeriesPattern34(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i34)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i34 else None
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_address_index(self) -> SeriesEndpointBuilder[T]: return _ep(self._c, self._n, 'empty_address_index')
def empty_address_index(self) -> SeriesEndpoint[T]: return _ep(self._c, self._n, 'empty_address_index')
class SeriesPattern35(Generic[T]):
by: _SeriesPattern35By[T]
@@ -2146,7 +2146,7 @@ class SeriesPattern35(Generic[T]):
@property
def name(self) -> str: return self._n
def indexes(self) -> List[str]: return list(_i35)
def get(self, index: Index) -> Optional[SeriesEndpointBuilder[T]]: return _ep(self.by._c, self._n, index) if index in _i35 else None
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
@@ -6905,13 +6905,13 @@ class BrkClient(BrkClientBase):
super().__init__(base_url, timeout)
self.series = SeriesTree(self)
def series_endpoint(self, series: str, index: Index) -> SeriesEndpointBuilder[Any]:
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 SeriesEndpointBuilder(self, series, index)
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."""
@@ -7194,7 +7194,7 @@ class BrkClient(BrkClientBase):
path = f'/api/series/list{"?" + query if query else ""}'
return self.get_json(path)
def search_series(self, q: Series, limit: Optional[Limit] = None) -> List[str]:
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.
@@ -7207,7 +7207,7 @@ class BrkClient(BrkClientBase):
path = f'/api/series/search{"?" + query if query else ""}'
return self.get_json(path)
def get_series_info(self, series: Series) -> SeriesInfo:
def get_series_info(self, series: SeriesName) -> SeriesInfo:
"""Get series info.
Returns the supported indexes and value type for the specified series.
@@ -7215,7 +7215,7 @@ class BrkClient(BrkClientBase):
Endpoint: `GET /api/series/{series}`"""
return self.get_json(f'/api/series/{series}')
def get_series(self, series: Series, index: Index, start: Optional[RangeIndex] = None, end: Optional[RangeIndex] = None, limit: Optional[Limit] = None, format: Optional[Format] = None) -> Union[AnySeriesData, str]:
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).
@@ -7232,7 +7232,7 @@ class BrkClient(BrkClientBase):
return self.get_text(path)
return self.get_json(path)
def get_series_data(self, series: Series, index: Index, start: Optional[RangeIndex] = None, end: Optional[RangeIndex] = None, limit: Optional[Limit] = None, format: Optional[Format] = None) -> Union[List[bool], str]:
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.
@@ -7249,7 +7249,7 @@ class BrkClient(BrkClientBase):
return self.get_text(path)
return self.get_json(path)
def get_series_latest(self, series: Series, index: Index) -> Any:
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).
@@ -7257,7 +7257,7 @@ class BrkClient(BrkClientBase):
Endpoint: `GET /api/series/{series}/{index}/latest`"""
return self.get_json(f'/api/series/{series}/{index}/latest')
def get_series_len(self, series: Series, index: Index) -> float:
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.
@@ -7265,7 +7265,7 @@ class BrkClient(BrkClientBase):
Endpoint: `GET /api/series/{series}/{index}/len`"""
return self.get_json(f'/api/series/{series}/{index}/len')
def get_series_version(self, series: Series, index: Index) -> Version:
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.
+2 -2
View File
@@ -70,7 +70,7 @@
* @typedef {Brk.BaseCumulativeSumPattern4 | Brk.BaseCumulativeSumPattern<number> | Brk.BaseCumulativeRelPattern} AnyValuePatternType
* @typedef {Brk.AnySeriesPattern} AnySeriesPattern
* @typedef {Brk.CentsSatsUsdPattern} ActivePricePattern
* @typedef {Brk.AnySeriesEndpointBuilder} AnySeriesEndpoint
* @typedef {Brk.AnySeriesEndpoint} AnySeriesEndpoint
* @typedef {Brk.AnySeriesData} AnySeriesData
* @typedef {Brk.AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern3} AddrCountPattern
* Relative patterns by capability:
@@ -96,7 +96,7 @@
/**
* @template T
* @typedef {Brk.SeriesEndpointBuilder<T>} SeriesEndpoint
* @typedef {Brk.SeriesEndpoint<T>} SeriesEndpoint
*/
/**
* Stats pattern: average, min, max, percentiles (height-only indexes, NO base)