Skip to content

Commit 21ba6af

Browse files
authored
Merge branch 'main' into feat/python-splits-sdk-evm
2 parents a8f1498 + 8379621 commit 21ba6af

270 files changed

Lines changed: 26297 additions & 25665 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/CLAUDE.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,18 +63,18 @@ See `packages/splits-sdk/ARCHITECTURE.md` for design rationale.
6363

6464
```typescript
6565
// Core module - instructions + helpers (kit-agnostic, works with any kit version >=2.0.0)
66-
import { executeSplit, isCascadeSplit, createSplitConfig } from '@cascade-fyi/splits-sdk/solana';
66+
import { executeSplit, isCascadeSplit, createSplitConfig } from '@cascade-fyi/splits-sdk';
6767

6868
// High-level client - WebSocket confirmation (requires kit@5.0)
69-
import { ensureSplitConfig, executeAndConfirmSplit } from '@cascade-fyi/splits-sdk/solana/client';
69+
import { ensureSplitConfig, executeAndConfirmSplit } from '@cascade-fyi/splits-sdk';
7070

7171
// Browser with wallet-adapter
72-
import { createSplitsClient } from '@cascade-fyi/splits-sdk/solana/client';
73-
import { fromWalletAdapter } from '@cascade-fyi/splits-sdk/solana/web3-compat';
72+
import { createSplitsClient } from '@cascade-fyi/splits-sdk';
73+
import { fromWalletAdapter } from '@cascade-fyi/splits-sdk/web3-compat';
7474
```
7575

7676
Core module returns instructions; transaction building is consumer's responsibility.
77-
High-level client uses discriminated unions (`CREATED`, `UPDATED`, `BLOCKED`, `FAILED`), not exceptions.
77+
High-level client uses discriminated unions (`created`, `updated`, `blocked`, `failed`), not exceptions.
7878

7979
### @cascade-fyi/splits-sdk-evm (Base)
8080

README.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ See [docs/benchmarks/compute_units.md](docs/benchmarks/compute_units.md) for ful
109109

110110
```typescript
111111
import { createSolanaRpc } from "@solana/kit";
112-
import { executeSplit, isCascadeSplit } from "@cascade-fyi/splits-sdk/solana";
112+
import { executeSplit, isCascadeSplit } from "@cascade-fyi/splits-sdk";
113113

114114
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
115115

@@ -127,22 +127,28 @@ if (await isCascadeSplit(rpc, vault)) {
127127
}
128128
```
129129

130-
> **Note:** The core module returns instructions — transaction building is your responsibility, enabling compatibility with any @solana/kit version. For high-level convenience with WebSocket confirmation, use `executeAndConfirmSplit` from `@cascade-fyi/splits-sdk/solana/client`.
130+
> **Note:** The core module returns instructions — transaction building is your responsibility, enabling compatibility with any @solana/kit version. For high-level convenience with WebSocket confirmation, use `executeAndConfirmSplit` from `@cascade-fyi/splits-sdk`.
131131
132132
### Create a Split (Merchants)
133133

134134
```typescript
135-
import { createSplitConfig } from "@cascade-fyi/splits-sdk/solana";
135+
import { createSplitsClient } from "@cascade-fyi/splits-sdk";
136+
import { createSolanaRpc, createSolanaRpcSubscriptions, createKeyPairSignerFromBytes } from "@solana/kit";
136137

137-
const { instruction, splitConfig } = await createSplitConfig({
138-
authority: myWallet,
138+
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
139+
const rpcSubscriptions = createSolanaRpcSubscriptions("wss://api.mainnet-beta.solana.com");
140+
const signer = await createKeyPairSignerFromBytes(secretKey);
141+
142+
const splits = createSplitsClient({ rpc, rpcSubscriptions, signer });
143+
144+
const result = await splits.ensureSplit({
139145
recipients: [
140146
{ address: "Agent111111111111111111111111111111111111111", share: 90 },
141147
{ address: "Marketplace1111111111111111111111111111111", share: 10 },
142148
],
143149
});
144150

145-
// Sign and send instruction, then use splitConfig as your x402 payTo
151+
// result.vault is your payment address (use as x402 payTo)
146152
```
147153

148154
See [SDK documentation](packages/splits-sdk/README.md) for complete API reference.
@@ -187,7 +193,7 @@ No separate claim instruction needed - single interface for all operations.
187193
Cascade Splits integrates seamlessly with x402 payment facilitators:
188194

189195
```typescript
190-
import { isCascadeSplit, executeSplit } from "@cascade-fyi/splits-sdk/solana";
196+
import { isCascadeSplit, executeSplit } from "@cascade-fyi/splits-sdk";
191197

192198
// In your facilitator's settle handler:
193199
if (await isCascadeSplit(rpc, paymentDestination)) {

apps/dashboard/components.json

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
{
2-
"$schema": "https://ui.shadcn.com/schema.json",
3-
"style": "new-york",
4-
"rsc": false,
5-
"tsx": true,
6-
"tailwind": {
7-
"config": "",
8-
"css": "src/index.css",
9-
"baseColor": "slate",
10-
"cssVariables": true,
11-
"prefix": ""
12-
},
13-
"iconLibrary": "lucide",
14-
"aliases": {
15-
"components": "@/components",
16-
"utils": "@/lib/utils",
17-
"ui": "@/components/ui",
18-
"lib": "@/lib",
19-
"hooks": "@/hooks"
20-
},
21-
"registries": {}
2+
"$schema": "https://ui.shadcn.com/schema.json",
3+
"style": "new-york",
4+
"rsc": false,
5+
"tsx": true,
6+
"tailwind": {
7+
"config": "",
8+
"css": "src/index.css",
9+
"baseColor": "slate",
10+
"cssVariables": true,
11+
"prefix": ""
12+
},
13+
"iconLibrary": "lucide",
14+
"aliases": {
15+
"components": "@/components",
16+
"utils": "@/lib/utils",
17+
"ui": "@/components/ui",
18+
"lib": "@/lib",
19+
"hooks": "@/hooks"
20+
},
21+
"registries": {}
2222
}

apps/dashboard/package.json

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,55 @@
11
{
2-
"name": "dashboard",
3-
"private": true,
4-
"version": "0.0.0",
5-
"type": "module",
6-
"scripts": {
7-
"dev": "vite",
8-
"build": "tsc -b && vite build",
9-
"lint": "biome check",
10-
"preview": "vite preview",
11-
"type-check": "tsc -p tsconfig.app.json --noEmit",
12-
"check": "pnpm type-check && biome check --write"
13-
},
14-
"dependencies": {
15-
"@cascade-fyi/splits-sdk": "workspace:*",
16-
"@cascade-fyi/splits-sdk-evm": "workspace:*",
17-
"@coinbase/wallet-sdk": "^4.3.7",
18-
"@radix-ui/react-alert-dialog": "^1.1.15",
19-
"@radix-ui/react-dialog": "^1.1.15",
20-
"@radix-ui/react-dropdown-menu": "^2.1.16",
21-
"@radix-ui/react-label": "^2.1.8",
22-
"@radix-ui/react-separator": "^1.1.8",
23-
"@radix-ui/react-slot": "^1.2.4",
24-
"@radix-ui/react-tooltip": "^1.2.8",
25-
"@solana/client": "^1.0.0-rc.2",
26-
"@solana/react-hooks": "^1.0.0-rc.3",
27-
"@tailwindcss/vite": "^4.1.17",
28-
"@tanstack/react-query": "^5.90.11",
29-
"@tanstack/react-table": "^8.21.3",
30-
"class-variance-authority": "^0.7.1",
31-
"clsx": "^2.1.1",
32-
"lucide-react": "^0.554.0",
33-
"react": "^19.2.0",
34-
"react-dom": "^19.2.0",
35-
"react-hook-form": "^7.66.1",
36-
"react-router": "^7.9.6",
37-
"sonner": "^2.0.7",
38-
"tailwind-merge": "^3.4.0",
39-
"tailwindcss": "^4.1.17",
40-
"viem": "^2.41.2",
41-
"wagmi": "^3.0.2",
42-
"zod": "^4.1.12"
43-
},
44-
"devDependencies": {
45-
"@types/node": "^24.10.1",
46-
"@types/react": "^19.2.7",
47-
"@types/react-dom": "^19.2.3",
48-
"@vitejs/plugin-react": "^5.1.1",
49-
"babel-plugin-react-compiler": "^1.0.0",
50-
"shadcn": "^3.5.0",
51-
"tw-animate-css": "^1.4.0",
52-
"typescript": "~5.9.3",
53-
"vite": "npm:rolldown-vite@7.2.5"
54-
}
2+
"name": "dashboard",
3+
"private": true,
4+
"version": "0.0.0",
5+
"type": "module",
6+
"scripts": {
7+
"dev": "vite",
8+
"build": "tsc -b && vite build",
9+
"lint": "biome check",
10+
"preview": "vite preview",
11+
"type-check": "tsc -p tsconfig.app.json --noEmit",
12+
"check": "pnpm type-check && biome check --write"
13+
},
14+
"dependencies": {
15+
"@cascade-fyi/splits-sdk": "workspace:*",
16+
"@cascade-fyi/splits-sdk-evm": "workspace:*",
17+
"@coinbase/wallet-sdk": "^4.3.7",
18+
"@radix-ui/react-alert-dialog": "^1.1.15",
19+
"@radix-ui/react-dialog": "^1.1.15",
20+
"@radix-ui/react-dropdown-menu": "^2.1.16",
21+
"@radix-ui/react-label": "^2.1.8",
22+
"@radix-ui/react-separator": "^1.1.8",
23+
"@radix-ui/react-slot": "^1.2.4",
24+
"@radix-ui/react-tooltip": "^1.2.8",
25+
"@solana/client": "^1.0.0-rc.2",
26+
"@solana/react-hooks": "^1.0.0-rc.3",
27+
"@tailwindcss/vite": "^4.1.17",
28+
"@tanstack/react-query": "^5.90.11",
29+
"@tanstack/react-table": "^8.21.3",
30+
"class-variance-authority": "^0.7.1",
31+
"clsx": "^2.1.1",
32+
"lucide-react": "^0.554.0",
33+
"react": "^19.2.0",
34+
"react-dom": "^19.2.0",
35+
"react-hook-form": "^7.66.1",
36+
"react-router": "^7.9.6",
37+
"sonner": "^2.0.7",
38+
"tailwind-merge": "^3.4.0",
39+
"tailwindcss": "^4.1.17",
40+
"viem": "^2.41.2",
41+
"wagmi": "^3.0.2",
42+
"zod": "^4.1.12"
43+
},
44+
"devDependencies": {
45+
"@types/node": "^24.10.1",
46+
"@types/react": "^19.2.7",
47+
"@types/react-dom": "^19.2.3",
48+
"@vitejs/plugin-react": "^5.1.1",
49+
"babel-plugin-react-compiler": "^1.0.0",
50+
"shadcn": "^3.5.0",
51+
"tw-animate-css": "^1.4.0",
52+
"typescript": "~5.9.3",
53+
"vite": "npm:rolldown-vite@7.2.5"
54+
}
5555
}

apps/dashboard/project.json

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
{
2-
"name": "dashboard",
3-
"$schema": "../../node_modules/nx/schemas/project-schema.json",
4-
"sourceRoot": "apps/dashboard/src",
5-
"projectType": "application",
6-
"tags": ["type:app", "platform:web", "scope:apps"],
7-
"targets": {
8-
"build": {
9-
"dependsOn": ["^build"],
10-
"inputs": ["production", "^production"],
11-
"outputs": ["{projectRoot}/dist"]
12-
},
13-
"dev": {
14-
"cache": false
15-
},
16-
"type-check": {
17-
"inputs": ["default", "^production"]
18-
},
19-
"preview": {
20-
"dependsOn": ["build"],
21-
"cache": false
22-
}
23-
},
24-
"implicitDependencies": [
25-
"@cascade-fyi/splits-sdk",
26-
"@cascade-fyi/splits-sdk-evm"
27-
]
2+
"name": "dashboard",
3+
"$schema": "../../node_modules/nx/schemas/project-schema.json",
4+
"sourceRoot": "apps/dashboard/src",
5+
"projectType": "application",
6+
"tags": ["type:app", "platform:web", "scope:apps"],
7+
"targets": {
8+
"build": {
9+
"dependsOn": ["^build"],
10+
"inputs": ["production", "^production"],
11+
"outputs": ["{projectRoot}/dist"]
12+
},
13+
"dev": {
14+
"cache": false
15+
},
16+
"type-check": {
17+
"inputs": ["default", "^production"]
18+
},
19+
"preview": {
20+
"dependsOn": ["build"],
21+
"cache": false
22+
}
23+
},
24+
"implicitDependencies": [
25+
"@cascade-fyi/splits-sdk",
26+
"@cascade-fyi/splits-sdk-evm"
27+
]
2828
}

0 commit comments

Comments
 (0)