TypeScript SDK Configuration

Advanced configuration options for the Tenzro Platform TypeScript SDK.

Environment Variables

The SDK automatically reads from these environment variables:

VariableDescriptionDefault
TENZRO_API_KEYAPI key for authenticationRequired
TENZRO_TENANT_IDTenant identifierRequired
TENZRO_BASE_URLAPI base URLhttps://api.platform.tenzro.com
TENZRO_TIMEOUTRequest timeout in ms30000

Automatic Configuration

import { TenzroPlatform } from '@tenzro/platform';

// Automatically uses environment variables
const platform = TenzroPlatform.fromEnv();

Custom Fetch

You can provide a custom fetch implementation for environments without native fetch or for testing:

import { TenzroPlatform } from '@tenzro/platform';
import nodeFetch from 'node-fetch';

const platform = new TenzroPlatform({
  apiKey: process.env.TENZRO_API_KEY!,
  tenantId: process.env.TENZRO_TENANT_ID!,
  fetch: nodeFetch as unknown as typeof fetch,
});

Retry Configuration

Configure automatic retry behavior for transient failures:

const platform = new TenzroPlatform({
  apiKey: process.env.TENZRO_API_KEY!,
  tenantId: process.env.TENZRO_TENANT_ID!,

  // Retry configuration
  retries: 3,           // Max retry attempts
  retryDelay: 1000,     // Base delay in ms (exponential backoff)
  retryOn: [408, 429, 500, 502, 503, 504],  // Status codes to retry
});

Custom Headers

Add custom headers to all requests:

const platform = new TenzroPlatform({
  apiKey: process.env.TENZRO_API_KEY!,
  tenantId: process.env.TENZRO_TENANT_ID!,
  headers: {
    'X-Request-Source': 'my-app',
    'X-Correlation-ID': correlationId,
  },
});

Request Interceptors

Intercept and modify requests before they are sent:

const platform = new TenzroPlatform({
  apiKey: process.env.TENZRO_API_KEY!,
  tenantId: process.env.TENZRO_TENANT_ID!,
  onRequest: async (request) => {
    // Add dynamic headers
    request.headers.set('X-Timestamp', Date.now().toString());

    // Log requests
    console.log('Request:', request.method, request.url);

    return request;
  },
  onResponse: async (response) => {
    // Log responses
    console.log('Response:', response.status);

    return response;
  },
});

Logging

Enable debug logging for troubleshooting:

const platform = new TenzroPlatform({
  apiKey: process.env.TENZRO_API_KEY!,
  tenantId: process.env.TENZRO_TENANT_ID!,
  debug: true,  // Log all requests and responses
  logger: {
    debug: (msg) => console.debug('[Tenzro]', msg),
    info: (msg) => console.info('[Tenzro]', msg),
    warn: (msg) => console.warn('[Tenzro]', msg),
    error: (msg) => console.error('[Tenzro]', msg),
  },
});

Multiple Tenants

Create separate clients for different tenants:

const tenant1 = new TenzroPlatform({
  apiKey: process.env.TENZRO_API_KEY!,
  tenantId: 'tenant-1',
});

const tenant2 = new TenzroPlatform({
  apiKey: process.env.TENZRO_API_KEY!,
  tenantId: 'tenant-2',
});

// Operations are isolated per tenant
await tenant1.wallet.create({ name: 'Wallet 1', type: 'eoa', chain: 'ethereum' });
await tenant2.wallet.create({ name: 'Wallet 2', type: 'eoa', chain: 'ethereum' });

Service-Specific Configuration

Override configuration for specific services:

const platform = new TenzroPlatform({
  apiKey: process.env.TENZRO_API_KEY!,
  tenantId: process.env.TENZRO_TENANT_ID!,

  services: {
    ai: {
      timeout: 120000,  // Longer timeout for AI inference
    },
    bridge: {
      retries: 5,       // More retries for bridge operations
    },
  },
});