# Cross-Chain Swap Design For Hop Protocol
Hop protocol doesn't support cross-chain callData, hence we need to connect the swap after cross-chain token transfer.
For example, users want to swap 10 UNI to QUICK on Polygon. Steps are:
1. Swap 10 UNI to 300 USDC on ETH thru Swing aggregator contract
2. Send 300 USDC to Polygon thru Hop bridge
3. Hop deposits 300 USDC to user's wallet on Polygon. Hop contract will emit event after deposit
4. Swing frontend will monitor the event emitted by Hop contract. It will
4a. Asking user to approve our contract to use 300 USDC
4b. Swap 300 USDC to QUICK
__Hop events we need to monitor__
Going L1 -> L2, you should look for event TransferSentToL2.
Going L2 -> L2 or L2 -> L1, you should look for event WithdrawalBonded
L1 = ETH; L2 = Optimism, Arbitrum or Polygon
____
__Hop Contract__
https://github.com/hop-protocol/contracts
__Hop Contract addresses__
https://github.com/hop-protocol/hop/blob/develop/packages/core/src/addresses/mainnet.ts
____
Assignments:
1. Chuqiao will implement steps 1 and 2.
2. David will be working on step 3 and 4.