Releases: cascade-protocol/splits
cascade-cli vcli-v0.1.0
Changelog
- 28cc100 chore(cli): configure goreleaser for monorepo tags
- 01065b0 chore(style): update app's style
- ae5fa35 feat(docs): add ADR-0004 for Cascade Market Architecture
- 537ccd8 feat(market): add OAuth 2.0 + SIWS authentication
- 1b754f3 feat(market): add x402 facilitator, Go CLI, and upgrade gateway to v2
- 0c648e6 feat: add spec for Base EVM support
- c59527f feat: implement initial app scaffold
- 0510e97 feat: improve adr specs to better utilize existing libs and align with requirements or 3rd party deps
cascade-splits-sdk-evm (Python) v0.1.0
Python SDK for Cascade Splits EVM
First release of the Python SDK for Cascade Splits on Base (EVM).
Installation
pip install cascade-splits-sdk-evmFeatures
- Async-first architecture with
AsyncCascadeSplitsClient(recommended) - Sync client
CascadeSplitsClientfor simple scripts - Standalone async functions
ensure_split()andexecute_split()for low-level control - Helper functions:
is_cascade_split,get_split_balance,get_split_config,has_pending_funds,get_pending_amount,get_total_unclaimed,preview_execution,predict_split_address,get_default_token - Result types:
EnsureResult(CREATED/NO_CHANGE/FAILED),ExecuteResult(EXECUTED/SKIPPED/FAILED) - Type safety: Full Pydantic v2 models with frozen dataclasses
- PEP 561 compliance:
py.typedmarker for type checkers - Support for Base Mainnet (8453) and Base Sepolia (84532)
Requirements
- Python 3.11+
web3.py7.xpydantic2.x
Quick Start
from cascade_splits_evm import AsyncCascadeSplitsClient, Recipient
client = AsyncCascadeSplitsClient(
rpc_url="https://mainnet.base.org",
private_key="0x...",
chain_id=8453,
)
result = await client.ensure_split(
unique_id=b"my-unique-split-id".ljust(32, b"\x00"),
recipients=[
Recipient(address="0xAlice...", share=60),
Recipient(address="0xBob...", share=40),
],
)
if result.status == "CREATED":
print(f"Split created at: {result.split}")Links
@cascade-fyi/tabs-sdk@0.1.2
0.1.2 (2025-12-09)
🚀 Features
- tabs: add DemoPanel component and integrate into SmartAccountPanel (7b1604e)
@cascade-fyi/splits-sdk@0.11.1
0.11.1 (2025-12-09)
🚀 Features
⚠️ sdk: add /core entry point for kit v2.x compatibility (6e72a41)- python-sdk: Production-ready Python SDK for Cascade Splits EVM (#8)
⚠️ Breaking Changes
- sdk: add /core entry point for kit v2.x compatibility (6e72a41)
Consumers using kit v2.x must import from '@cascade-fyi/splits-sdk/core'
@cascade-fyi/splits-sdk@0.11.0
0.11.0 (2025-12-09)
Implements ADR-0003: Solana splits-sdk API Design Patterns (#7)
⚠️ BREAKING CHANGES
-
Module structure flattened: Imports now from package root, not
/solanasubpath// Before import { executeSplit } from '@cascade-fyi/splits-sdk/solana'; import { createSplitsClient } from '@cascade-fyi/splits-sdk/solana/client'; // After import { executeSplit, createSplitsClient } from '@cascade-fyi/splits-sdk';
-
Removed
ExecuteAndConfirmResulttype: UseExecuteResultinstead// Before if (result.ok) { ... } // After if (result.status === 'executed') { ... }
-
Renamed
seed→uniqueIdinestimateSplitRent()// Before estimateSplitRent(rpc, { authority, recipients, seed: labelToSeed("name") }) // After estimateSplitRent(rpc, { authority, recipients, uniqueId: labelToSeed("name") })
✨ Features (ADR-0003 Implementation)
- All functions now use flat object parameters consistently
- All result types use lowercase
statusdiscriminant (created,executed, etc.) splitConfigis the primary identifier for all operations (notvault)- Token program auto-detection enabled by default (Token-2022 just works)
- ATA auto-creation enabled by default with opt-out via
createMissingAtas: false
🔧 Internal Improvements
- Removed redundant type assertions (
as Address,as Signature) - Simplified conditional object building with spread syntax
- Use
getSplitConfiginstead of deprecatedgetSplitConfigFromVaultinternally - Updated ARCHITECTURE.md with correct import paths
- Marked ADR-0003 as "Implemented"
📦 Migration Guide
- Update imports: Remove
/solanafrom import paths - Update result handling: Change
result.oktoresult.status === 'executed' - Update
estimateSplitRent: Renameseedparameter touniqueId
@cascade-fyi/splits-sdk-evm@0.1.3
0.1.3 (2025-12-09)
This was a version bump only for @cascade-fyi/splits-sdk-evm to align it with other projects, there were no code changes.
@cascade-fyi/tabs-sdk@0.1.1
0.1.1 (2025-12-05)
This was a version bump only for @cascade-fyi/tabs-sdk to align it with other projects, there were no code changes.
@cascade-fyi/splits-sdk@0.10.1
0.10.1 (2025-12-05)
This was a version bump only for @cascade-fyi/splits-sdk to align it with other projects, there were no code changes.
@cascade-fyi/splits-sdk-evm@0.1.1
0.1.1 (2025-12-05)
This was a version bump only for @cascade-fyi/splits-sdk-evm to align it with other projects, there were no code changes.
splits-sdk v0.9.0
[0.9.0] - 2025-12-02
Added
-
Client Factory for Browser Apps (
/solana/client)createSplitsClient(rpc, wallet)— stateful client with persistent wallet bindingSplitsWalletinterface — adapter pattern for wallet flexibilityfromKitSigner()— kit-native adapter (WebSocket-based confirmation)- Methods:
ensureSplit(),execute(),update(),close() - Discriminated union results:
CREATED,UPDATED,NO_CHANGE,BLOCKED,FAILED,EXECUTED,SKIPPED,CLOSED,ALREADY_CLOSED - Actionable error messages in all BLOCKED/FAILED results (what happened, why, what to do)
- Abort signal support for timeout/cancellation
-
HTTP-Only Functions (for facilitators/servers without WebSocket)
sendEnsureSplit()— idempotent create/update with polling confirmationsendExecuteSplit()— distribute vault with polling confirmationsendUpdateSplit()— update recipients with polling confirmationsendCloseSplit()— close split with polling confirmation- Configurable polling:
confirm: { maxRetries, retryDelayMs }or fire-and-forget
-
WebSocket Functions (thin wrappers using client internals)
ensureSplitConfig()— idempotent create/updatecloseSplit()— idempotent close with rent recoveryupdateSplit()— update recipients with pre-validation- All use
fromKitSignerinternally for WebSocket-based confirmation
-
Wallet Adapter Support (
/solana/web3-compat)fromWalletAdapter(wallet, connection)— convert wallet-adapter to SplitsWallettoWeb3Transaction()— convert kit messages to web3.js VersionedTransactionWalletDisconnectedError,WalletRejectedError— typed wallet errors
-
Rent Estimation
estimateSplitRent()— pure rent calculation before committing
-
Label-Based Seeds (cross-chain compatible)
labelToSeed(label)— convert human-readable label to hashed AddressseedToLabel(seed)— reverse conversion (if recoverable)seedBytesToAddress(bytes)— raw bytes to Address
-
Token Program Detection
detectTokenProgram()— auto-detect SPL Token vs Token-2022 from mint- Cached per mint for efficiency
-
Recipient Helpers
recipientsEqual()— set equality comparison (order-independent)checkRecipientAtas()— check which recipient ATAs are missing
-
New Error Types
MintNotFoundError— mint account doesn't existRecipientAtasMissingError— lists missing recipient ATAs
-
Architecture Documentation
ARCHITECTURE.md— design rationale for API layers and decisions
Changed
- Export Structure: New
/solana/clientsubpath for client factory - Result Types: Unified
EnsureResult,ExecuteResult,UpdateResult,CloseResultacross all API layers
Internal
- New
client/module:index.ts,types.ts,ensure.ts,execute.ts,update.ts,close.ts,buildTransaction.ts,messages.ts,errors.ts,wallet-errors.ts - Kit-signer adapter:
client/adapters/kit-signer.ts - Transaction conversion:
web3-compat/transactions.ts - Comprehensive test coverage for all client operations