@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.mdfor the agent-readable integration & migration guide. Entry points:ai-exported/integration/(new setup),ai-exported/migration/(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-coreFeatures
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-exportsfromsrc/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
typefield in config): EVM, Solana, Sui, Near, Stacks, Icon, InjectiveExplicit uppercase
typefield: 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.
undefinedlayers are skipped.undefinedvalues inside a layer are skipped (so{ field: undefined }means “don’t override the previous layer”).
library-exports
library-exportslibrary-exports re-exports types (and a few runtime values) from underlying chain SDKs so consumers can reduce direct dependencies.
Example:
Last updated