Skip to content

Client Setup

Configure the Altitrace client for your environment.

Creating a Client

basic.ts
import { AltitraceClient } from '@altitrace/sdk'
 
// Default client (localhost)
const client = new AltitraceClient()
 
// Custom endpoint
const client = new AltitraceClient({
  baseUrl: 'http://localhost:8080/v1'
})

Configuration Options

interface AltitraceClientConfig {
  // API endpoint URL
  baseUrl?: string
  
  // Request timeout in milliseconds
  timeout?: number
  
  // Number of retry attempts
  maxRetries?: number
  
  // API key for authentication
  apiKey?: string
  
  // Enable debug logging
  debug?: boolean
  
  // Custom headers
  headers?: Record<string, string>
  
  // Retry configuration
  retryConfig?: {
    retryDelay?: number
    shouldRetry?: (error: any) => boolean
  }
}

Default Values

{
  baseUrl: 'http://localhost:8080/v1',
  timeout: 30_000,
  maxRetries: 3,
  debug: false,
  retryConfig: {
    retryDelay: 1000
  }
}

Environment Variables

The client supports configuration via environment variables:

# API endpoint
ALTITRACE_API_URL=https://altitrace.reachaltitude.xyz/v1
 
# API key
ALTITRACE_API_KEY=your-api-key
 
# Debug mode
ALTITRACE_DEBUG=true
const client = new AltitraceClient({
  baseUrl: process.env.ALTITRACE_API_URL,
  apiKey: process.env.ALTITRACE_API_KEY,
  debug: process.env.ALTITRACE_DEBUG === 'true'
})

Client Methods

Direct Access

// Simulation
const result = await client.simulateCall({
  from: '0x...',
  to: '0x...',
  data: '0x...'
})
 
// Tracing
const trace = await client.traceCall({
  from: '0x...',
  to: '0x...',
  data: '0x...'
})
 
// Access List
const accessList = await client.generateAccessList({
  from: '0x...',
  to: '0x...',
  data: '0x...'
})

Builder Pattern

// Simulation builder
const result = await client.simulate()
  .call({ /* transaction */ })
  .withAssetChanges(true)
  .execute()
 
// Trace builder
const trace = await client.trace()
  .call({ /* transaction */ })
  .withCallTracer()
  .execute()
 
// Access list builder
const accessList = await client.accessList()
  .call({ /* transaction */ })
  .atBlock('latest')
  .execute()

Sub-clients

// Direct access to specialized clients
const simulation = client.simulation
const tracing = client.tracing
const accessLists = client.accessLists

Health Check

// Check API status
const health = await client.healthCheck()
 
console.log('Status:', health.status)
console.log('Version:', health.version)
console.log('Uptime:', health.uptime)