Vana SDK - v2.2.2
    Preparing search index...

    Function Vana

    • Creates a new Vana SDK instance configured for Node.js environments.

      Parameters

      Returns VanaNodeImpl & StorageRequiredMarker & RelayerRequiredMarker

      A fully configured Vana SDK instance for Node.js use

      This is the primary entry point for Node.js applications using the Vana SDK. The function automatically detects your configuration type and provides compile-time type safety:

      • With storage configured: All methods including file upload/download are available
      • Without storage: Storage-dependent methods throw runtime errors and are excluded from TypeScript

      The Node.js version provides enhanced capabilities including native file system access, server-side cryptographic operations, and support for personal server deployment. It includes all browser capabilities plus Node.js-specific optimizations and utilities.

      When configuration parameters are invalid or missing

      import { Vana } from '@opendatalabs/vana-sdk/node';
      import { createWalletClient, http } from 'viem';
      import { privateKeyToAccount } from 'viem/accounts';
      import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';
      import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';

      // Server setup with private key
      const account = privateKeyToAccount('0x...');
      const walletClient = createWalletClient({
      account,
      chain: mokshaTestnet,
      transport: http('https://rpc.moksha.vana.org')
      });

      const vana = Vana({
      walletClient,
      storage: {
      providers: {
      ipfs: new IPFSStorage({
      gateway: 'https://gateway.pinata.cloud',
      timeout: 30000
      }),
      pinata: new PinataStorage({
      apiKey: process.env.PINATA_KEY,
      secretKey: process.env.PINATA_SECRET
      })
      },
      defaultProvider: 'pinata'
      },
      relayerCallbacks: {
      async submitPermissionGrant(typedData, signature) {
      // Server-side relayer implementation
      return await submitToCustomRelayer(typedData, signature);
      }
      }
      });

      // Server operations
      const uploadResult = await vana.data.upload({
      content: await fs.readFile('./user-data.json'),
      filename: 'user-data.json',
      schemaId: 1
      });

      // Personal server setup
      await vana.server.setupPersonalServer({
      serverUrl: 'https://my-server.example.com',
      capabilities: ['data_processing', 'ml_inference']
      });
      // CLI tool or script usage
      const vana = Vana({
      chainId: 14800, // Moksha testnet
      account: privateKeyToAccount(process.env.PRIVATE_KEY),
      rpcUrl: process.env.RPC_URL,
      storage: {
      providers: { ipfs: new IPFSStorage() },
      defaultProvider: 'ipfs'
      }
      });

      // Batch operations for data processing
      const userFiles = await vana.data.getUserFiles({
      owner: process.env.USER_ADDRESS
      });

      for (const file of userFiles) {
      const decrypted = await vana.data.decryptFile(file);
      // Process file data...
      }
      // Express.js server integration
      import express from 'express';
      import { handleRelayerOperation } from '@opendatalabs/vana-sdk/node';

      const app = express();

      app.post('/api/relay', async (req, res) => {
      try {
      const result = await handleRelayerOperation(
      vana,
      req.body
      );
      res.json(result);
      } catch (error) {
      res.status(500).json({ error: error.message });
      }
      });
    • Creates a new Vana SDK instance configured for Node.js environments.

      Parameters

      Returns VanaNodeImpl & RelayerRequiredMarker

      A fully configured Vana SDK instance for Node.js use

      This is the primary entry point for Node.js applications using the Vana SDK. The function automatically detects your configuration type and provides compile-time type safety:

      • With storage configured: All methods including file upload/download are available
      • Without storage: Storage-dependent methods throw runtime errors and are excluded from TypeScript

      The Node.js version provides enhanced capabilities including native file system access, server-side cryptographic operations, and support for personal server deployment. It includes all browser capabilities plus Node.js-specific optimizations and utilities.

      When configuration parameters are invalid or missing

      import { Vana } from '@opendatalabs/vana-sdk/node';
      import { createWalletClient, http } from 'viem';
      import { privateKeyToAccount } from 'viem/accounts';
      import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';
      import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';

      // Server setup with private key
      const account = privateKeyToAccount('0x...');
      const walletClient = createWalletClient({
      account,
      chain: mokshaTestnet,
      transport: http('https://rpc.moksha.vana.org')
      });

      const vana = Vana({
      walletClient,
      storage: {
      providers: {
      ipfs: new IPFSStorage({
      gateway: 'https://gateway.pinata.cloud',
      timeout: 30000
      }),
      pinata: new PinataStorage({
      apiKey: process.env.PINATA_KEY,
      secretKey: process.env.PINATA_SECRET
      })
      },
      defaultProvider: 'pinata'
      },
      relayerCallbacks: {
      async submitPermissionGrant(typedData, signature) {
      // Server-side relayer implementation
      return await submitToCustomRelayer(typedData, signature);
      }
      }
      });

      // Server operations
      const uploadResult = await vana.data.upload({
      content: await fs.readFile('./user-data.json'),
      filename: 'user-data.json',
      schemaId: 1
      });

      // Personal server setup
      await vana.server.setupPersonalServer({
      serverUrl: 'https://my-server.example.com',
      capabilities: ['data_processing', 'ml_inference']
      });
      // CLI tool or script usage
      const vana = Vana({
      chainId: 14800, // Moksha testnet
      account: privateKeyToAccount(process.env.PRIVATE_KEY),
      rpcUrl: process.env.RPC_URL,
      storage: {
      providers: { ipfs: new IPFSStorage() },
      defaultProvider: 'ipfs'
      }
      });

      // Batch operations for data processing
      const userFiles = await vana.data.getUserFiles({
      owner: process.env.USER_ADDRESS
      });

      for (const file of userFiles) {
      const decrypted = await vana.data.decryptFile(file);
      // Process file data...
      }
      // Express.js server integration
      import express from 'express';
      import { handleRelayerOperation } from '@opendatalabs/vana-sdk/node';

      const app = express();

      app.post('/api/relay', async (req, res) => {
      try {
      const result = await handleRelayerOperation(
      vana,
      req.body
      );
      res.json(result);
      } catch (error) {
      res.status(500).json({ error: error.message });
      }
      });
    • Creates a new Vana SDK instance configured for Node.js environments.

      Parameters

      Returns VanaNodeImpl & StorageRequiredMarker

      A fully configured Vana SDK instance for Node.js use

      This is the primary entry point for Node.js applications using the Vana SDK. The function automatically detects your configuration type and provides compile-time type safety:

      • With storage configured: All methods including file upload/download are available
      • Without storage: Storage-dependent methods throw runtime errors and are excluded from TypeScript

      The Node.js version provides enhanced capabilities including native file system access, server-side cryptographic operations, and support for personal server deployment. It includes all browser capabilities plus Node.js-specific optimizations and utilities.

      When configuration parameters are invalid or missing

      import { Vana } from '@opendatalabs/vana-sdk/node';
      import { createWalletClient, http } from 'viem';
      import { privateKeyToAccount } from 'viem/accounts';
      import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';
      import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';

      // Server setup with private key
      const account = privateKeyToAccount('0x...');
      const walletClient = createWalletClient({
      account,
      chain: mokshaTestnet,
      transport: http('https://rpc.moksha.vana.org')
      });

      const vana = Vana({
      walletClient,
      storage: {
      providers: {
      ipfs: new IPFSStorage({
      gateway: 'https://gateway.pinata.cloud',
      timeout: 30000
      }),
      pinata: new PinataStorage({
      apiKey: process.env.PINATA_KEY,
      secretKey: process.env.PINATA_SECRET
      })
      },
      defaultProvider: 'pinata'
      },
      relayerCallbacks: {
      async submitPermissionGrant(typedData, signature) {
      // Server-side relayer implementation
      return await submitToCustomRelayer(typedData, signature);
      }
      }
      });

      // Server operations
      const uploadResult = await vana.data.upload({
      content: await fs.readFile('./user-data.json'),
      filename: 'user-data.json',
      schemaId: 1
      });

      // Personal server setup
      await vana.server.setupPersonalServer({
      serverUrl: 'https://my-server.example.com',
      capabilities: ['data_processing', 'ml_inference']
      });
      // CLI tool or script usage
      const vana = Vana({
      chainId: 14800, // Moksha testnet
      account: privateKeyToAccount(process.env.PRIVATE_KEY),
      rpcUrl: process.env.RPC_URL,
      storage: {
      providers: { ipfs: new IPFSStorage() },
      defaultProvider: 'ipfs'
      }
      });

      // Batch operations for data processing
      const userFiles = await vana.data.getUserFiles({
      owner: process.env.USER_ADDRESS
      });

      for (const file of userFiles) {
      const decrypted = await vana.data.decryptFile(file);
      // Process file data...
      }
      // Express.js server integration
      import express from 'express';
      import { handleRelayerOperation } from '@opendatalabs/vana-sdk/node';

      const app = express();

      app.post('/api/relay', async (req, res) => {
      try {
      const result = await handleRelayerOperation(
      vana,
      req.body
      );
      res.json(result);
      } catch (error) {
      res.status(500).json({ error: error.message });
      }
      });
    • Creates a new Vana SDK instance configured for Node.js environments.

      Parameters

      • config: VanaNodeConfig

        Configuration object containing wallet, storage, and relayer settings

      Returns VanaNodeImpl

      A fully configured Vana SDK instance for Node.js use

      This is the primary entry point for Node.js applications using the Vana SDK. The function automatically detects your configuration type and provides compile-time type safety:

      • With storage configured: All methods including file upload/download are available
      • Without storage: Storage-dependent methods throw runtime errors and are excluded from TypeScript

      The Node.js version provides enhanced capabilities including native file system access, server-side cryptographic operations, and support for personal server deployment. It includes all browser capabilities plus Node.js-specific optimizations and utilities.

      When configuration parameters are invalid or missing

      import { Vana } from '@opendatalabs/vana-sdk/node';
      import { createWalletClient, http } from 'viem';
      import { privateKeyToAccount } from 'viem/accounts';
      import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';
      import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';

      // Server setup with private key
      const account = privateKeyToAccount('0x...');
      const walletClient = createWalletClient({
      account,
      chain: mokshaTestnet,
      transport: http('https://rpc.moksha.vana.org')
      });

      const vana = Vana({
      walletClient,
      storage: {
      providers: {
      ipfs: new IPFSStorage({
      gateway: 'https://gateway.pinata.cloud',
      timeout: 30000
      }),
      pinata: new PinataStorage({
      apiKey: process.env.PINATA_KEY,
      secretKey: process.env.PINATA_SECRET
      })
      },
      defaultProvider: 'pinata'
      },
      relayerCallbacks: {
      async submitPermissionGrant(typedData, signature) {
      // Server-side relayer implementation
      return await submitToCustomRelayer(typedData, signature);
      }
      }
      });

      // Server operations
      const uploadResult = await vana.data.upload({
      content: await fs.readFile('./user-data.json'),
      filename: 'user-data.json',
      schemaId: 1
      });

      // Personal server setup
      await vana.server.setupPersonalServer({
      serverUrl: 'https://my-server.example.com',
      capabilities: ['data_processing', 'ml_inference']
      });
      // CLI tool or script usage
      const vana = Vana({
      chainId: 14800, // Moksha testnet
      account: privateKeyToAccount(process.env.PRIVATE_KEY),
      rpcUrl: process.env.RPC_URL,
      storage: {
      providers: { ipfs: new IPFSStorage() },
      defaultProvider: 'ipfs'
      }
      });

      // Batch operations for data processing
      const userFiles = await vana.data.getUserFiles({
      owner: process.env.USER_ADDRESS
      });

      for (const file of userFiles) {
      const decrypted = await vana.data.decryptFile(file);
      // Process file data...
      }
      // Express.js server integration
      import express from 'express';
      import { handleRelayerOperation } from '@opendatalabs/vana-sdk/node';

      const app = express();

      app.post('/api/relay', async (req, res) => {
      try {
      const result = await handleRelayerOperation(
      vana,
      req.body
      );
      res.json(result);
      } catch (error) {
      res.status(500).json({ error: error.message });
      }
      });