Here's the updated README.md with the newly added methods and types included:


synnq_sdk

A TypeScript SDK for interacting with the Synnq platform. This SDK provides easy-to-use methods for managing wallets, transactions, governance, neural network interactions, block management, contract execution, and authentication.

Features

  • Wallet Management: Create and manage wallets, retrieve wallet details, and manage permissions and roles.
  • Transaction Handling: Create and retrieve transactions.
  • Governance: Submit and vote on proposals.
  • Neural Network: Make predictions and update models.
  • Block Management: Query block height.
  • Contract Management: Execute and deploy contracts.
  • Authentication: Authenticate wallets and verify tokens.

Installation

Install the SDK using npm:

npm install synnq_sdk

Usage

Import the SDK

First, import the SDK into your project:

import { SynnqSDK } from 'synnq-sdk';

Initialize the SDK Client

Initialize the SDK client with the default base URL (https://rest.synnq.io):

const client = new SynnqSDK();

You can also specify a custom base URL if needed:

const client = new SynnqSDK('https://custom-api-url.com');

Wallet Management

Create a Wallet

You can create a new wallet using the createWallet method:

async function createWallet() {
  const walletResponse = await client.wallet.createWallet({
    prefix: 'synnq',
  });
  console.log(walletResponse);
}
 
createWallet();

Retrieve a Wallet by Mnemonic

Retrieve a wallet using a mnemonic phrase:

async function retrieveWalletFromMnemonic() {
  const walletResponse = await client.wallet.retrieveWalletFromMnemonic({
    mnemonic: 'your-mnemonic',
  });
  console.log(walletResponse);
}
 
retrieveWalletFromMnemonic();

Query Wallet Balance

Query the balance of a wallet for a specific token:

async function queryBalance() {
  const balanceResponse = await client.wallet.queryBalance({
    address: 'wallet-address',
    symbol: 'SYQ',
  });
  console.log(balanceResponse);
}
 
queryBalance();

Get Wallets Holding a Specific Coin

Retrieve all wallets that hold a specific coin:

async function getWalletsHoldingCoin() {
  const walletsResponse = await client.wallet.getWalletsHoldingCoin({
    coinSymbol: 'SYQ',
  });
  console.log(walletsResponse);
}
 
getWalletsHoldingCoin();

Get Wallets Count

Retrieve the total count of wallets:

async function getWalletsCount() {
  const countResponse = await client.wallet.getWalletsCount();
  console.log(countResponse);
}
 
getWalletsCount();

Transaction Handling

Create a Transaction

Create a new transaction between two addresses:

async function createTransaction() {
  const transactionResponse = await client.transaction.createTransaction({
    transaction_type: 'payment',
    sender: 'sender-address',
    receiver: 'receiver-address',
    amount: 100,
    denom: 'USYQ',
    privateKey: 'your-private-key',
    flags: '1',
    data_type: 'data',
    data: {
      key: 'value',
    },
    metadata: {
      key: 'value',
    },
    model_type: 'default_model',
  });
  console.log(transactionResponse);
}
 
createTransaction();

Get a Transaction by Hash

Retrieve transaction details using its hash:

async function getTransaction() {
  const transaction = await client.transaction.getTransactionByHash({
    hash: 'transaction-hash',
  });
  console.log(transaction);
}
 
getTransaction();

Governance

Submit a Proposal

Submit a new proposal for voting:

async function submitProposal() {
  const proposalResponse = await client.governance.submitProposal({
    proposer: 'proposer-address',
    parameters: { some: 'parameter' },
    description: 'Proposal description',
    votingDeadline: '2024-12-31T23:59:59Z',
  });
  console.log(proposalResponse);
}
 
submitProposal();

Vote on a Proposal

Cast a vote on an existing proposal:

async function voteOnProposal() {
  const voteResponse = await client.governance.voteOnProposal({
    nodeId: 'node-address',
    proposalId: 1,
    vote: true,
  });
  console.log(voteResponse);
}
 
voteOnProposal();

Neural Network

Make a Prediction

Use the neural network to make a prediction based on input data:

async function makePrediction() {
  const predictionResponse = await client.neural.predict({
    modelType: 'exampleModel',
    sender: 'sender-address',
    data: { input: 'some data' },
    privateKey: 'your-private-key',
  });
  console.log(predictionResponse);
}
 
makePrediction();

Make a Forecast

Use the neural network to make a forecast:

async function makeForecast() {
  const forecastingResponse = await client.neural.forecast({
    modelType: 'exampleModel',
    sender: 'sender-address',
    data: { input: 'forecast data' },
    privateKey: 'your-private-key',
  });
  console.log(forecastingResponse);
}
 
makeForecast();

Block Management

Get Block Height

Retrieve the current block height:

async function getBlockHeight() {
  const blockHeightResponse = await client.transaction.getBlockHeight();
  console.log(blockHeightResponse);
}
 
getBlockHeight();

Contract Management

Execute a Contract

Execute a smart contract:

async function executeContract() {
  const executeResponse = await client.wallet.executeContract({
    walletAddress: 'wallet-address',
    contractId: 'contract-id',
    method: 'methodName',
    args: ['arg1', 'arg2'],
    privateKey: 'your-private-key',
  });
  console.log(executeResponse);
}
 
executeContract();

Deploy a Contract

Deploy a new smart contract:

async function deployContract() {
  const deployResponse = await client.wallet.deployContract({
    walletAddress: 'wallet-address',
    contractBase64: 'base64EncodedContract',
    contractType: 'contractType',
    privateKey: 'your-private-key',
  });
  console.log(deployResponse);
}
 
deployContract();

Authentication

Authenticate a Wallet

Authenticate a wallet to receive a token:

async function authenticateWallet() {
  const authResponse = await client.wallet.authenticate({
    address: 'wallet-address',
    privateKey: 'your-private-key',
    message: 'authentication message',
  });
  console.log(authResponse);
}
 
authenticateWallet();

Verify an Authentication Token

Verify if an authentication token is still valid:

async function verifyAuthToken() {
  const verifyResponse = await client.wallet.verifyAuthToken({
    token: 'your-auth-token',
  });
  console.log(verifyResponse);
}
 
verifyAuthToken();

Additional Notes

  • Error Handling: Ensure you add error handling to your asynchronous functions to manage any issues that might arise during API calls.
  • Configuration: The base URL (https://rest.synnq.io) is set by default, but you can override it by providing a different URL when initializing the SDK client.

License

This project is licensed under the ISC License - see the LICENSE file for details.


Summary of Changes

  • New Sections: Added examples for querying wallet balance, getting wallets holding a specific coin, getting wallets count, contract execution, contract deployment, wallet authentication, and verifying authentication tokens.
  • Block Management: Added a section to demonstrate querying block height.
  • Consistent Formatting: Ensured that the formatting is consistent across all examples and sections.

This updated README.md provides a comprehensive guide to using the synnq_sdk package, including the newly added methods and types.