> For the complete documentation index, see [llms.txt](https://gitbook.mor.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gitbook.mor.org/smart-contracts/documentation/distribution-protocol/v7-protocol/get-started/withdraw.md).

# Withdraw

The [withdraw](/smart-contracts/documentation/distribution-protocol/v7-protocol/contracts/depositpool.md#withdraw) function allows users to partially or fully withdraw their previously staked tokens from a public reward pool. This operation reduces the user’s stake and, consequently, their share of MOR rewards.

Before executing a withdrawal, the contract verifies that the selected `rewardPoolIndex` corresponds to a valid and public reward pool. The withdrawal is only permitted if a required delay since the last stake (defined in the pool configuration as `withdrawLockPeriodAfterStake`) has passed.

The final withdrawn amount must also respect the `minimalStake` rule: the remaining user stake (if any) must not fall below the minimum stake required by the pool unless the user fully exits.

If the pool is public, the contract first calls `distributeRewards` to ensure the reward coefficient is up to date. Then, it calculates the user’s current rewards and applies the necessary multipliers to recalculate the virtual deposit. This ensures fair and accurate distribution of future rewards after the withdrawal. Then, the withdrawn tokens are first pulled from the `Distributor` using [withdraw](/smart-contracts/documentation/distribution-protocol/v7-protocol/contracts/distributor.md#withdraw) and then transferred to the user via `safeTransfer`

The user may continue to interact with the contract or fully exit their stake. Fully exiting resets most of their staking data except reward history.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://gitbook.mor.org/smart-contracts/documentation/distribution-protocol/v7-protocol/get-started/withdraw.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
