from seq_interp.src.hardware.constraints import HardwareConstraints
import numpy as np


class SequenceGenerator:
    def __init__(self, hw: HardwareConstraints):
        self.hw = hw

    def generate_gre(self, params: dict) -> dict:
        """Генерация последовательности Gradient Echo."""
        t_grad = max(self.hw.MIN_BLOCK_DURATION, params.get("t_grad", 10e-3))

        # Заглушка для примера - должна быть заменена реальной генерацией
        dummy_grad = np.linspace(-self.hw.GRAD_MAX, self.hw.GRAD_MAX, 128)

        return {
            "gradients": {
                'gx': dummy_grad,
                'gy': np.zeros_like(dummy_grad),
                'gz': np.zeros_like(dummy_grad),
                't_gx': np.linspace(0, t_grad, 128),
                't_gy': np.array([0, t_grad]),
                't_gz': np.array([0])
            },
            "rf": np.zeros(128, dtype=np.complex64),
            "adc": np.zeros(64, dtype=np.float32)
        }