#pragma once
#include "ggml.h"
#include <cstdint>
#include <string>
#include <vector>
bool ggml_openvino_model_cache_only();
void ggml_openvino_model_cache_init();
struct ggml_openvino_source_mapping {
uintptr_t begin;
uintptr_t end;
uint64_t offset;
uint64_t identity;
};
uint64_t ggml_openvino_source_fingerprint(const void * data, size_t size, std::vector<ggml_openvino_source_mapping> & mappings);
uint64_t ggml_backend_openvino_weight_fingerprint(const ggml_tensor * tensor);
std::string ggml_openvino_model_cache_dir();
std::string ggml_openvino_model_cache_temp_path(const std::string & path);
uint64_t ggml_openvino_model_fingerprint(const ggml_cgraph * cgraph,
const std::string & device,
bool fa,
const int32_t * rope_params,
int rope_len,
uint64_t extra_cfg,
const std::string & graph_signature);
std::string ggml_openvino_model_cache_blob_path(const std::string & dir, uint64_t fingerprint);
std::string ggml_openvino_model_cache_manifest_path(const std::string & dir, uint64_t fingerprint);
bool ggml_openvino_model_cache_write_manifest(const std::string & path,
const ggml_cgraph * cgraph,
uint64_t fingerprint,
const std::vector<std::string> & inputs,
const std::vector<std::string> & outputs);
bool ggml_openvino_model_cache_verify_manifest(const std::string & path,
const ggml_cgraph * cgraph,
uint64_t fingerprint,
std::vector<std::string> & inputs,
std::vector<std::string> & outputs);