wallet@sodax/wallet-sdk-core

The Sodax wallet-sdk-core is a core wallet SDK package containing implementations of wallet providers that enable multi-chain wallet connectivity. This package provides TypeScript implementations of wallet providers for various blockchain networks, making them compatible with the Core Sodax SDK (@sodax/sdk).

AI-friendly docs: see ai-exported/AGENTS.mdarrow-up-right for the agent-readable integration & migration guide. Entry points: ai-exported/integration/arrow-up-right (new setup), ai-exported/migration/arrow-up-right (upgrading from older RCs).

Installation

# Using pnpm (recommended)
pnpm add @sodax/wallet-sdk-core

# Using npm
npm install @sodax/wallet-sdk-core

# Using yarn
yarn add @sodax/wallet-sdk-core

Features

  • Multi-chain Support: Wallet provider implementations for multiple blockchain networks

  • TypeScript Compatibility: Fully typed implementations compatible with @sodax/sdk

  • Wallet Provider Interface: Standardized interface for wallet connectivity across different chains

  • Core Integration: Seamless integration with the Core Sodax SDK

Supported Wallet Providers

The package includes wallet provider implementations for:

  • EVM-compatible chains ✅

  • Solana ✅

  • Sui ✅

  • Stellar ✅

  • ICON ✅

  • Injective ✅

  • Near ✅

  • Stacks ✅

  • Bitcoin ✅

Public API surface

The package root exports:

  • Wallet providers from src/wallet-providers/* (e.g. EvmWalletProvider, SolanaWalletProvider, BitcoinWalletProvider)

  • library-exports from src/types/library-exports.ts (types and a few runtime values re-exported from upstream chain SDKs)

Internal utilities (e.g. shallowMerge in src/utils/merge.ts) are not exported from the package root.

Config variants (private key vs browser/extension)

All providers support two modes, but the union discriminant depends on the provider:

  • Field presence (no type field in config): EVM, Solana, Sui, Near, Stacks, Icon, Injective

  • Explicit uppercase type field: Bitcoin, Stellar ('PRIVATE_KEY' | 'BROWSER_EXTENSION')

EVM

Solana

Bitcoin

Sui

Sui uses mnemonics (not privateKey) for private-key mode. Browser extension requires a pre-constructed SuiClient, wallet object, and active WalletAccount.

Stellar

Stellar uses an explicit uppercase type field ('PRIVATE_KEY' | 'BROWSER_EXTENSION').

Stacks

Stacks discriminates by field presence (no type field). The private-key config has privateKey; the browser-extension config has address (and optionally a StacksProvider).

ICON

ICON discriminates by field presence. The browser-extension config uses an optional walletAddress field (not a client object); rpcUrl is required in both modes.

Injective

Injective discriminates by field presence. The private-key config uses a nested secret object that accepts either { privateKey } or { mnemonics } — it is named SecretInjectiveWalletConfig rather than PrivateKey* to reflect this dual credential shape.

NEAR

NEAR discriminates by field presence. The private-key config requires rpcUrl, accountId, and privateKey; the browser-extension config wraps a NearConnector.

Defaults and merge semantics

Each provider accepts optional defaults, and most methods accept per-call options. The SDK combines layers using a shallow merge:

  • Only top-level keys are merged; nested objects are replaced, not deep-merged.

  • undefined layers are skipped.

  • undefined values inside a layer are skipped (so { field: undefined } means “don’t override the previous layer”).

library-exports

library-exports re-exports types (and a few runtime values) from underlying chain SDKs so consumers can reduce direct dependencies.

Example:

Last updated