# Integration Guideline

This page provides a high-level guide on integrating with Wombat on various projects.

### Swap

You will want to use the [`Router`](https://docs.wombat.exchange/developers/integration-guideline/router) contract. To get a quote, use [`getAmountOut`](https://docs.wombat.exchange/developers/router#function-getamountout). To swap BEP20 tokens, use [`swapExactTokensForTokens`](https://docs.wombat.exchange/developers/router#function-swapexacttokensfortokens). Each swap in the path will incur a haircut fee, which can differ for each pool.

### Yield Farming

First, [`deposit`](https://docs.wombat.exchange/developers/pool#function-deposit) your tokens to a [`Pool`](https://docs.wombat.exchange/developers/integration-guideline/pool) (which may trigger a deposit gain). You'll get LP tokens in BEP20 format.

Then, use [`MasterWombat`](https://docs.wombat.exchange/developers/integration-guideline/masterwombatv2)'s [`getAssetPid`](https://docs.wombat.exchange/developers/masterwombatv2#function-getassetpid) to find the id of the asset. Use the id to [`deposit`](https://docs.wombat.exchange/developers/masterwombatv2#function-deposit) the LP tokens into MasterWombat. Alternatively, you may set the param `shouldStake` to be true while calling`Pool.deposit` (This feature is experimental. Please use it with caution).

To view a user's position, you may read the value `amount` returned by [MasterWombat.userInfo](https://docs.wombat.exchange/developers/masterwombatv2#function-userinfo).

After the deposit, you may use [`pendingTokens`](https://docs.wombat.exchange/developers/masterwombatv2#function-pendingtokens) to check for any pending rewards. Note that there may be more than one reward token. To claim rewards, you can either do a [`deposit`](https://docs.wombat.exchange/developers/masterwombatv2#function-deposit) (with zero amount), [`withdraw`](https://docs.wombat.exchange/developers/masterwombatv2#function-withdraw) (with zero amount), or call [`multiClaim`](https://docs.wombat.exchange/developers/masterwombatv2#function-multiclaim) to claim one or more positions.

The withdrawal flow is similar to the above in reverse.

### veWOM

You may call [VeWom.mint](https://docs.wombat.exchange/developers/vewom#function-mint) to lock WOM into the contract and mint veWOM with a length of 7 days to 1461 days. Up to 10000 positions could be locked for each user. To view locked positions, call [VeWom.getUserInfo](https://docs.wombat.exchange/developers/vewom#function-getuserinfo). After the locking period, call [VeWom.burn](https://docs.wombat.exchange/developers/vewom#function-burn) to burn veWOM and get back locked WOM.

### Questions

Please use our [discord](https://docs.wombat.exchange/resources/links#discord) if you have any questions.
