@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.
Files changed (46) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +375 -0
  3. package/dist/chains.browser.cjs +96 -0
  4. package/dist/chains.browser.cjs.map +1 -0
  5. package/dist/chains.browser.d.cts +53 -0
  6. package/dist/chains.browser.d.ts +53 -0
  7. package/dist/chains.browser.js +65 -0
  8. package/dist/chains.browser.js.map +1 -0
  9. package/dist/chains.cjs +96 -0
  10. package/dist/chains.cjs.map +1 -0
  11. package/dist/chains.d.cts +2 -0
  12. package/dist/chains.d.ts +2 -0
  13. package/dist/chains.js +65 -0
  14. package/dist/chains.js.map +1 -0
  15. package/dist/chains.node.cjs +96 -0
  16. package/dist/chains.node.cjs.map +1 -0
  17. package/dist/chains.node.d.cts +2 -0
  18. package/dist/chains.node.d.ts +2 -0
  19. package/dist/chains.node.js +65 -0
  20. package/dist/chains.node.js.map +1 -0
  21. package/dist/index.browser.d.ts +37236 -0
  22. package/dist/index.browser.js +44394 -0
  23. package/dist/index.browser.js.map +1 -0
  24. package/dist/index.d.cts +2 -0
  25. package/dist/index.node.cjs +44914 -0
  26. package/dist/index.node.cjs.map +1 -0
  27. package/dist/index.node.d.cts +37370 -0
  28. package/dist/index.node.d.ts +37370 -0
  29. package/dist/index.node.js +44774 -0
  30. package/dist/index.node.js.map +1 -0
  31. package/dist/platform.browser.d.ts +293 -0
  32. package/dist/platform.browser.js +365 -0
  33. package/dist/platform.browser.js.map +1 -0
  34. package/dist/platform.cjs +734 -0
  35. package/dist/platform.cjs.map +1 -0
  36. package/dist/platform.d.cts +1 -0
  37. package/dist/platform.d.ts +1 -0
  38. package/dist/platform.js +697 -0
  39. package/dist/platform.js.map +1 -0
  40. package/dist/platform.node.cjs +734 -0
  41. package/dist/platform.node.cjs.map +1 -0
  42. package/dist/platform.node.d.cts +334 -0
  43. package/dist/platform.node.d.ts +334 -0
  44. package/dist/platform.node.js +697 -0
  45. package/dist/platform.node.js.map +1 -0
  46. 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
+ [![npm version](https://img.shields.io/npm/v/@opendatalabs/vana-sdk)](https://www.npmjs.com/package/@opendatalabs/vana-sdk)
12
+ [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue)](https://www.typescriptlang.org/)
13
+ [![License: ISC](https://img.shields.io/badge/License-ISC-green.svg)](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":[]}