# Modules
Epochs
Allows other modules to be signaled once every period to run their desired function
GAMM
Provides the logic to create and interact with liquidity pools on Osmosis
Incentives
Creates gauges to provide incentives to users who lock specified tokens for a certain period of time
Lockup
Bonds LP shares for user-defined locking periods to earn rewards
Mint
Creates tokens to reward validators, incentivize liquidity, provide funds for governance, and pay developers
Pool-Incentives
Creates individual gauges for every lock duration that exists in a pool
Gov
On-chain governance which allows token holders to participate in a community led decision-making process
Superfluid Staking
Stakes user-bonded LP shares to earn rewards and provides an additional layer of consensus security
# Module Accounts
All modules have their own module account. Think of this as a wallet that can only be controlled by that module. Here are a few with their respective wallet addresses and permissions:
# Module Flow
While module functions can be called in many different orders, here is a basic flow of module commands to bring assets onto Osmosis and then add/remove liquidity:
- (IBC-Transfer) IBC Received
- (GAMM) Swap Exact Amount In
- (GAMM) Join Pool
- (lockup) Lock-tokens
- (superfluid) Calculate and delegate synthetic Osmo
- (lockup) Begin-unlock-tokens
- (GAMM) Exit Pool