npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@tuwaio/solana-sdk

v0.0.8

Published

Layer 9 (L9) of the TUWA Ecosystem. The Solana Network Adapter SDK providing Gill/Wallet-Standard transports and state watchers.

Readme

@tuwaio/solana-sdk

NPM Version License

The Layer 9 (L9) Solana Network Adapter SDK for the TUWA Ecosystem. Packages all Solana-compatible logic (OrbitSolana, PulsarSolana, SatelliteSolana, SolanaConnectorsWatcher) into clean subpath entry points.


🏛️ What is @tuwaio/solana-sdk?

@tuwaio/solana-sdk is Layer 9 (L9) of the TUWA ecosystem architecture — a headless, purely logical adapter SDK designed to teach the core @tuwaio/sdk (L8) how to interact with the Solana blockchain.

It completely avoids legacy @solana/web3.js classes and is built from the ground up on modern primitives: Gill and Wallet Standard. It provides standardized adapters for Wallet Connection (Satellite) and Transaction Tracking (Pulsar). This modular subpath approach ensures your app only ships Solana dependencies when you actually need them.


✨ Key Features

  • 🪙 Solana Native: Built entirely on Wallet Standard to ensure maximum forward compatibility.
  • 🌐 Ecosystem Adapters: Packages OrbitSolana, PulsarSolana, SatelliteSolana, and SolanaConnectorsWatcher under unified subpaths.
  • ⚡ Subpath Architecture: Clean subpath imports (@tuwaio/solana-sdk/satellite, @tuwaio/solana-sdk/pulsar, @tuwaio/solana-sdk/orbit, @tuwaio/solana-sdk/nova-connect).
  • 🧩 Zero UI Bloat: Focuses strictly on connection logic, standard wallet features, and transaction tracking adapters.
  • 🔄 Standardized Auto-Discovery: Seamlessly detects and connects to any browser extension that supports Wallet Standard (SolanaConnectorsWatcher).

💾 Installation

Install this package alongside the core SDK and the required Web3 singletons:

pnpm add @tuwaio/sdk @tuwaio/solana-sdk gill @wallet-standard/react @wallet-standard/app @wallet-standard/ui-core @wallet-standard/ui-registry

🚀 Quick Start (Solana Integration)

To cleanly integrate Solana wallets and transaction tracking with TUWA, you should adopt a modular architecture. Below is the recommended implementation pattern using subpath imports.

Note: This example uses standard client-side state. For Quasar Cloud syncing and server-side tracking, see the full-stack guide in the core @tuwaio/sdk documentation.

1. Define Transaction Types (types.ts)

// src/types.ts
import type { Transaction } from '@tuwaio/sdk/pulsar';

export enum AppTxType {
  SWAP = 'SWAP',
}

export type SwapTx = Transaction & {
  type: AppTxType.SWAP;
  payload: { tokenIn: string; tokenOut: string; amount: number };
};

export type TransactionUnion = SwapTx;

2. Tracking Store (usePulsarStore.ts)

Create a headless tracking store specifically for Solana transactions.

// src/hooks/usePulsarStore.ts
'use client';

import { createPulsarStore, createBoundedUseStore } from '@tuwaio/sdk/pulsar';
import { pulsarSolanaAdapter } from '@tuwaio/solana-sdk/pulsar';
import { solanaRPCUrls } from '@/configs/appConfig';
import { TransactionUnion } from '@/types';

const initialStore = createPulsarStore<TransactionUnion>({
  name: 'tuwa-transactions-solana',
  adapter: [pulsarSolanaAdapter({ rpcUrls: solanaRPCUrls })],
});

export const usePulsarStore = createBoundedUseStore(initialStore);

3. Nova Transactions Provider (NovaTransactionsProvider.tsx)

Binds the React UI elements to the headless transaction state.

// src/providers/NovaTransactionsProvider.tsx
'use client';

import { useSatelliteConnectStore } from '@tuwaio/sdk/satellite';
import { useInitializeTransactionsPool } from '@tuwaio/sdk/pulsar';
import { getAdapterFromConnectorType } from '@tuwaio/sdk/orbit';
import { NovaTransactionsProvider as NTP } from '@tuwaio/sdk/nova-transactions/providers';
import { usePulsarStore } from '@/hooks/usePulsarStore';

export function NovaTransactionsProvider() {
  const initialTx = usePulsarStore((s) => s.initialTx);
  const closeTxTrackedModal = usePulsarStore((s) => s.closeTxTrackedModal);
  const executeTxAction = usePulsarStore((s) => s.executeTxAction);
  const initializeTransactionsPool = usePulsarStore((s) => s.initializeTransactionsPool);
  const getAdapter = usePulsarStore((s) => s.getAdapter);
  const transactionsPool = usePulsarStore((s) => s.transactionsPool);

  const activeConnection = useSatelliteConnectStore((s) => s.activeConnection);

  useInitializeTransactionsPool({ initializeTransactionsPool });

  return (
    <NTP
      transactionsPool={transactionsPool}
      initialTx={initialTx}
      closeTxTrackedModal={closeTxTrackedModal}
      executeTxAction={executeTxAction}
      connectedWalletAddress={activeConnection?.isConnected ? activeConnection.address : undefined}
      connectedAdapterType={getAdapterFromConnectorType(activeConnection?.connectorType ?? 'solana:')}
      adapter={getAdapter()}
    />
  );
}

4. App Providers Layout (AppProviders.tsx)

Assembling the complete Solana layout. The SolanaConnectorsWatcher handles the standard wallet auto-discovery and syncs the state invisibly.

// src/providers/AppProviders.tsx
'use client';

import { SatelliteConnectProvider } from '@tuwaio/sdk/satellite';
import { NovaConnectProvider } from '@tuwaio/sdk/nova-connect';
import { satelliteSolanaAdapter } from '@tuwaio/solana-sdk/satellite';
import { SolanaConnectorsWatcher } from '@tuwaio/solana-sdk/nova-connect';

import { solanaRPCUrls } from '@/configs/appConfig';
import { usePulsarStore } from '@/hooks/usePulsarStore';
import { NovaTransactionsProvider } from '@/providers/NovaTransactionsProvider';

export function AppProviders({ children }: { children: React.ReactNode }) {
  const getAdapter = usePulsarStore((s) => s.getAdapter);
  const transactionsPool = usePulsarStore((s) => s.transactionsPool);

  return (
    <SatelliteConnectProvider adapter={[satelliteSolanaAdapter({ rpcUrls: solanaRPCUrls })]} autoConnect={true}>
      <SolanaConnectorsWatcher />

      <NovaTransactionsProvider />

      <NovaConnectProvider
        solanaRPCUrls={solanaRPCUrls}
        transactionPool={transactionsPool}
        pulsarAdapter={getAdapter() as any}
        withImpersonated
        withBalance
        withChain
      >
        {children}
      </NovaConnectProvider>
    </SatelliteConnectProvider>
  );
}

5. Creating a Solana Transaction (Usage)

Now you can safely execute strictly-typed transactions anywhere in your app.

// src/components/SwapButton.tsx
'use client';

import { OrbitAdapter } from '@tuwaio/sdk/orbit';
import { useSatelliteConnectStore } from '@tuwaio/sdk/satellite';
import { TxActionButton } from '@tuwaio/sdk/nova-transactions';
import { usePulsarStore } from '@/hooks/usePulsarStore';
import { AppTxType } from '@/types';

export function SwapButton() {
  const executeTxAction = usePulsarStore((s) => s.executeTxAction);
  const getLastTxKey = usePulsarStore((s) => s.getLastTxKey);
  const transactionsPool = usePulsarStore((s) => s.transactionsPool);
  const activeConnection = useSatelliteConnectStore((s) => s.activeConnection);

  const handleSwapAction = async () => {
    await executeTxAction({
      actionFunction: async () => {
        /* solana web3 contract call */
      },
      params: {
        adapter: OrbitAdapter.SOLANA,
        type: AppTxType.SWAP,
        title: 'Token Swap',
        payload: { tokenIn: 'USDC', tokenOut: 'SOL', amount: 100 },
      },
    });
  };

  return (
    <TxActionButton
      action={handleSwapAction}
      getLastTxKey={getLastTxKey}
      transactionsPool={transactionsPool}
      walletAddress={activeConnection?.address}
    >
      Execute Solana Swap
    </TxActionButton>
  );
}

📦 Available Subpath Exports

  • @tuwaio/solana-sdk/satellite — Solana Satellite adapter (satelliteSolanaAdapter).
  • @tuwaio/solana-sdk/pulsar — Solana Pulsar adapter (pulsarSolanaAdapter).
  • @tuwaio/solana-sdk/orbit — Solana Orbit helpers & types.
  • @tuwaio/solana-sdk/nova-connect — Solana React watcher component (SolanaConnectorsWatcher).

🤝 Contributing & Support

Contributions are welcome! Please read our main Contribution Guidelines.

If you find this library useful, please consider supporting its development. Every contribution helps!

➡️ View Support Options

📄 License

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