tnt-core-bindings 0.4.6

Rust bindings for TNT Core Solidity contracts (Tangle restaking protocol)
Documentation

tnt-core-bindings

Rust bindings for TNT Core Solidity contracts, generated using Alloy.

Installation

[dependencies]
tnt-core-bindings = "0.1"

Usage

use alloy::providers::ProviderBuilder;
use tnt_core_bindings::{ITangle, MultiAssetDelegation};

#[tokio::main]
async fn main() -> eyre::Result<()> {
    let provider = ProviderBuilder::new()
        .on_builtin("https://rpc.tangle.tools")
        .await?;

    // Interact with the Tangle contract
    let tangle = ITangle::new(tangle_address, &provider);
    let blueprint = tangle.getBlueprint(0.into()).call().await?;
    println!("Blueprint owner: {:?}", blueprint.owner);

    // Interact with MultiAssetDelegation
    let mad = MultiAssetDelegation::new(mad_address, &provider);
    let operator = mad.operators(operator_address).call().await?;
    println!("Operator stake: {:?}", operator.stake);

    Ok(())
}

Available Bindings

Contract Description
ITangle Main Tangle protocol interface (blueprints, services, jobs)
ITangleBlueprints Blueprint registration and management
ITangleServices Service lifecycle management
ITangleJobs Job submission and results
ITangleOperators Operator registration and status
ITangleSlashing Slashing mechanism
ITangleRewards Reward distribution
MultiAssetDelegation Multi-asset restaking and delegation
IBlueprintServiceManager Blueprint service manager interface
IOperatorStatusRegistry Operator status tracking

Raw ABIs

JSON ABIs are available for downstream tooling:

use tnt_core_bindings::abi;

// Access raw ABI JSON strings
let tangle_abi = abi::ITANGLE;
let mad_abi = abi::MULTI_ASSET_DELEGATION;

Version Tracking

Each release is tied to a specific TNT Core commit:

use tnt_core_bindings::TNT_CORE_VERSION;

println!("Built from commit: {}", TNT_CORE_VERSION);

Regenerating Bindings

To regenerate bindings from the Solidity source:

cargo xtask gen-bindings

This requires Foundry to be installed.

License

Licensed under either of:

at your option.

Contributing

Contributions are welcome! Please see the main repository for contribution guidelines.