Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

The Nuklai SDK provides a modular and comprehensive interface for interacting with the Nuklai blockchain.

License

NotificationsYou must be signed in to change notification settings

Nuklai/nuklai-js-sdk

Repository files navigation

hypersdk

A modular interface for interacting with the Nuklai blockchain, built on top of theAvalanche HyperSDK.

📦 Installation

npm install @nuklai/nuklai-sdk# oryarn add @nuklai/nuklai-sdk

🚀 Quick Start

import{NuklaiSDK}from"@nuklai/nuklai-sdk";constsdk=newNuklaiSDK("http://127.0.0.1:9650");consthealthStatus=awaitsdk.rpcService.validateConnection();

✨ Core Features

  • 💰 Asset Management (Fungible/Non-Fungible Tokens)
  • 📊 Dataset Creation and Management
  • 🏪 Marketplace Operations
  • 💳 Transaction Management
  • 🔍 Network Status and Health Checks
  • 🏛️ Validator Management
  • 📈 Staking Operations

📖 Basic Usage

Initialization

import{NuklaiSDK}from"@nuklai/nuklai-sdk";constsdk=newNuklaiSDK({baseApiUrl:"http://127.0.0.1:9650",});// Set the signer for transactionssdk.rpcService.setSigner("your-private-key-here");

Wallet Generation

// Create SDK instanceconstsdk=newNuklaiSDK();// Create a new random walletconstwallet=sdk.createWallet();console.log("Wallet address:",wallet.getAddress());// Get wallet's private keyconstprivateKey=wallet.getPrivateKey();console.log("Private key:",privateKey);// Returns the 128-character private key string// Or import an existing walletconstimportedWallet=sdk.importWalletFromPrivateKey("your-private-key-hex");// Check wallet connectionif(sdk.isWalletConnected()){// Use wallet featuresconstaddress=sdk.getAddress();}

Signer

// Using a private key stringawaitsdk.rpcService.setSigner(privateKeyString);// Using any custom signer that implements SignerIfaceawaitsdk.rpcService.setSigner(customSigner);

Asset Management

// Create a fungible tokenconstftResult=awaitsdk.rpcService.createFTAsset("Test Token","TEST",9,"metadata",BigInt("1000000000000000000"),// Max supply"owner-address","admin-address","admin-address","admin-address");// Create an NFT collectionconstnftResult=awaitsdk.rpcService.createNFTAsset("Test NFT","TNFT","metadata",BigInt(1000),// Max supply"owner-address","admin-address","admin-address","admin-address");

Token Operations

// Mint fungible tokensconstmintAmount=BigInt("1000000000000000000");// 1 tokenconstmintResult=awaitsdk.rpcService.mintFTAsset("receiver-address","token-address",mintAmount);// Mint NFTconstnftMintResult=awaitsdk.rpcService.mintNFTAsset("nft-collection-address",JSON.stringify({name:"Test NFT #1",description:"First NFT",attributes:[],}),"receiver-address");// Transfer tokensconsttransferAmount=BigInt("100000000000000000");// 0.1 tokenconsttransferResult=awaitsdk.rpcService.transfer("recipient-address","token-address",transferAmount,"Transfer memo");

Check Address Balance

// Get native NAI token balanceconstnativeBalance=awaitsdk.rpcService.getBalance("address");// Get any asset balance by passing asset addressconstassetBalance=awaitsdk.rpcService.getBalance("address","assetAddress");

NOTE: Balance is returned as raw strings without decimal formatting. Use asset decimals info fromgetAssetInfo() to correctly format & display the balance corectly.

Dataset Operations

// Create a datasetconstresult=awaitsdk.rpcService.createDataset("asset-address","Test Dataset","Description","AI,Testing","MIT","MIT","https://opensource.org/licenses/MIT","metadata",true// isCommunityDataset);

🛠️ Development

Build from source:

yarnyarn build

Run tests:

yarntest

📝 Examples

Theexamples/ directory contains sample implementations:

examples/├── datasets.ts            # Dataset creation and management├── fungible-tokens.ts     # Fungible Token operations├── non-fungible-tokens.ts # Non-Fungible Token operations└── marketplace.ts         # Marketplace interactions

You can run all examples at once using:

yarn examples

Or run individual examples:

ts-node --esm examples/fungible-tokens.tsts-node --esm examples/non-fungible-tokens.ts

📚 API Reference

All methods are accessible through thesdk.rpcService instance. Below is a comprehensive reference of available methods grouped by their functionality.

Network Operations

MethodDescriptionParametersReturns
validateConnection()Checks node connectivityNonePromise<boolean>
getEmissionInfo()Retrieves emission statisticsNonePromise<ActionOutput>
getAllValidators()Lists all validatorsNonePromise<ActionOutput>
getStakedValidators()Lists validators with stakeNonePromise<ActionOutput>
getValidatorStake(nodeID)Gets specific validator stakenodeID: stringPromise<ActionOutput>

Asset Management

Fungible Token Methods

MethodDescriptionParametersReturns
createFTAsset()Creates a new Fungible Token-name: string
-symbol: string
-decimals: number
-metadata: string
-maxSupply: bigint
-mintAdmin: string
-pauseAdmin: string
-freezeAdmin: string
-kycAdmin: string
Promise<TxResult>
mintFTAsset()Mints Fungible Tokens-to: string
-assetAddress: string
-amount: bigint
Promise<TxResult>
transfer()Transfers tokens-to: string
-assetAddress: string
-value: bigint
-memo: string
Promise<TxResult>

Non-Fungible Token Methods

MethodDescriptionParametersReturns
createNFTAsset()Creates an NFT collection-name: string
-symbol: string
-metadata: string
-maxSupply: bigint
-mintAdmin: string
-pauseAdmin: string
-freezeAdmin: string
-kycAdmin: string
Promise<TxResult>
mintNFTAsset()Mints a new NFT-assetAddress: string
-metadata: string
-to: string
Promise<TxResult>

Dataset & Marketplace Operations

Dataset Methods

MethodDescriptionParametersReturns
createDataset()Creates a new dataset-assetAddress: string
-name: string
-description: string
-categories: string
-licenseName: string
-licenseSymbol: string
-licenseURL: string
-metadata: string
-isCommunityDataset: boolean
Promise<TxResult>
updateDataset()Updates dataset info-datasetAddress: string
-name: string
-description: string
-categories: string
-licenseName: string
-licenseSymbol: string
-licenseURL: string
-isCommunityDataset: boolean
Promise<TxResult>
getDatasetInfo()Gets dataset detailsdatasetID: stringPromise<ActionOutput>

Marketplace Methods

MethodDescriptionParametersReturns
publishDatasetToMarketplace()Lists dataset on marketplace-datasetAddress: string
-paymentAssetAddress: string
-datasetPricePerBlock: number
Promise<TxResult>
subscribeDatasetMarketplace()Subscribes to dataset-marketplaceAssetAddress: string
-paymentAssetAddress: string
-numBlocksToSubscribe: number
Promise<TxResult>
claimMarketplacePayment()Claims marketplace earnings-marketplaceAssetAddress: string
-paymentAssetAddress: string
Promise<TxResult>

Query Methods

MethodDescriptionParametersReturns
getBalance()Get's address balanceaddress: stringPromise<string>
getAssetInfo()Get's asset detailsassetAddress: stringPromise<ActionOutput>
getDatasetBalance()Get's dataset balance-address: string
-assetID: string
Promise<ActionOutput>
getDatasetNFTInfo()Get's NFT detailsnftID: stringPromise<ActionOutput>
getPendingContributions()Lists pending contributionsdatasetID: stringPromise<ActionOutput>
getPrivateKey()Get's wallet's private keyNonestring
getAddress()Get's wallet's addressNonestring
getPublicKey()Get's wallet's public keyNonestring

Usage Example

Creating and minting a fungible token

// Create a FTconstftResult=awaitsdk.rpcService.createFTAsset("Test Token","TEST",9,"metadata",BigInt("1000000000000000000"),"owner-address","admin-address","admin-address","admin-address");// After creation, mint some tokensconstmintResult=awaitsdk.rpcService.mintFTAsset("receiver-address",ftResult.result[0].asset_address,BigInt("1000000000000000000"));

📄 License

MIT License - seeLICENSE for details.

About

The Nuklai SDK provides a modular and comprehensive interface for interacting with the Nuklai blockchain.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors2

  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp