Docs
Docs/Configuration

Configuration

Tuning the MNMX routing engine for different use cases and environments.

Router Configuration

typescript
1const router = new MnmxRouter({
2 // Routing strategy
3 strategy: 'minimax', // minimax | cheapest | fastest | safest
4
5 // Tolerance
6 slippageTolerance: 0.5, // Max acceptable slippage (%)
7 timeout: 30_000, // Max total execution time (ms)
8
9 // Path constraints
10 maxHops: 3, // Maximum intermediate hops
11 bridges: ['wormhole', 'debridge', 'layerzero', 'allbridge'],
12
13 // Scoring weights (must sum to 1.0)
14 weights: {
15 fees: 0.25,
16 slippage: 0.25,
17 speed: 0.15,
18 reliability: 0.20,
19 mevExposure: 0.15,
20 },
21
22 // Worst-case multipliers
23 adversarialModel: {
24 slippageMultiplier: 2.0, // 2x quoted slippage
25 gasMultiplier: 1.5, // 1.5x current gas
26 bridgeDelayMultiplier: 3.0, // 3x median bridge time
27 mevExtraction: 0.003, // 0.3% of value
28 priceMovement: 0.005, // 0.5% adverse price change
29 },
30});

Strategy Profiles

Preset configurations for common use cases:

StrategyFeesSlippageSpeedReliabilityMEVUse Case
minimax0.250.250.150.200.15Best guaranteed outcome (default)
cheapest0.450.300.050.100.10Minimize total cost
fastest0.100.150.500.150.10Minimize transfer time
safest0.100.150.100.400.25Maximize security and reliability

Adversarial Model Tuning

The adversarial model controls how the minimax engine estimates worst-case outcomes. Adjust based on your risk tolerance:

ParameterDefaultConservativeAggressive
slippageMultiplier2.0x3.0x1.5x
gasMultiplier1.5x2.0x1.2x
bridgeDelayMultiplier3.0x5.0x2.0x
mevExtraction0.3%0.5%0.1%
priceMovement0.5%1.0%0.2%
Higher multipliers = more conservative routing. The engine will prefer routes with lower variance over routes with higher expected value. This is appropriate when protecting large transfers.

Bridge Configuration

Include or exclude specific bridges:

typescript
1// Only use specific bridges
2const router = new MnmxRouter({
3 bridges: ['wormhole', 'debridge'],
4});
5
6// Exclude specific bridges
7const router = new MnmxRouter({
8 excludeBridges: ['allbridge'],
9});
10
11// Per-route bridge exclusion
12const route = await router.findRoute({
13 from: { chain: 'ethereum', token: 'ETH', amount: '1.0' },
14 to: { chain: 'solana', token: 'SOL' },
15 options: { excludeBridges: ['layerzero'] },
16});

Chain Configuration

Configure RPC endpoints for each chain:

typescript
1const router = new MnmxRouter({
2 chains: {
3 ethereum: { rpc: 'https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY' },
4 solana: { rpc: 'https://mainnet.helius-rpc.com/?api-key=YOUR_KEY' },
5 arbitrum: { rpc: 'https://arb-mainnet.g.alchemy.com/v2/YOUR_KEY' },
6 },
7});

Environment Variables

VariableDescriptionDefault
MNMX_STRATEGYDefault routing strategyminimax
MNMX_MAX_HOPSMaximum intermediate hops3
MNMX_TIMEOUTMax execution time (ms)30000
MNMX_SLIPPAGEDefault slippage tolerance (%)0.5
MNMX_LOG_LEVELLogging levelinfo
ETH_RPC_URLEthereum RPC endpoint
SOL_RPC_URLSolana RPC endpoint
ARB_RPC_URLArbitrum RPC endpoint