stock-trek 0.5.4

Stock Trek time-series analysis
Documentation
use crate::{
    error::result::StockTrekResult,
    order::{
        order_intent::OrderIntent, order_pricing::OrderPricing, order_quantity::OrderQuantity,
        order_side::OrderSide, order_timing::OrderTiming,
    },
    resolved_context::ResolvedContext,
    resolvers::resolveable::Resolvable,
    scratch::key::TokenName,
    values::value::{NumberValue, TokenValue},
};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Hash, Serialize, Deserialize)]
pub struct SingleOrder<T, N> {
    pub base: T,
    pub quote: T,
    pub timing: OrderTiming<N>,
    pub pricing: OrderPricing<N>,
    pub intent: OrderIntent,
    pub side: OrderSide,
    pub quantity: OrderQuantity<N>,
}

impl Resolvable<SingleOrder<TokenName, f64>> for SingleOrder<TokenValue, NumberValue> {
    fn try_resolve(
        &self,
        context: &ResolvedContext,
    ) -> StockTrekResult<SingleOrder<TokenName, f64>> {
        Ok(SingleOrder {
            base: self.base.token(context)?,
            quote: self.quote.token(context)?,
            timing: self.timing.try_resolve(context)?,
            pricing: self.pricing.try_resolve(context)?,
            intent: self.intent.clone(),
            side: self.side.clone(),
            quantity: self.quantity.try_resolve(context)?,
        })
    }
}