@opendatalabs/vana-sdk 0.1.0-alpha.360fe17
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/LICENSE +15 -0
- package/README.md +375 -0
- package/dist/chains.browser.cjs +96 -0
- package/dist/chains.browser.cjs.map +1 -0
- package/dist/chains.browser.d.cts +53 -0
- package/dist/chains.browser.d.ts +53 -0
- package/dist/chains.browser.js +65 -0
- package/dist/chains.browser.js.map +1 -0
- package/dist/chains.cjs +96 -0
- package/dist/chains.cjs.map +1 -0
- package/dist/chains.d.cts +2 -0
- package/dist/chains.d.ts +2 -0
- package/dist/chains.js +65 -0
- package/dist/chains.js.map +1 -0
- package/dist/chains.node.cjs +96 -0
- package/dist/chains.node.cjs.map +1 -0
- package/dist/chains.node.d.cts +2 -0
- package/dist/chains.node.d.ts +2 -0
- package/dist/chains.node.js +65 -0
- package/dist/chains.node.js.map +1 -0
- package/dist/index.browser.d.ts +37236 -0
- package/dist/index.browser.js +44394 -0
- package/dist/index.browser.js.map +1 -0
- package/dist/index.d.cts +2 -0
- package/dist/index.node.cjs +44914 -0
- package/dist/index.node.cjs.map +1 -0
- package/dist/index.node.d.cts +37370 -0
- package/dist/index.node.d.ts +37370 -0
- package/dist/index.node.js +44774 -0
- package/dist/index.node.js.map +1 -0
- package/dist/platform.browser.d.ts +293 -0
- package/dist/platform.browser.js +365 -0
- package/dist/platform.browser.js.map +1 -0
- package/dist/platform.cjs +734 -0
- package/dist/platform.cjs.map +1 -0
- package/dist/platform.d.cts +1 -0
- package/dist/platform.d.ts +1 -0
- package/dist/platform.js +697 -0
- package/dist/platform.js.map +1 -0
- package/dist/platform.node.cjs +734 -0
- package/dist/platform.node.cjs.map +1 -0
- package/dist/platform.node.d.cts +334 -0
- package/dist/platform.node.d.ts +334 -0
- package/dist/platform.node.js +697 -0
- package/dist/platform.node.js.map +1 -0
- package/package.json +130 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
ISC License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025, Vana
|
|
4
|
+
|
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
7
|
+
copyright notice and this permission notice appear in all copies.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
10
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
11
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
12
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
13
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
14
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
15
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
# Vana SDK
|
|
2
|
+
|
|
3
|
+
> **⚠️ ALPHA SOFTWARE - EXPERIMENTAL USE ONLY**
|
|
4
|
+
>
|
|
5
|
+
> This SDK is in early alpha development and is **NOT SUITABLE FOR PRODUCTION USE**.
|
|
6
|
+
> Features may change without notice, and data loss or unexpected behavior may occur.
|
|
7
|
+
> Use at your own risk and avoid using with mainnet assets or critical operations.
|
|
8
|
+
|
|
9
|
+
A TypeScript SDK for building data-driven applications on the Vana Network. Enable users to grant gasless permissions, manage encrypted data, and interact with privacy-preserving infrastructure.
|
|
10
|
+
|
|
11
|
+
[](https://www.npmjs.com/package/@opendatalabs/vana-sdk)
|
|
12
|
+
[](https://www.typescriptlang.org/)
|
|
13
|
+
[](https://opensource.org/licenses/ISC)
|
|
14
|
+
|
|
15
|
+
[API Documentation](https://vana-com.github.io/vana-sdk) • [Examples](#examples) • [Configuration](#configuration)
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install @opendatalabs/vana-sdk
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Peer Dependencies:**
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install viem@^2.31.7
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
30
|
+
|
|
31
|
+
The Vana SDK supports both browser and Node.js environments with explicit entry points:
|
|
32
|
+
|
|
33
|
+
### Browser Applications (React, Vue, etc.)
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
// For browser-based applications (React, Vue, etc.)
|
|
37
|
+
import { Vana, mokshaTestnet } from "@opendatalabs/vana-sdk/browser";
|
|
38
|
+
import { createWalletClient, http } from "viem";
|
|
39
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
40
|
+
|
|
41
|
+
// Create wallet client
|
|
42
|
+
const account = privateKeyToAccount("0x...");
|
|
43
|
+
const walletClient = createWalletClient({
|
|
44
|
+
account,
|
|
45
|
+
chain: mokshaTestnet,
|
|
46
|
+
transport: http("https://rpc.moksha.vana.org"),
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// Initialize SDK
|
|
50
|
+
const vana = Vana({
|
|
51
|
+
walletClient,
|
|
52
|
+
relayerUrl: "https://relayer.moksha.vana.org",
|
|
53
|
+
});
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Server-side Applications (Next.js API routes, Express)
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// For server-side applications (Next.js API routes, Express)
|
|
60
|
+
import { Vana, mokshaTestnet } from "@opendatalabs/vana-sdk/node";
|
|
61
|
+
import { createWalletClient, http } from "viem";
|
|
62
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
63
|
+
|
|
64
|
+
// Create wallet client
|
|
65
|
+
const account = privateKeyToAccount("0x...");
|
|
66
|
+
const walletClient = createWalletClient({
|
|
67
|
+
account,
|
|
68
|
+
chain: mokshaTestnet,
|
|
69
|
+
transport: http("https://rpc.moksha.vana.org"),
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// Initialize SDK
|
|
73
|
+
const vana = Vana({
|
|
74
|
+
walletClient,
|
|
75
|
+
relayerUrl: "https://relayer.moksha.vana.org",
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Grant gasless permission
|
|
79
|
+
const txHash = await vana.permissions.grant({
|
|
80
|
+
grantee: "0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36",
|
|
81
|
+
operation: "llm_inference",
|
|
82
|
+
parameters: {
|
|
83
|
+
prompt: "Analyze my data for insights",
|
|
84
|
+
maxTokens: 1000,
|
|
85
|
+
},
|
|
86
|
+
expiresAt: Math.floor(Date.now() / 1000) + 86400, // 24 hours
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Core Features
|
|
91
|
+
|
|
92
|
+
### Gasless Permissions
|
|
93
|
+
|
|
94
|
+
Users can grant data access permissions without paying gas fees through EIP-712 signatures and relay infrastructure.
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
// Grant permission with custom parameters
|
|
98
|
+
await vana.permissions.grant({
|
|
99
|
+
grantee: applicationAddress,
|
|
100
|
+
operation: "data_analysis",
|
|
101
|
+
parameters: {
|
|
102
|
+
analysisType: "sentiment",
|
|
103
|
+
files: [12, 15, 28],
|
|
104
|
+
model: "gpt-4",
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Encrypted Data Management
|
|
110
|
+
|
|
111
|
+
Upload, query, and manage encrypted user data files with built-in schema validation.
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
// Query user files
|
|
115
|
+
const files = await vana.data.getUserFiles({
|
|
116
|
+
owner: "0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36",
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// Upload encrypted file with decryption permissions
|
|
120
|
+
const result = await vana.data.upload({
|
|
121
|
+
content: "Sensitive user data",
|
|
122
|
+
filename: "user-data.json",
|
|
123
|
+
schemaId: 123,
|
|
124
|
+
permissions: [
|
|
125
|
+
{
|
|
126
|
+
account: "0xServerAddress...", // Who can decrypt
|
|
127
|
+
publicKey: "0x04ServerKey...", // Their public key
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
});
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Flexible Storage
|
|
134
|
+
|
|
135
|
+
Abstract storage layer supporting IPFS, Google Drive, and custom providers.
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
// For browser applications
|
|
139
|
+
import { StorageManager, PinataStorage } from "@opendatalabs/vana-sdk/browser";
|
|
140
|
+
// OR for server-side applications
|
|
141
|
+
// import { StorageManager, PinataStorage } from "@opendatalabs/vana-sdk/node";
|
|
142
|
+
|
|
143
|
+
const storageManager = new StorageManager();
|
|
144
|
+
storageManager.register(
|
|
145
|
+
"ipfs",
|
|
146
|
+
new PinataStorage({
|
|
147
|
+
apiKey: process.env.PINATA_API_KEY,
|
|
148
|
+
secretKey: process.env.PINATA_SECRET_KEY,
|
|
149
|
+
}),
|
|
150
|
+
);
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Architecture
|
|
154
|
+
|
|
155
|
+
The SDK provides four main controllers:
|
|
156
|
+
|
|
157
|
+
| Controller | Purpose | Key Methods |
|
|
158
|
+
| ------------- | ------------------------------ | ----------------------------------------------------------------- |
|
|
159
|
+
| `permissions` | Gasless permission management | `grant()`, `revoke()`, `getUserPermissions()` |
|
|
160
|
+
| `data` | File management and validation | `getUserFiles()`, `uploadEncryptedFile()`, `validateDataSchema()` |
|
|
161
|
+
| `server` | Trusted server operations | `trustServer()`, `processWithTrustedServer()` |
|
|
162
|
+
| `protocol` | Contract interaction | `getContract()`, `getAvailableContracts()` |
|
|
163
|
+
|
|
164
|
+
## Configuration
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
const vana = Vana({
|
|
168
|
+
walletClient,
|
|
169
|
+
|
|
170
|
+
// Gasless transaction relay
|
|
171
|
+
relayerUrl: "https://relayer.moksha.vana.org",
|
|
172
|
+
|
|
173
|
+
// Custom relay callbacks
|
|
174
|
+
relayerCallbacks: {
|
|
175
|
+
submitPermissionGrant: async (typedData, signature) => {
|
|
176
|
+
return await customRelayer.submit(typedData, signature);
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
|
|
180
|
+
// Storage configuration
|
|
181
|
+
storageManager: new StorageManager({
|
|
182
|
+
defaultProvider: "ipfs",
|
|
183
|
+
providers: {
|
|
184
|
+
ipfs: new PinataStorage({ apiKey: "...", secretKey: "..." }),
|
|
185
|
+
},
|
|
186
|
+
}),
|
|
187
|
+
|
|
188
|
+
// Subgraph for efficient queries
|
|
189
|
+
subgraphUrl: "https://api.thegraph.com/subgraphs/name/vana/moksha",
|
|
190
|
+
});
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Error Handling
|
|
194
|
+
|
|
195
|
+
The SDK provides specific error types for different failure scenarios:
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
import {
|
|
199
|
+
RelayerError,
|
|
200
|
+
UserRejectedRequestError,
|
|
201
|
+
SchemaValidationError,
|
|
202
|
+
NetworkError,
|
|
203
|
+
} from "@opendatalabs/vana-sdk/browser";
|
|
204
|
+
// OR for server-side applications
|
|
205
|
+
// } from "@opendatalabs/vana-sdk/node";
|
|
206
|
+
|
|
207
|
+
try {
|
|
208
|
+
await vana.permissions.grant(params);
|
|
209
|
+
} catch (error) {
|
|
210
|
+
if (error instanceof UserRejectedRequestError) {
|
|
211
|
+
// User cancelled transaction
|
|
212
|
+
} else if (error instanceof RelayerError) {
|
|
213
|
+
// Relayer service error
|
|
214
|
+
} else if (error instanceof SchemaValidationError) {
|
|
215
|
+
// Schema validation failed
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Supported Networks
|
|
221
|
+
|
|
222
|
+
| Network | Chain ID | RPC URL |
|
|
223
|
+
| ------------------ | -------- | ----------------------------- |
|
|
224
|
+
| **Vana Mainnet** | `1480` | `https://rpc.vana.org` |
|
|
225
|
+
| **Moksha Testnet** | `14800` | `https://rpc.moksha.vana.org` |
|
|
226
|
+
|
|
227
|
+
## Examples
|
|
228
|
+
|
|
229
|
+
### Complete Data Sharing Flow
|
|
230
|
+
|
|
231
|
+
```typescript
|
|
232
|
+
import { Vana } from "@opendatalabs/vana-sdk/browser";
|
|
233
|
+
// OR for server-side applications
|
|
234
|
+
// } from "@opendatalabs/vana-sdk/node";
|
|
235
|
+
|
|
236
|
+
async function shareDataWithServer() {
|
|
237
|
+
const vana = Vana({ walletClient });
|
|
238
|
+
|
|
239
|
+
// Step 1: Upload encrypted file with decryption permissions
|
|
240
|
+
const uploadResult = await vana.data.upload({
|
|
241
|
+
content: { data: "sensitive medical records" },
|
|
242
|
+
filename: "health-data.json",
|
|
243
|
+
schemaId: 123,
|
|
244
|
+
permissions: [
|
|
245
|
+
{
|
|
246
|
+
// Grant decryption access to the AI server
|
|
247
|
+
account: "0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36",
|
|
248
|
+
publicKey: "0x04abc...", // Server's public key for encryption
|
|
249
|
+
},
|
|
250
|
+
],
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
// Step 2: Grant operation permissions for what the server can do
|
|
254
|
+
const permissionResult = await vana.permissions.grant({
|
|
255
|
+
grantee: "0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36",
|
|
256
|
+
fileIds: [BigInt(uploadResult.fileId)],
|
|
257
|
+
operation: "medical_analysis",
|
|
258
|
+
parameters: {
|
|
259
|
+
model: "medical-ai-v2",
|
|
260
|
+
analysisType: "comprehensive",
|
|
261
|
+
},
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
return { uploadResult, permissionResult };
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Schema Validation
|
|
269
|
+
|
|
270
|
+
```typescript
|
|
271
|
+
// Define data schema
|
|
272
|
+
const schema = {
|
|
273
|
+
name: "Social Media Export",
|
|
274
|
+
version: "1.0.0",
|
|
275
|
+
dialect: "json",
|
|
276
|
+
schema: {
|
|
277
|
+
type: "object",
|
|
278
|
+
properties: {
|
|
279
|
+
posts: { type: "array" },
|
|
280
|
+
profile: { type: "object" },
|
|
281
|
+
},
|
|
282
|
+
required: ["profile"],
|
|
283
|
+
},
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
// Validate schema
|
|
287
|
+
vana.data.validateDataSchema(schema);
|
|
288
|
+
|
|
289
|
+
// Validate user data
|
|
290
|
+
const userData = {
|
|
291
|
+
profile: { username: "alice" },
|
|
292
|
+
posts: [],
|
|
293
|
+
};
|
|
294
|
+
vana.data.validateDataAgainstSchema(userData, schema);
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## API Reference
|
|
298
|
+
|
|
299
|
+
### Permissions
|
|
300
|
+
|
|
301
|
+
```typescript
|
|
302
|
+
// Grant operation permission
|
|
303
|
+
await vana.permissions.grant({
|
|
304
|
+
grantee: Address,
|
|
305
|
+
fileIds: bigint[],
|
|
306
|
+
operation: string,
|
|
307
|
+
parameters: object,
|
|
308
|
+
expiresAt?: number
|
|
309
|
+
}): Promise<PermissionGrantResult>
|
|
310
|
+
|
|
311
|
+
// Revoke permission
|
|
312
|
+
await vana.permissions.revoke({
|
|
313
|
+
grantId: string
|
|
314
|
+
}): Promise<Hash>
|
|
315
|
+
|
|
316
|
+
// Get user permissions
|
|
317
|
+
await vana.permissions.getUserPermissions({
|
|
318
|
+
owner: Address
|
|
319
|
+
}): Promise<GrantedPermission[]>
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Data
|
|
323
|
+
|
|
324
|
+
```typescript
|
|
325
|
+
// Get user files
|
|
326
|
+
await vana.data.getUserFiles({
|
|
327
|
+
owner: Address
|
|
328
|
+
}): Promise<UserFile[]>
|
|
329
|
+
|
|
330
|
+
// Upload data with automatic encryption
|
|
331
|
+
await vana.data.upload({
|
|
332
|
+
content: string | Blob | Buffer,
|
|
333
|
+
filename?: string,
|
|
334
|
+
schemaId?: number,
|
|
335
|
+
permissions?: Array<{
|
|
336
|
+
account: Address, // Who can decrypt
|
|
337
|
+
publicKey: string // Their public key
|
|
338
|
+
}>,
|
|
339
|
+
encrypt?: boolean // Default: true
|
|
340
|
+
}): Promise<UploadResult>
|
|
341
|
+
|
|
342
|
+
// Validate schema
|
|
343
|
+
vana.data.validateDataSchema(schema: unknown): void
|
|
344
|
+
|
|
345
|
+
// Validate data against schema
|
|
346
|
+
vana.data.validateDataAgainstSchema(data: unknown, schema: DataSchema): void
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
## Documentation
|
|
350
|
+
|
|
351
|
+
- [API Documentation](https://vana-com.github.io/vana-sdk) - Complete TypeDoc API reference
|
|
352
|
+
- [Getting Started](https://vana-com.github.io/vana-sdk/getting-started) - Step-by-step setup guide
|
|
353
|
+
- [Architecture](https://vana-com.github.io/vana-sdk/architecture) - SDK design and patterns
|
|
354
|
+
- [Configuration](https://vana-com.github.io/vana-sdk/configuration) - All configuration options
|
|
355
|
+
- [Security](https://vana-com.github.io/vana-sdk/security) - Best practices and security
|
|
356
|
+
|
|
357
|
+
## Support
|
|
358
|
+
|
|
359
|
+
- **Documentation**: [vana-com.github.io/vana-sdk](https://vana-com.github.io/vana-sdk)
|
|
360
|
+
- **Issues**: [GitHub Issues](https://github.com/vana-com/vana-sdk/issues)
|
|
361
|
+
- **Discord**: [Join our community](https://discord.gg/vanabuilders)
|
|
362
|
+
|
|
363
|
+
## Development
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
git clone https://github.com/vana-com/vana-sdk.git
|
|
367
|
+
cd vana-sdk
|
|
368
|
+
npm install
|
|
369
|
+
npm run build
|
|
370
|
+
npm test
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## License
|
|
374
|
+
|
|
375
|
+
[ISC License](LICENSE) © Vana Foundation
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/chains.browser.ts
|
|
21
|
+
var chains_browser_exports = {};
|
|
22
|
+
__export(chains_browser_exports, {
|
|
23
|
+
getAllChains: () => getAllChains,
|
|
24
|
+
getChainConfig: () => getChainConfig,
|
|
25
|
+
moksha: () => moksha,
|
|
26
|
+
mokshaTestnet: () => mokshaTestnet,
|
|
27
|
+
vanaMainnet: () => vanaMainnet
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(chains_browser_exports);
|
|
30
|
+
|
|
31
|
+
// src/chains/definitions.ts
|
|
32
|
+
var vanaMainnet = {
|
|
33
|
+
id: 1480,
|
|
34
|
+
name: "Vana",
|
|
35
|
+
nativeCurrency: {
|
|
36
|
+
name: "VANA",
|
|
37
|
+
symbol: "VANA",
|
|
38
|
+
decimals: 18
|
|
39
|
+
},
|
|
40
|
+
rpcUrls: {
|
|
41
|
+
default: {
|
|
42
|
+
http: ["https://rpc.vana.org"]
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
blockExplorers: {
|
|
46
|
+
default: {
|
|
47
|
+
name: "Vanascan",
|
|
48
|
+
url: "https://vanascan.io"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
subgraphUrl: "https://api.goldsky.com/api/public/project_cm168cz887zva010j39il7a6p/subgraphs/vana/7.0.6/gn"
|
|
52
|
+
};
|
|
53
|
+
var moksha = {
|
|
54
|
+
id: 14800,
|
|
55
|
+
name: "Moksha Testnet",
|
|
56
|
+
nativeCurrency: {
|
|
57
|
+
name: "VANA",
|
|
58
|
+
symbol: "VANA",
|
|
59
|
+
decimals: 18
|
|
60
|
+
},
|
|
61
|
+
rpcUrls: {
|
|
62
|
+
default: {
|
|
63
|
+
http: ["https://rpc.moksha.vana.org"]
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
blockExplorers: {
|
|
67
|
+
default: {
|
|
68
|
+
name: "Vanascan - Moksha",
|
|
69
|
+
url: "https://moksha.vanascan.io"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
subgraphUrl: "https://api.goldsky.com/api/public/project_cm168cz887zva010j39il7a6p/subgraphs/moksha/7.0.6/gn"
|
|
73
|
+
};
|
|
74
|
+
function getChainConfig(chainId) {
|
|
75
|
+
switch (chainId) {
|
|
76
|
+
case 1480:
|
|
77
|
+
return vanaMainnet;
|
|
78
|
+
case 14800:
|
|
79
|
+
return moksha;
|
|
80
|
+
default:
|
|
81
|
+
return void 0;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
var mokshaTestnet = moksha;
|
|
85
|
+
function getAllChains() {
|
|
86
|
+
return [vanaMainnet, moksha];
|
|
87
|
+
}
|
|
88
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
89
|
+
0 && (module.exports = {
|
|
90
|
+
getAllChains,
|
|
91
|
+
getChainConfig,
|
|
92
|
+
moksha,
|
|
93
|
+
mokshaTestnet,
|
|
94
|
+
vanaMainnet
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=chains.browser.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/chains.browser.ts","../src/chains/definitions.ts"],"sourcesContent":["/**\n * Browser-specific chains entry point\n *\n * This is identical to the base chains export since chain configurations\n * are environment-agnostic.\n */\n\nexport type { VanaChainConfig } from \"./chains/definitions\";\nexport {\n vanaMainnet,\n moksha,\n mokshaTestnet,\n getChainConfig,\n getAllChains,\n} from \"./chains/definitions\";\n","/**\n * Chain configuration definitions for Vana networks\n *\n * These provide default configurations for known Vana chains.\n * Applications can use these as-is or override specific values.\n */\n\nimport type { Chain } from \"viem\";\n\nexport interface VanaChainConfig extends Chain {\n /** URL for the subgraph API endpoint used to query on-chain data */\n subgraphUrl: string;\n}\n\n/**\n * Vana Mainnet configuration\n */\nexport const vanaMainnet: VanaChainConfig = {\n id: 1480,\n name: \"Vana\",\n nativeCurrency: {\n name: \"VANA\",\n symbol: \"VANA\",\n decimals: 18,\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.vana.org\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Vanascan\",\n url: \"https://vanascan.io\",\n },\n },\n subgraphUrl:\n \"https://api.goldsky.com/api/public/project_cm168cz887zva010j39il7a6p/subgraphs/vana/7.0.6/gn\",\n} as const;\n\n/**\n * Moksha Testnet configuration\n */\nexport const moksha: VanaChainConfig = {\n id: 14800,\n name: \"Moksha Testnet\",\n nativeCurrency: {\n name: \"VANA\",\n symbol: \"VANA\",\n decimals: 18,\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.moksha.vana.org\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Vanascan - Moksha\",\n url: \"https://moksha.vanascan.io\",\n },\n },\n subgraphUrl:\n \"https://api.goldsky.com/api/public/project_cm168cz887zva010j39il7a6p/subgraphs/moksha/7.0.6/gn\",\n} as const;\n\n/**\n * Retrieves the chain configuration for a given chain ID.\n *\n * @param chainId - The numeric chain ID to look up\n * @returns The chain configuration if found, undefined otherwise\n * @example\n * ```typescript\n * const config = getChainConfig(1480);\n * if (config) {\n * console.log('Chain name:', config.name);\n * console.log('Subgraph URL:', config.subgraphUrl);\n * }\n * ```\n */\nexport function getChainConfig(chainId: number): VanaChainConfig | undefined {\n switch (chainId) {\n case 1480:\n return vanaMainnet;\n case 14800:\n return moksha;\n default:\n return undefined;\n }\n}\n\n// Backwards compatibility alias\nexport const mokshaTestnet = moksha;\n\n/**\n * Retrieves all available Vana chain configurations.\n *\n * @returns Array of all supported Vana chain configurations\n * @example\n * ```typescript\n * const chains = getAllChains();\n * console.log('Supported chains:');\n * chains.forEach(chain => {\n * console.log(`- ${chain.name} (ID: ${chain.id})`);\n * });\n * ```\n */\nexport function getAllChains(): VanaChainConfig[] {\n return [vanaMainnet, moksha];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACiBO,IAAM,cAA+B;AAAA,EAC1C,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,MACP,MAAM,CAAC,sBAAsB;AAAA,IAC/B;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,SAAS;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,aACE;AACJ;AAKO,IAAM,SAA0B;AAAA,EACrC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,MACP,MAAM,CAAC,6BAA6B;AAAA,IACtC;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,SAAS;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,aACE;AACJ;AAgBO,SAAS,eAAe,SAA8C;AAC3E,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAGO,IAAM,gBAAgB;AAetB,SAAS,eAAkC;AAChD,SAAO,CAAC,aAAa,MAAM;AAC7B;","names":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Chain } from 'viem';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Chain configuration definitions for Vana networks
|
|
5
|
+
*
|
|
6
|
+
* These provide default configurations for known Vana chains.
|
|
7
|
+
* Applications can use these as-is or override specific values.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
interface VanaChainConfig extends Chain {
|
|
11
|
+
/** URL for the subgraph API endpoint used to query on-chain data */
|
|
12
|
+
subgraphUrl: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Vana Mainnet configuration
|
|
16
|
+
*/
|
|
17
|
+
declare const vanaMainnet: VanaChainConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Moksha Testnet configuration
|
|
20
|
+
*/
|
|
21
|
+
declare const moksha: VanaChainConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Retrieves the chain configuration for a given chain ID.
|
|
24
|
+
*
|
|
25
|
+
* @param chainId - The numeric chain ID to look up
|
|
26
|
+
* @returns The chain configuration if found, undefined otherwise
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const config = getChainConfig(1480);
|
|
30
|
+
* if (config) {
|
|
31
|
+
* console.log('Chain name:', config.name);
|
|
32
|
+
* console.log('Subgraph URL:', config.subgraphUrl);
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
declare function getChainConfig(chainId: number): VanaChainConfig | undefined;
|
|
37
|
+
declare const mokshaTestnet: VanaChainConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Retrieves all available Vana chain configurations.
|
|
40
|
+
*
|
|
41
|
+
* @returns Array of all supported Vana chain configurations
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const chains = getAllChains();
|
|
45
|
+
* console.log('Supported chains:');
|
|
46
|
+
* chains.forEach(chain => {
|
|
47
|
+
* console.log(`- ${chain.name} (ID: ${chain.id})`);
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
declare function getAllChains(): VanaChainConfig[];
|
|
52
|
+
|
|
53
|
+
export { type VanaChainConfig, getAllChains, getChainConfig, moksha, mokshaTestnet, vanaMainnet };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Chain } from 'viem';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Chain configuration definitions for Vana networks
|
|
5
|
+
*
|
|
6
|
+
* These provide default configurations for known Vana chains.
|
|
7
|
+
* Applications can use these as-is or override specific values.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
interface VanaChainConfig extends Chain {
|
|
11
|
+
/** URL for the subgraph API endpoint used to query on-chain data */
|
|
12
|
+
subgraphUrl: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Vana Mainnet configuration
|
|
16
|
+
*/
|
|
17
|
+
declare const vanaMainnet: VanaChainConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Moksha Testnet configuration
|
|
20
|
+
*/
|
|
21
|
+
declare const moksha: VanaChainConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Retrieves the chain configuration for a given chain ID.
|
|
24
|
+
*
|
|
25
|
+
* @param chainId - The numeric chain ID to look up
|
|
26
|
+
* @returns The chain configuration if found, undefined otherwise
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const config = getChainConfig(1480);
|
|
30
|
+
* if (config) {
|
|
31
|
+
* console.log('Chain name:', config.name);
|
|
32
|
+
* console.log('Subgraph URL:', config.subgraphUrl);
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
declare function getChainConfig(chainId: number): VanaChainConfig | undefined;
|
|
37
|
+
declare const mokshaTestnet: VanaChainConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Retrieves all available Vana chain configurations.
|
|
40
|
+
*
|
|
41
|
+
* @returns Array of all supported Vana chain configurations
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const chains = getAllChains();
|
|
45
|
+
* console.log('Supported chains:');
|
|
46
|
+
* chains.forEach(chain => {
|
|
47
|
+
* console.log(`- ${chain.name} (ID: ${chain.id})`);
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
declare function getAllChains(): VanaChainConfig[];
|
|
52
|
+
|
|
53
|
+
export { type VanaChainConfig, getAllChains, getChainConfig, moksha, mokshaTestnet, vanaMainnet };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// src/chains/definitions.ts
|
|
2
|
+
var vanaMainnet = {
|
|
3
|
+
id: 1480,
|
|
4
|
+
name: "Vana",
|
|
5
|
+
nativeCurrency: {
|
|
6
|
+
name: "VANA",
|
|
7
|
+
symbol: "VANA",
|
|
8
|
+
decimals: 18
|
|
9
|
+
},
|
|
10
|
+
rpcUrls: {
|
|
11
|
+
default: {
|
|
12
|
+
http: ["https://rpc.vana.org"]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
blockExplorers: {
|
|
16
|
+
default: {
|
|
17
|
+
name: "Vanascan",
|
|
18
|
+
url: "https://vanascan.io"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
subgraphUrl: "https://api.goldsky.com/api/public/project_cm168cz887zva010j39il7a6p/subgraphs/vana/7.0.6/gn"
|
|
22
|
+
};
|
|
23
|
+
var moksha = {
|
|
24
|
+
id: 14800,
|
|
25
|
+
name: "Moksha Testnet",
|
|
26
|
+
nativeCurrency: {
|
|
27
|
+
name: "VANA",
|
|
28
|
+
symbol: "VANA",
|
|
29
|
+
decimals: 18
|
|
30
|
+
},
|
|
31
|
+
rpcUrls: {
|
|
32
|
+
default: {
|
|
33
|
+
http: ["https://rpc.moksha.vana.org"]
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
blockExplorers: {
|
|
37
|
+
default: {
|
|
38
|
+
name: "Vanascan - Moksha",
|
|
39
|
+
url: "https://moksha.vanascan.io"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
subgraphUrl: "https://api.goldsky.com/api/public/project_cm168cz887zva010j39il7a6p/subgraphs/moksha/7.0.6/gn"
|
|
43
|
+
};
|
|
44
|
+
function getChainConfig(chainId) {
|
|
45
|
+
switch (chainId) {
|
|
46
|
+
case 1480:
|
|
47
|
+
return vanaMainnet;
|
|
48
|
+
case 14800:
|
|
49
|
+
return moksha;
|
|
50
|
+
default:
|
|
51
|
+
return void 0;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
var mokshaTestnet = moksha;
|
|
55
|
+
function getAllChains() {
|
|
56
|
+
return [vanaMainnet, moksha];
|
|
57
|
+
}
|
|
58
|
+
export {
|
|
59
|
+
getAllChains,
|
|
60
|
+
getChainConfig,
|
|
61
|
+
moksha,
|
|
62
|
+
mokshaTestnet,
|
|
63
|
+
vanaMainnet
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=chains.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/chains/definitions.ts"],"sourcesContent":["/**\n * Chain configuration definitions for Vana networks\n *\n * These provide default configurations for known Vana chains.\n * Applications can use these as-is or override specific values.\n */\n\nimport type { Chain } from \"viem\";\n\nexport interface VanaChainConfig extends Chain {\n /** URL for the subgraph API endpoint used to query on-chain data */\n subgraphUrl: string;\n}\n\n/**\n * Vana Mainnet configuration\n */\nexport const vanaMainnet: VanaChainConfig = {\n id: 1480,\n name: \"Vana\",\n nativeCurrency: {\n name: \"VANA\",\n symbol: \"VANA\",\n decimals: 18,\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.vana.org\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Vanascan\",\n url: \"https://vanascan.io\",\n },\n },\n subgraphUrl:\n \"https://api.goldsky.com/api/public/project_cm168cz887zva010j39il7a6p/subgraphs/vana/7.0.6/gn\",\n} as const;\n\n/**\n * Moksha Testnet configuration\n */\nexport const moksha: VanaChainConfig = {\n id: 14800,\n name: \"Moksha Testnet\",\n nativeCurrency: {\n name: \"VANA\",\n symbol: \"VANA\",\n decimals: 18,\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.moksha.vana.org\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Vanascan - Moksha\",\n url: \"https://moksha.vanascan.io\",\n },\n },\n subgraphUrl:\n \"https://api.goldsky.com/api/public/project_cm168cz887zva010j39il7a6p/subgraphs/moksha/7.0.6/gn\",\n} as const;\n\n/**\n * Retrieves the chain configuration for a given chain ID.\n *\n * @param chainId - The numeric chain ID to look up\n * @returns The chain configuration if found, undefined otherwise\n * @example\n * ```typescript\n * const config = getChainConfig(1480);\n * if (config) {\n * console.log('Chain name:', config.name);\n * console.log('Subgraph URL:', config.subgraphUrl);\n * }\n * ```\n */\nexport function getChainConfig(chainId: number): VanaChainConfig | undefined {\n switch (chainId) {\n case 1480:\n return vanaMainnet;\n case 14800:\n return moksha;\n default:\n return undefined;\n }\n}\n\n// Backwards compatibility alias\nexport const mokshaTestnet = moksha;\n\n/**\n * Retrieves all available Vana chain configurations.\n *\n * @returns Array of all supported Vana chain configurations\n * @example\n * ```typescript\n * const chains = getAllChains();\n * console.log('Supported chains:');\n * chains.forEach(chain => {\n * console.log(`- ${chain.name} (ID: ${chain.id})`);\n * });\n * ```\n */\nexport function getAllChains(): VanaChainConfig[] {\n return [vanaMainnet, moksha];\n}\n"],"mappings":";AAiBO,IAAM,cAA+B;AAAA,EAC1C,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,MACP,MAAM,CAAC,sBAAsB;AAAA,IAC/B;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,SAAS;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,aACE;AACJ;AAKO,IAAM,SAA0B;AAAA,EACrC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,MACP,MAAM,CAAC,6BAA6B;AAAA,IACtC;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,SAAS;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,aACE;AACJ;AAgBO,SAAS,eAAe,SAA8C;AAC3E,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAGO,IAAM,gBAAgB;AAetB,SAAS,eAAkC;AAChD,SAAO,CAAC,aAAa,MAAM;AAC7B;","names":[]}
|