SDKs¶
The repository provides six language bindings against one frozen operation and model contract. Each binding is checked against shared deterministic vectors.
Supported bindings¶
| Binding | Source | Package registry | Typical use |
|---|---|---|---|
| TypeScript / Node.js | README | npm search | Services, bots, and tooling |
| Python | README | PyPI search | Solvers, research, and operations tooling |
| Rust | README | crates.io search | High-throughput and strongly typed services |
| Go | README | pkg.go.dev search | Network services and bots |
| JVM | README | Maven Central search | Java/Kotlin systems |
| .NET | README | NuGet search | C# services and tooling |
Registry links are searches, not publication claims. The repository source and SDK contract remain canonical when no published package is listed.
Frozen operation contract¶
The following table is generated from sdk-spec/nexa-v6-sdk-contract.json:
Canonical SDK operations¶
SDK contract: NEXA_V6_SDK_CONTRACT_V1 ? spec version 1.0.0 ? status FROZEN.
| Operation | Input | Output |
|---|---|---|
discover | none | Discovery |
getRoutes | RouteQuery? | RouteList |
getRoute | routeId: Bytes32 | Route |
verifyFeed | SignedFeed, VerifyFeedOptions? | FeedVerification |
requestPermitMessage | PermitRequest | string |
requestPermit | PermitRequest, requestSignature | PermitEnvelope |
resolveExecution | rpcUrl, payload | ResolvedExecution |
previewExecution | rpcUrl, PermitEnvelope | ExecutionPreview |
buildExecutionTx | PermitEnvelope | ExecutionTransaction |
getFillStatus | fillId: Bytes32 | FillStatus |
TypeScript example¶
import { NexaV6Client } from "nexa-v6-sdk";
const client = new NexaV6Client();
const { routes } = await client.getRoutes({ sourceChainId: 8453 });
const request = {
quoteId: routes[0].quoteId,
requestedAmountInRaw: routes[0].minimumFillInRaw,
standard: "DIRECT",
payer: "0xYOUR_SOURCE_ADDRESS",
recipient: "0xYOUR_DESTINATION_ADDRESS",
idempotencyKey: "solver-order-0001"
};
const message = await client.requestPermitMessage(request);
// Sign `message` exactly with the payer wallet, outside the SDK.
Wallet ownership and transaction submission remain application concerns. Do not inject private keys into a documentation build, indexer, or discovery client.
Conformance¶
From the repository root:
Conformance covers canonicalization, Feed hashes and signatures, permit-request messages, ABI encoding, standard resolution, models, and error mapping across the supported bindings.
Safe client behavior¶
- Resolve endpoints and expected signer from canonical discovery.
- Verify the Feed before returning routes.
- Preserve base-10 integer strings and canonical identity formatting.
- Keep signing external and sign the exact returned message.
- Validate the permit envelope before building a transaction.
- Use the solver's own RPC for preview and submission.
- Expect one source Router call and a final total transaction count of two.