UNPKG

@noves/intent-typescript-sdk

Version:

Noves Intent Typescript SDK

144 lines (112 loc) 3.41 kB
# Noves Intent TypeScript SDK The official TypeScript SDK for interacting with Noves Intents, providing seamless access to blockchain data and analytics. ## Features - 🎯 Intent-based data querying - 🔄 Real-time data streaming - 🔒 Type-safe API - ⚡ Optimized for both client and server environments - 🌐 Cross-chain support ## Installation ```bash npm install @noves/intent-ts-sdk ``` ## Quick Start ```typescript import { ClientSideIntentSDK } from "@noves/intent-typescript-sdk"; const sdk = new ClientSideIntentSDK(); // Get available intents const intents = await sdk.getIntents(); console.log(intents); ``` ## Client-Side Usage The client-side SDK is optimized for browser environments and uses WebSocket for streaming data. ```typescript import { ClientSideIntentSDK } from "@noves/intent-typescript-sdk"; const sdk = new ClientSideIntentSDK(); // Get a single value const data = await sdk.getValue("token-price-history", { chain: "ethereum", token_address: "0x..." }); // Stream real-time data sdk.getStream( "token-price-ticks", { chain: "ethereum", token_address: "0x..." }, (data) => console.log("New price:", data), (error) => console.error("Stream error:", error), () => console.log("Stream completed") ); // Stop streaming sdk.stopStream("token-price-ticks"); ``` ## Server-Side Usage The server-side SDK is optimized for Node.js environments and uses gRPC for streaming data. ```typescript import { ServerSideIntentSDK } from "@noves/intent-typescript-sdk/server"; const sdk = new ServerSideIntentSDK(); // Get a single value const data = await sdk.getValue("wallet-view", { chain: "avalanche", address: "0x..." }); // Stream data with gRPC sdk.getStream( "live-bridge-txs", {}, (data) => console.log("New bridge transaction:", data), (error) => console.error("Stream error:", error), () => console.log("Stream completed") ); // Stop streaming sdk.stopStream("live-bridge-txs"); ``` ## Core Methods ### getIntents() Returns a list of all available intents. ```typescript const intents = await sdk.getIntents(); ``` ### getValue(intentId, params, pageSize?) Executes a value intent and returns the result. ```typescript const result = await sdk.getValue("intent-id", { param1: "value1", param2: "value2" }); ``` ### getStream(intentId, params, onData, onError?, onComplete?) Initiates a data stream for the specified intent. ```typescript sdk.getStream( "intent-id", { param1: "value1" }, (data) => console.log(data), (error) => console.error(error), () => console.log("Stream ended") ); ``` ## Type Safety The SDK provides full TypeScript support with auto-generated types for all intents and their parameters. ```typescript import { ValueIntentId, StreamableIntentId } from "@noves/intent-typescript-sdk"; // Type-safe intent IDs const valueIntent: ValueIntentId = "token-price-history"; const streamIntent: StreamableIntentId = "token-price-ticks"; ``` ## Error Handling The SDK handles errors gracefully with proper error types and messages. ```typescript import { IntentSDKError } from "@noves/intent-typescript-sdk"; try { await sdk.getValue("non-existent-intent"); } catch (error) { if (error instanceof IntentSDKError) { console.error("SDK Error:", error.message); } } ``` ## Support Feel free to join our [Telegram community](https://t.me/+tsK4RSu0Q1VjNzVh) to get help or feedback.