@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 +95 -0
- package/dist/index.d.mts +4931 -0
- package/dist/index.d.ts +4931 -0
- package/dist/index.js +3572 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3538 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +77 -0
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
|
+
```
|