Skip to content

Changelog

v1.3.3

  • Fix: getHistory() no longer throws SteelSwapValidationError when the API returns tvl: null — the Zod schema and TypeScript type now accept null in addition to number[] and undefined

v1.3.2

  • Fix: Added User-Agent header to SteelSwapV2Client and C3PriceClient to prevent Cloudflare 403 blocks on cicdapi.steelswap.io
  • Fix: C3PriceClient.getTokenLogo() now bypasses request() and handles binary responses correctly (returns URL string on success, null on 404)
  • Fix: SymbolInfoResponse field names corrected to match API (hyphenated: exchange-listed, exchange-traded, session-regular, has-intraday, has-daily, has-weekly-and-monthly, ticker, etc.)
  • Fix: HistoryResponse is now a discriminated union on s ('ok' | 'no_data' | 'error') instead of a flat object
  • Fix: GroupListResponse.d.groups is now { id: string }[] (was string[])
  • Fix: has-intraday, has-daily, has-weekly-and-monthly in SymbolInfoResponse are now boolean[] | null (API may return null)
  • Fix: C3PriceClient.getGroups() now sends auth header (API requires it despite being documented as unauthenticated)
  • Fix: Zod schemas for SymbolInfoResponse, HistoryResponse, and GroupListResponse updated to match real API
  • Added integration tests for getWalletHistory() and getWalletPending() (v1)
  • Added integration tests for all C3PriceClient methods
  • Added integration test scaffolding for SteelSwapV2Client (skipped until v2 auth is available)

v1.3.1

  • Fix: estimateSwap() with hop: true no longer throws SteelSwapValidationError — the Zod schema now correctly treats the top-level pools field as optional for hop responses (the API only includes pools inside splitGroup entries)
  • Fix: All SteelSwapV2Client and C3PriceClient endpoints now use the correct /api/v2/ path prefix
  • Fix: Partner management endpoints now include the /auth/ path segment (/api/v2/auth/partner/addresses)
  • Fix: C3PriceClient.getGroups() now calls /api/v2/data/groups (was /data/group_list/)
  • HopSplitOutput.pools is now typed as optional (pools?: PoolOutput<F>[])

v1.3.0

  • New: Zod-based runtime response validation for all API endpoints (v1, v2, and C3 clients)
  • Every API response is validated against a Zod schema before being returned
  • Invalid responses throw SteelSwapValidationError (extends SteelSwapError) with the endpoint, validation error, and raw data
  • SteelSwapValidationError is exported from the package
  • Skipped endpoints: getTokenIcon (binary PNG), notifySubmitted (void response), getTokenLogo (string/null with 404 handling)
  • Added zod as a runtime dependency

v1.2.0

  • New: SteelSwapV2Client for v2 Orders and Partner Management endpoints
  • New: C3PriceClient for token prices, logos, and TradingView-compatible chart data
  • v2 API uses Bearer token auth (Authorization: Bearer <token>) instead of v1's custom token header
  • v2 API uses snake_case field names (v1 uses camelCase)
  • v2 API base URL: https://cicdapi.steelswap.io
  • SteelSwapV2Client methods: getOpenOrders(), getOrderHistory(), getOrderDetails(), getPartnerAddresses(), addPartnerAddress(), removePartnerAddress()
  • C3PriceClient methods: getCurrentPrice(), getTokenLogo(), getHistory(), getSymbolInfo(), getGroups(), healthCheck()
  • healthCheck() is unauthenticated (skips Bearer header)
  • All v2 and C3 types exported from the package
  • Reuses SteelSwapError from v1 client for error handling

v1.1.0

  • Breaking: All response types rewritten to match the live API (OpenAPI v1.18.0)
  • SplitOutput: Replaced totalOutput/minOutput with tokenA, quantityA, tokenB, quantityB, totalFee, totalDeposit, steelswapFee, bonusOut, price
  • HopSplitOutput: Now extends SplitOutput with splitGroup: SplitOutput[][] (replaces hop1/hop2/intermediateToken)
  • PoolOutput: Replaced liquidityA/liquidityB/fee/output with poolId, quantityA, quantityB, batcherFee, deposit, volumeFee
  • OrderStatus: Replaced txHash/tokenA/tokenB/inputAmount/outputAmount/status/timestamp with source, firstObserved, lastUpdated, totalSubmitted, totalRequested, totalReceived
  • SwapStatus: Complete rewrite — dex, orderType, txStatus, submitTxHash, submitTxIndex, submitTime, submitAssets, requestAssets, executeTxHash, executeTxIndex, executeTime, receivedAssets
  • OrderStatusResponse: Replaced total with page + lastPage
  • PoolSummary: Replaced dex/reserveA/reserveB/fee/poolId with liquidity, priceNumerator, priceDenominator, poolCount
  • PoolSummaryResponse: Changed from { pools: PoolSummary[] } to Record<string, PoolSummary>
  • TokenSummary: Removed generic <F>, removed price/logo, added required sources: string[]; priceNumerator/priceDenominator now required
  • SteelSwapStatistics: Added service: string field
  • TxListItem: Renamed index to txIndex
  • BuildSwapRequest: Renamed feeAdjust to feeAdust (matches API typo)
  • findTradingPairs(): Removed ignoreDexes parameter (not in API spec)
  • Removed FindPairsRequest export
  • Added new types: OrderType, Assets

v1.0.1

  • Breaking: TokenSummary.assetName renamed to TokenSummary.policyName
  • Added TokenSummary.priceNumerator, TokenSummary.priceDenominator fields
  • NumericInput now accepts number in addition to string | bigint | Big

v1.0.0

  • Initial release
  • Full v1 API coverage (14 endpoints)
  • Generic NumericFormat support ('string', 'number', 'bigint', 'Big')
  • Partner auto-injection for swap requests
  • Custom fetch support
  • Configurable request timeout

Cardano's DEX aggregator.