Skip to main content
This page details the technical requirements your protocol must meet to be integrated with Composer.

Core Requirements

1. EVM Compatibility

Your protocol must be deployed on an EVM-compatible chain. Composer’s onchain VM executes compiled bytecode on EVM chains. Non-EVM chains (Solana, SUI, etc.) are not currently supported.

2. Tokenised Position Return

Upon deposit, your protocol must return a token to the user’s wallet. Composer routes are identified by the toToken parameter, which must be a valid ERC-20 token that represents the user’s position. Supported token types:
Token TypeExampleProtocol Example
ERC-4626 vault sharesVault share tokensMorpho, Euler
aTokensInterest-bearing receipt tokensAave V3
Liquid staking tokensLSTs representing staked positionsLido wstETH, EtherFi
Yield tokensTokens representing yield positionsPendle, Ethena sUSDe
Custom receipt tokensProtocol-specific deposit receiptsFelix Vanilla, Neverland

3. Standard Deposit Function

Your deposit function should accept standard parameters that Composer’s eDSL compiler can encode. Common patterns include:
  • ERC-4626 deposit(uint256 assets, address receiver) — Standard vault interface
  • Aave-style supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) — Lending pool interface
  • Staking stake(uint256 amount) or wrap(uint256 amount) — Staking/wrapping interface
Composer’s eDSL supports dynamic calldata injection, meaning the exact deposit amount is determined at execution time based on the output of preceding swap/bridge steps. Your deposit function must accept a standard amount parameter.

Deposit vs. Withdraw Support

Composer supports two action types per protocol:
ActionDescriptionRequired?
DepositUser sends tokens, receives position tokensYes (minimum)
WithdrawUser sends position tokens, receives underlying tokensOptional
Some protocols are integrated with deposit only (e.g., Kinetiq, Ethena, Maple). This is acceptable, and withdraw support can be added later.

After Integration

Once live, your protocol is accessible via:
# Users can deposit from any token on any EVM chain
curl -X GET 'https://li.quest/v1/quote?\
fromChain=SOURCE_CHAIN_ID&\
toChain=YOUR_PROTOCOL_CHAIN_ID&\
fromToken=ANY_TOKEN_ADDRESS&\
toToken=YOUR_VAULT_TOKEN_ADDRESS&\
fromAddress=0xUSER_WALLET&\
toAddress=0xUSER_WALLET&\
fromAmount=AMOUNT'
LI.FI handles routing, bridging, swapping, and depositing automatically.

Contact

To start the integration process or ask questions, reach out to the LI.FI team: