Client Setup

This guide covers how to set up and configure the SuiPulse SDK in your application.

Installation

Install the SuiPulse SDK using npm:

npm install @suipulse/sdk

Basic Setup

Initialize Client

import { SuiPulse, Network } from "@suipulse/sdk";
import { Ed25519Keypair } from "@mysten/sui.js/keypairs/ed25519";

// Create a keypair (you can use your own keypair management)
const keypair = Ed25519Keypair.fromSecretKey(/* your private key */);

// Initialize SuiPulse
const suiPulse = new SuiPulse(keypair, Network.MAINNET);

Network Configuration

// For mainnet
const suiPulse = new SuiPulse(keypair, Network.MAINNET);

// For testnet
const suiPulse = new SuiPulse(keypair, Network.TESTNET);

Stream Operations

Create a Stream

const result = await suiPulse.createStream({
  name: "My Stream",
  description: "A test data stream",
  metadata: new Uint8Array(Buffer.from("Initial metadata")),
  isPublic: true,
});

Update a Stream

await suiPulse.updateStream(streamId, {
  data: new Uint8Array(Buffer.from("Updated data")),
});

Get Stream Data

const streamData = await suiPulse.getDataStream(streamId);

Snapshot Operations

Create a Snapshot

const result = await suiPulse.createSnapshot(streamId, {
  metadata: "Snapshot metadata",
});

Get Snapshot Data

const snapshotData = await suiPulse.getSnapshotData(snapshotId);

Batch Operations

Create Multiple Streams

const result = await suiPulse.createStreamsBatch({
  streams: [
    {
      name: "Stream 1",
      description: "First stream",
      metadata: new Uint8Array(Buffer.from("Metadata 1")),
      isPublic: true,
    },
    {
      name: "Stream 2",
      description: "Second stream",
      metadata: new Uint8Array(Buffer.from("Metadata 2")),
      isPublic: false,
    },
  ],
  options: { parallel: true },
});

Update Multiple Streams

const result = await suiPulse.updateStreamsBatch({
  updates: [
    {
      streamId: "0x123...",
      data: new Uint8Array(Buffer.from("Update 1")),
    },
    {
      streamId: "0x456...",
      data: new Uint8Array(Buffer.from("Update 2")),
    },
  ],
  options: { parallel: true },
});

Permission Management

Add Permission

await suiPulse.addPermission(streamId, address, permissionLevel);

Check Subscription

const isSubscribed = await suiPulse.isSubscribed(streamId, address);

Best Practices

  1. Keypair Management

    • Securely store your private keys
    • Use environment variables for sensitive data
    • Implement proper key rotation
  2. Error Handling

    • Implement proper error boundaries
    • Handle network errors gracefully
    • Provide user-friendly error messages
  3. Performance

    • Use batch operations for multiple updates
    • Implement proper cleanup
    • Handle large data appropriately

Next Steps