# Staking Workflow

<figure><img src="/files/nap8VDx6mfWnEj0PPMXV" alt=""><figcaption></figcaption></figure>

## **Stake**

1-1. The user calls the contract's stake method to transfer USDT into the contract.

1-2. The user receives **USDT-pfUSDT-LP tokens** in return as proof of staking.

## **Swap**

2-1. The user can call the contract's swap method to exchange USDT for pfUSDT or vice versa.

* The swap method can specify a recipient address.
* **User exchanges for pfUSDT**:
  * **0% fee**
  * The exchangeable amount = The amount of pfUSDT available in the pool.
* **User exchanges for USDT**:
  * There is a redemption fee, which could be determined by a curve (fee model).
  * The exchangeable amount = The amount of USDT available in the pool.

2-2. The user receives **USDT or pfUSDT** in return.

## **Unstake**

3-1. The user calls the contract's unstake method to transfer **USDT-pfUSDT-LP tokens** back into the contract.

3-2. Based on the token quantity, the contract redeems a proportional amount of USDT or pfUSDT to the user.


---

# 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://docs.polyflow.tech/stake/staking-workflow.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.
