brk_bindgen

Crates.iobrk_bindgen
lib.rsbrk_bindgen
version0.1.0-beta.0
created_at2026-01-04 11:00:00.811009+00
updated_at2026-01-25 13:23:37.820217+00
descriptionA trait-based generator of client bindings for multiple languages
homepagehttps://bitcoinresearchkit.org
repositoryhttps://github.com/bitcoinresearchkit/brk
max_upload_size
id2021726
size316,521
(nym21)

documentation

README

brk_bindgen

Code generation for BRK client libraries.

What It Enables

Generate typed client libraries for Rust, JavaScript, and Python from the OpenAPI specification. Keeps frontend code in sync with available metrics and API endpoints without manual maintenance.

Key Features

  • Multi-language: Generates Rust, JavaScript, and Python clients
  • OpenAPI-driven: Extracts endpoints and schemas from the OpenAPI spec
  • Metric catalog: Includes all metric IDs and their supported indexes
  • Type definitions: Generates types/interfaces from JSON Schema
  • Selective output: Generate only the languages you need

Core API

use brk_bindgen::{generate_clients, ClientOutputPaths};

let paths = ClientOutputPaths::new()
    .rust("crates/brk_client/src/lib.rs")
    .javascript("modules/brk-client/index.js")
    .python("packages/brk_client/brk_client/__init__.py");

generate_clients(&vecs, &openapi_json, &paths)?;

Generated Clients

Language Contents
Rust Typed API client using brk_types, metric catalog
JavaScript ES module with JSDoc types, metric catalog, fetch helpers
Python Typed client with dataclasses, metric catalog

Each client includes:

  • All REST API endpoints as typed functions
  • Complete metric catalog with index information
  • Type definitions for request/response schemas

Built On

  • brk_query for metric enumeration
  • brk_types for type schemas
Commit count: 1045

cargo fmt