use brk_traversable::Traversable;
use vecdb::{Rw, StorageMode};

use crate::internal::PriceWithRatioPerBlock;

#[derive(Traversable)]
pub struct EmaVecs<M: StorageMode = Rw> {
    pub _1w: PriceWithRatioPerBlock<M>,
    pub _8d: PriceWithRatioPerBlock<M>,
    pub _12d: PriceWithRatioPerBlock<M>,
    pub _13d: PriceWithRatioPerBlock<M>,
    pub _21d: PriceWithRatioPerBlock<M>,
    pub _26d: PriceWithRatioPerBlock<M>,
    pub _1m: PriceWithRatioPerBlock<M>,
    pub _34d: PriceWithRatioPerBlock<M>,
    pub _55d: PriceWithRatioPerBlock<M>,
    pub _89d: PriceWithRatioPerBlock<M>,
    pub _144d: PriceWithRatioPerBlock<M>,
    pub _200d: PriceWithRatioPerBlock<M>,
    pub _1y: PriceWithRatioPerBlock<M>,
    pub _2y: PriceWithRatioPerBlock<M>,
    pub _200w: PriceWithRatioPerBlock<M>,
    pub _4y: PriceWithRatioPerBlock<M>,
}

#[derive(Traversable)]
pub struct Vecs<M: StorageMode = Rw> {
    pub sma: super::sma::SmaVecs,
    pub ema: EmaVecs<M>,
}
