@totemsdk/chain-provider 0.1.1 → 0.1.2

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.
Files changed (2) hide show
  1. package/README.md +94 -0
  2. package/package.json +3 -3
package/README.md ADDED
@@ -0,0 +1,94 @@
1
+ # @totemsdk/chain-provider
2
+
3
+ **Unified abstraction over all chain data sources.**
4
+
5
+ A strategy pattern for chain access. Any Totem SDK tool that needs on-chain data accepts a `ChainStateProvider`. Swap implementations without changing application code.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install @totemsdk/chain-provider
11
+ ```
12
+
13
+ ## What's inside
14
+
15
+ ### The interface
16
+
17
+ ```typescript
18
+ interface ChainStateProvider {
19
+ getCoins(query: CoinQuery): Promise<Coin[]>;
20
+ getCoin(id: string): Promise<Coin | null>;
21
+ getMMRProof(coinId: string): Promise<MMRProof>;
22
+ getChainTip(): Promise<ChainTip>;
23
+ getToken(id: string): Promise<Token | null>;
24
+ searchTokens(query: string): Promise<Token[]>;
25
+ broadcastTxPoW(hex: string): Promise<BroadcastResult>;
26
+ }
27
+ ```
28
+
29
+ ### Concrete implementations
30
+
31
+ | Class | Connects to |
32
+ |-------|------------|
33
+ | `HostedProvider` | Axia / MEG hosted API (requires project credentials) |
34
+ | `PureMinimaRpcProvider` | A local or self-hosted PureMinima node directly |
35
+ | `LookupNodeProvider` | A personal lookup node over Hyperswarm DHT |
36
+ | `CompositeProvider` | Fans out across multiple providers with fallback logic |
37
+
38
+ Five other packages (`omnia`, `statechain`, `lookup-node`, `lookup-client`, `chain-provider` itself) accept `ChainStateProvider` — this is the pivot point between the upper SDK and chain data.
39
+
40
+ ## Usage
41
+
42
+ ### Hosted provider (fastest setup)
43
+
44
+ ```typescript
45
+ import { HostedProvider } from '@totemsdk/chain-provider';
46
+
47
+ const provider = new HostedProvider({
48
+ baseUrl: 'https://api.axia.to',
49
+ projectId: 'your-project-id',
50
+ projectSecret: process.env.AXIA_SECRET,
51
+ });
52
+
53
+ const tip = await provider.getChainTip();
54
+ const coins = await provider.getCoins({ address: 'Mx...' });
55
+ ```
56
+
57
+ ### Self-hosted node
58
+
59
+ ```typescript
60
+ import { PureMinimaRpcProvider } from '@totemsdk/chain-provider';
61
+
62
+ const provider = new PureMinimaRpcProvider({
63
+ nodeUrl: 'http://localhost:9005',
64
+ });
65
+ ```
66
+
67
+ ### Composite with fallback
68
+
69
+ ```typescript
70
+ import { CompositeProvider, HostedProvider, PureMinimaRpcProvider } from '@totemsdk/chain-provider';
71
+
72
+ const provider = new CompositeProvider([
73
+ new PureMinimaRpcProvider({ nodeUrl: 'http://localhost:9005' }),
74
+ new HostedProvider({ baseUrl: 'https://api.axia.to', projectId: '...' }),
75
+ ]);
76
+ // Queries hit the first provider; fallback to the second on error
77
+ ```
78
+
79
+ ### Personal lookup node
80
+
81
+ ```typescript
82
+ import { LookupNodeProvider } from '@totemsdk/chain-provider';
83
+
84
+ const provider = new LookupNodeProvider({
85
+ publicKey: '...your-lookup-node-pubkey...',
86
+ });
87
+ ```
88
+
89
+ ## See also
90
+
91
+ - [`@totemsdk/pureminima-rpc`](../pureminima-rpc) — the RPC client used by `PureMinimaRpcProvider`
92
+ - [`@totemsdk/lookup-client`](../lookup-client) — `LookupClientProvider` implementation
93
+ - [`@totemsdk/node`](../node) — Node.js `MinimaProvider`
94
+ - [`@totemsdk/omnia`](../omnia) — uses `ChainStateProvider` for coin queries
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@totemsdk/chain-provider",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Unified ChainStateProvider interface for Totem SDK — Hosted, PureMinima, Composite",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -16,8 +16,8 @@
16
16
  "src"
17
17
  ],
18
18
  "dependencies": {
19
- "@totemsdk/core": "1.0.6",
20
- "@totemsdk/pureminima-rpc": "0.1.1"
19
+ "@totemsdk/core": "1.0.9",
20
+ "@totemsdk/pureminima-rpc": "0.1.2"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@noble/hashes": "^1.3.0",