Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Subscriptions

Real-time WebSocket subscriptions for blocks, mempool, transactions, and balances.

Setup

Requires a webSocket transport.

import { createPublicClient, webSocket, mainnet } from "@secondlayer/stacks";
 
const client = createPublicClient({
  chain: mainnet,
  transport: webSocket(),
});

Watch Blocks

const sub = await client.watchBlocks({
  onBlock: (block) => {
    console.log("New block:", block.height);
  },
});
 
// Unsubscribe
sub.unsubscribe();

Watch Mempool

const sub = await client.watchMempool({
  onTransaction: (tx) => {
    console.log("Pending tx:", tx.tx_id);
  },
});

Watch Transaction

const sub = await client.watchTransaction({
  txId: "0xabc...",
  onUpdate: (update) => {
    console.log("Status:", update.tx_status);
  },
});

Watch Address Activity

// All transactions for an address
const sub = await client.watchAddress({
  address: "SP2J6...",
  onTransaction: (tx) => {
    console.log("Activity:", tx.tx_id);
  },
});
 
// Balance changes only
const sub = await client.watchAddressBalance({
  address: "SP2J6...",
  onChange: (balance) => {
    console.log("New balance:", balance.stx.balance);
  },
});

Watch NFT Events

const sub = await client.watchNftEvent({
  assetIdentifier: "SP2J6....my-nft::my-nft",
  onEvent: (event) => {
    console.log("NFT event:", event);
  },
});