# Create a staking pool

This page walks you through creating staking pools in TMS for your token ecosystem.

In TMS, you can create two types of pools:

* **Compound staking pools** (single token)
* **Liquidity pools** (LP staking)

Both live inside your **white-label staking portal**, under your domain, and share the same admin experience.

***

### Before you create a pool

Before you click “Create pool”, be clear on:

1. **What behavior you want to incentivize**
   * **Holding your token?** → Use a **compound** pool.
   * **Providing liquidity?** → Use a **liquidity (LP)** pool.
2. **What you can afford in rewards**

   * Rough idea of your **reward budget** (in your token or another reward token).

   * How long the pool should run (start/end dates).

   * A target APR/APY that fits your tokenomics.

   > In TMS, you **don’t** fund the pool before deployment.\
   > You configure the pool first, then the admin UI shows you how many reward tokens are required.
3. **Lock period & flexibility**
   * Do you want users to **lock** their stake for a set time (e.g. 30/90/180 days)?
   * Or a shorter lock for more flexibility?

Having these decisions up front makes configuration smoother.

***

### Step 1 – Start a new staking pool

In the TMS admin app:

1. Go to **Staking**.
2. Click **“Create pool”**.

You’ll first choose:

* **Pool type**:
  * **Compound** – for single-token auto-compounding staking.
  * **Liquidity** – for LP token staking.

You can create multiple pools of each type (e.g. different lock periods, APRs, or LP pairs).

***

### Step 2 – Configure a compound staking pool

Choose **Compound** if you want users to stake your token and earn auto-compounding rewards.

Configure:

#### Basic settings

* **Pool name**\
  How it will appear in the staking portal, e.g. “MYT 30D Compound Pool”.
* **Description (optional)**\
  Short explanatory text, e.g. “Stake MYT for 30 days and earn auto-compounding rewards.”
* **Staking token**\
  The token users will stake (usually your project token).
* **Reward token**\
  The token used to pay rewards:
  * Often the same as the staking token.
  * Can be a different token if you want to incentivize with another asset.

#### Reward parameters

* **APR / APY**\
  The target yield for the pool over a year (e.g. 12%, 20%).
* **Pool duration / expiration date**
  * **Start date** – when users can start staking.
  * **End / expiration date** – when the pool stops generating new rewards.
* **Lock period**\
  How long each deposit must remain locked:
  * e.g. 30, 60, 90 days.
  * During lock, users cannot withdraw their stake.

#### Limits (optional)

* **Total pool cap** – maximum total amount that can be staked.
* **Per-user cap** – maximum each wallet can stake.

#### Advanced options (optional)

* **Compound bounty** – incentive for users to trigger compounding (a small % of harvested rewards).
* **Management fee** – optional fee on rewards for treasury/partners.
* **NFT boost** – connect an NFT collection and configure reward multipliers for holders.

You can leave these off for simple pools, or enable them for sophisticated campaigns.

***

### Step 3 – Configure a liquidity (LP) pool

Choose **Liquidity** if you want users to stake LP tokens from a DEX pair (e.g. `MYT/USDT LP`).

Configure:

#### Basic settings

* **Pool name**\
  e.g. “MYT/USDT LP – 60D Staking”.
* **Description (optional)**\
  e.g. “Stake your MYT/USDT LP to earn MYT rewards and support deep liquidity.”
* **LP token**\
  The LP token address for the pair you want to incentivize.
* **Reward token**\
  The token used for rewards (often your own).

#### Reward parameters

* **Target APY**\
  Annual yield you want to offer (e.g. 20%, 40%).
* **Pool duration / expiration date**
  * **Start date** – pool opens for staking.
  * **End / expiration date** – new stakes stop; rewards typically stop after this.
* **Lock period**
  * Number of days LP tokens must remain locked.
  * During the lock, users cannot withdraw LP.

#### Limits (optional)

* **Total pool cap** – max LP tokens per pool.
* **Per-user cap** – max LP per wallet.

#### Advanced options

* **NFT boost** – extra rewards for LP stakers holding certain NFTs.
* **Management fee** – fee on rewards for treasury/partners.

***

### Step 4 – Check “Funds required” after deployment

With TMS, you **do not pre-fund** the contract before creating the pool.

The flow is:

1. You **configure and deploy** the pool (Steps 1–3).
2. After deployment, the admin panel shows a **“Funds required”** or similar indicator:
   * How many reward tokens are needed to fully cover the pool at the configured APR/APY and duration.
   * How much (if anything) is already deposited.
3. You then **manually deposit** reward tokens into the pool contract from your Admin wallet.

Important:

* If the pool is **underfunded**:
  * The smart contract will eventually revert user reward operations once rewards run out.
  * End-users may see errors when trying to claim or interact, depending on how low the reward balance is.
* TMS does not block you from deploying an underfunded pool — it shows you what’s required and leaves funding up to you.

**Recommended practice:**

* Treat “Funds required” as a **target** to avoid user-facing errors.
* Top up the pool as needed, especially before running big marketing pushes.

You can also adjust APR, duration, or pool caps later (where supported) to better match your actual reward budget.

***

### Step 5 – Review & deploy

Before you make the pool available, review:

* **Type & tokens**
  * Compound vs Liquidity.
  * Staking token or LP pair.
  * Reward token.
* **Timing**
  * Start date.
  * End/expiration date.
  * Lock period.
* **Rewards**
  * Target APR/APY.
  * Whether it looks realistic given your rough budget (you’ll see precise “Funds required” after deploy).
* **Limits & advanced features**
  * Caps per pool/user.
  * NFT boost configuration.
  * Compound bounty and management fee (if enabled).

Then:

1. Confirm configuration.
2. Sign the deployment transaction(s) from your Admin wallet.
3. Wait for confirmation.

After deployment:

* The pool appears in the **Staking → Pools** list in the admin app.
* The admin app shows the **reward funding status** (“Funds required”, “Funded”, etc.).
* Once funded and within its active window, the pool will appear in your **public staking portal**.

***

### Step 6 – Check the user experience

Before announcing the pool:

1. Open your **staking portal URL** (e.g. `https://staking.yourproject.com`).
2. Connect a test wallet with:
   * Some staking token or LP tokens.
   * A bit of native gas (for transactions).
3. Verify:
   * The pool appears with correct name, APR/APY, lock period, and dates.
   * You can stake a small amount.
   * Rewards and balances behave as expected (assuming you’ve funded the pool).

If you see errors:

* Check that the pool is **properly funded** according to “Funds required”.
* Check start/end dates and lock periods.
* Adjust what’s editable in **Manage staking pools**.

***

### Best practices when creating pools

* **Deploy first, then fund deliberately.**\
  Use the “Funds required” indicator to decide how much to deposit, instead of guessing blindly.
* **Avoid promoting underfunded pools.**\
  If you market a pool heavily before funding it, users may run into onchain errors when claiming, which hurts trust.
* **Start with fewer, simpler pools.**\
  It’s easier to add more pools later than to manage a dozen half-funded ones.
* **Align staking with your vesting and lock strategy.**\
  Don’t design staking rewards in isolation; make sure they fit your overall token flow.

Next up, we can do **“Manage staking pools”** and explicitly talk about:

* How to see “Funds required” vs “Funds deposited”.
* How to top up reward tokens.
* What happens when rewards run out.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://tms-finance.gitbook.io/tms.finance/staking-farms/create-a-staking-pool.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
