@routstr/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,95 @@
1
+ # Routstr SDK
2
+
3
+ This SDK lives under `sdk/` and exposes a framework-agnostic surface for Routstr API interactions. It separates business logic from UI and provides core types, discovery, client orchestration, wallet abstractions, and storage defaults.
4
+
5
+ ## Entry Points
6
+
7
+ - `sdk/index.ts` exports core types, discovery, wallet interfaces, client, storage, utils.
8
+
9
+ ## Core Modules
10
+
11
+ - Discovery: `ModelManager`, `MintDiscovery` in `sdk/discovery/`
12
+ - Provider bootstrap, models cache, mint discovery, provider info cache
13
+ - Client: `RoutstrClient`, `ProviderManager`, `StreamProcessor` in `sdk/client/`
14
+ - Main request flow, failover, streaming parsing
15
+ - Wallet: `CashuSpender`, `BalanceManager` in `sdk/wallet/`
16
+ - Cashu spend/retry, refund handling
17
+
18
+ ## Interfaces (app provides)
19
+
20
+ - `WalletAdapter`, `StorageAdapter`, `ProviderRegistry`, `StreamingCallbacks` in `sdk/wallet/interfaces.ts`
21
+ - `DiscoveryAdapter` in `sdk/discovery/interfaces.ts`
22
+
23
+ ## Storage Defaults
24
+
25
+ - `sdk/storage/index.ts` exposes:
26
+ - `getDefaultSdkDriver()` (localStorage -> sqlite -> memory)
27
+ - `getDefaultSdkStore()`
28
+ - `getDefaultDiscoveryAdapter()`
29
+ - `getDefaultStorageAdapter()`
30
+ - `getDefaultProviderRegistry()`
31
+
32
+ ## Minimal Usage
33
+
34
+ ```ts
35
+ import {
36
+ ModelManager,
37
+ MintDiscovery,
38
+ RoutstrClient,
39
+ getDefaultDiscoveryAdapter,
40
+ getDefaultProviderRegistry,
41
+ getDefaultStorageAdapter,
42
+ } from "@/sdk";
43
+
44
+ const discovery = getDefaultDiscoveryAdapter();
45
+ const providerRegistry = getDefaultProviderRegistry();
46
+ const storageAdapter = getDefaultStorageAdapter();
47
+
48
+ const modelManager = await ModelManager.init(discovery, {}, { torMode: false });
49
+ const baseUrls = discovery.getBaseUrlsList();
50
+ const mintDiscovery = new MintDiscovery(discovery);
51
+ await mintDiscovery.discoverMints(baseUrls);
52
+
53
+ const client = new RoutstrClient(
54
+ walletAdapter,
55
+ storageAdapter,
56
+ providerRegistry,
57
+ "min"
58
+ );
59
+ await client.fetchAIResponse(fetchOptions, streamingCallbacks);
60
+ ```
61
+
62
+ ## Client Modes
63
+
64
+ The `RoutstrClient` supports three modes via the constructor `mode` parameter (defaults to `"xcashu"` if unspecified):
65
+
66
+ - `"xcashu"` — Default mode. Uses standard Cashu token spending with refunds.
67
+ - `"lazyrefund"` — Defers refund processing to reduce mint load; may retain tokens longer before refunding.
68
+ - `"apikeys"` — Uses API key authentication instead of Cashu tokens; no token spending or refund flow.
69
+
70
+ ```ts
71
+ const client = new RoutstrClient(
72
+ walletAdapter,
73
+ storageAdapter,
74
+ providerRegistry,
75
+ "min", // alertLevel
76
+ "xcashu" // mode (optional, defaults to "xcashu")
77
+ );
78
+
79
+ const currentMode = client.getMode(); // Returns the active mode
80
+ ```
81
+
82
+ ## Tests
83
+
84
+ SDK unit tests live in `sdk/__tests__` and are run with Vitest.
85
+
86
+ - `sdk/__tests__/storageStore.test.ts` covers baseUrl normalization and token storage behaviors.
87
+ - `sdk/__tests__/providerManagerPricing.test.ts` covers provider price ranking and model id normalization.
88
+ - `sdk/__tests__/cashuSpender.test.ts` covers validation, token reuse, and insufficient balance handling.
89
+ - `sdk/__tests__/balanceManager.test.ts` covers refund/top-up validation and early returns.
90
+
91
+ Run:
92
+
93
+ ```bash
94
+ npm run test:sdk
95
+ ```