> For the complete documentation index, see [llms.txt](https://woken-exchange.gitbook.io/wokenexchange/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://woken-exchange.gitbook.io/wokenexchange/woken-v1-our-solution/timekeeper/safety-tools.md).

# Safety Tools

<figure><img src="/files/ak77JN2fFhgTnL8xCfgk" alt=""><figcaption><p>Safety Tools</p></figcaption></figure>

**Disable timekeeper** : If you no longer wish to use your Timekeeper, you can disable it and return to 24-7. The [open/closed module](/wokenexchange/woken-v1-our-solution/swap-open-closed.md#dynamic-open-closed-module) on the swap page will also indicate that your pair's timekeeper is no longer active.

<details>

<summary><mark style="color:blue;">function setEnable</mark></summary>

{% code title="WokenFactory.sol" overflow="wrap" %}

```solidity
function setEnable(address _pair, bool _enable) public isPairAdmin(_pair) {
        isTimekeeperEnabledLP[_pair] = _enable;
        emit TimekeeperEnable(_pair);
```

{% endcode %}

</details>

{% hint style="success" %}
The timekeeper remembers your settings, so if you decide to reactivate it later, you'll find your old settings. Which you can, of course, change again if you wish.
{% endhint %}

***

**Transfer Ownership** : if you want to transfer the ownership of your Timekeeper to a new address.

<details>

<summary><mark style="color:blue;">function setPairAdmin</mark></summary>

{% code title="WokenFactory.sol" overflow="wrap" %}

```solidity
function setPairAdmin(address _addr, address _pair) public isPairAdmin(_pair){
        address temp = pairAdmin[_pair];
        pairAdmin[_pair] = _addr;
        emit PairAdminChanged(temp, _addr);
    }
```

{% endcode %}

</details>

{% hint style="warning" %}
If you transfer the Timekeeper ownership to a new address, you will no longer be able to edit it with the old one. Use with caution.
{% endhint %}

***

{% hint style="danger" %}
**Security ForceOpen feature for DexAdmin**

If a PairAdmin's wallet is hacked and the hacker decides to close his pair for lifetime, users' funds will be locked forever as the Timekeeper blocks the swap, burn, and mint functions. &#x20;

**ForceOpen acts as a safety valve if such a situation should arise.** &#x20;

If a pair is permanently closed due to a hack of PairAdmin's wallet, and if the situation has been verified (large-scale notification from the project community + verification of the admin's address from the backend), the DexAdmin has the possibility to force-open the pair, enabling users to recover their funds. &#x20;

&#x20;&#x20;

The ForceOpen feature has also a 48h timelock protection before getting activated by the DexAdmin.

```solidity

//security option for DexAdmin to avoid closed pair for lifetime
    function setForceOpenTimelock(address _pair, bool _enable) public isDexAdmin {
        require (isTKEnabled(_pair), "Timekeeper is Disabled, market is already open");
        timelock[_pair] = block.timestamp + 172800; // 48h timelock
        isForceOpenTimelock[_pair] = _enable;
        emit ForceOpenTimelock(_pair, _enable);
    }

    function setForceOpen(address _pair) public isDexAdmin {
        require(block.timestamp >= timelock[_pair], "Timelock not yet expired");
        isForceOpen[_pair] = isForceOpenTimelock[_pair];
        emit ForceOpen(_pair);
    }
```

{% endhint %}


---

# 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://woken-exchange.gitbook.io/wokenexchange/woken-v1-our-solution/timekeeper/safety-tools.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.
