sodax.moneyMarket: supply, borrow, withdraw, repay. Each has a complete one-call form (handles the relay end-to-end) and a create*Intent form when you want the transaction only.
The assets that work in the money market from Polygon overlap with the Polygon swap list but are not the same set: some tokens can be supplied and borrowed on Polygon but not swapped there. Native POL is in both. Read the list at runtime, as below, or see Networks & Assets.
Supply from Polygon
Supplying an ERC-20 needs an allowance first. Native POL needs none. The allowance check reads through theSodax instance’s Polygon RPC, so pass a working endpoint when you construct it.
Borrow to Polygon
dstChainKey and dstAddress default to the source, but any supported network can be the destination. That is the cross-network story in one parameter: collateral supplied from one network, borrowed liquidity delivered to another.
decimals: on Polygon, USDC and USDT use 6 and most other tokens in the SODAX list use 18.
withdraw and repay follow the same shape. Withdraw and borrow need no approval on any network; repaying with an ERC-20 needs an allowance, like supply.
Building a lending UI
sodax.moneyMarket.data exposes what you need for rates, positions, and health factors without extra indexing:
getReservesHumanized(): all reserves, human-readable.getUserReservesHumanized(spokeChainKey, userAddress): a user’s positions.formatReservesUSD(request)/formatUserSummary(request): USD-converted reserves and portfolio summaries.
Error handling
The module returns typed results. Discriminate onresult.error.code ('RELAY_TIMEOUT', 'EXECUTION_FAILED', …) with structured context on result.error.context.
Full reference, including intent-only methods, gas estimation, and the per-method error-code table: Lend / Borrow (Money Market).