# Smart Contract Integration

## **Developers: Smart Contract Integration**

Monbux is designed with **developer-first principles**, enabling seamless integration of m**MON liquid staking** and other protocol features into decentralized applications. By providing clear APIs, contract interfaces, and oracle feeds, developers can extend Monbux’s utility across the Monad ecosystem.

***

### **Why Integrate with Monbux?**

* **Composable DeFi:** Use mMON as collateral across lending, borrowing, and yield protocols.
* **Liquidity Unlocking:** Allow users to stake MON while still participating in DeFi activities.
* **Secure & Audited Contracts:** Built with security best practices for trustless interactions.
* **Oracle Feeds:** Access real-time mMON pricing and staking data through Monbux oracles.

***

### **Integration Options**

1. **gMON Token (ERC-20 Standard):**
   * Developers can support m**MON** like any other ERC-20 token.
   * Example use cases: DEX listings, lending platforms, yield farming pools.
2. **Staking Contract API:**
   * Functions to stake, unstake, and check balances.
   * Events that can be listened to for real-time updates (e.g., `Staked`, `Unstaked`).
3. **Oracle Data Feeds:**
   * Provides accurate mMON:MON ratios.
   * Helps dApps maintain stable and fair valuations for mMON-based assets.

***

### **Developer Resources**

* **Smart Contract ABIs:** Available on GitHub.
* **Testnet Deployment Addresses:** Provided for experimentation before mainnet.
* **SDKs & APIs (Upcoming):** Simplify Monbux integration into Web3 projects.
* **Documentation:** Step-by-step guides on connecting contracts, handling events, and managing liquid staking.

***

### **Getting Started**

1. Install `ethers.js` or `web3.js` in your dApp.
2. Connect to the **Monbux staking contract** using the provided ABI.
3. Allow users to **stake MON → receive gMON** or **redeem gMON → MON**.
4. Integrate **gMON balances** into your application’s logic.

```js
// Example: Checking user’s gMON balance
const mMON = new ethers.Contract(mMONAddress, mMONAbi, provider);
const balance = await mMON.balanceOf(userAddress);
console.log(`User has ${ethers.utils.formatUnits(balance, 18)} mMON`);
```

***

### **Contribute**

Developers can:

* Submit pull requests to **improve Monbux contracts and SDKs**.
* Build new use cases for mMON across DeFi protocols.
* Share integrations with the Monbux community for visibility and rewards.
