#pragma once
#include "ggml.h"
#include "weights.h"
#include <cstdint>
#include <vector>
struct ggml_context;
struct ggml_tensor;
struct ggml_cgraph;
namespace transcribe::granite_nar {
struct ProjectorBuild {
ggml_tensor * enc_in = nullptr; ggml_tensor * enc_pad = nullptr;
ggml_tensor * out = nullptr;
struct {
ggml_tensor * qformer_out = nullptr; ggml_tensor * proj_out = nullptr; } dumps;
ggml_cgraph * graph = nullptr;
int nblocks = 0;
int n_audio_tokens = 0;
int t_enc_pad = 0;
};
ProjectorBuild build_projector_graph(ggml_context * ctx,
const GraniteNarWeights & weights,
const GraniteNarHParams & hp,
int T_enc);
}