# Burn module for burning tokens and keeping track of burnt amounts (ScheduledCheckpoint.sol)

View Source: [contracts/modules/Experimental/Mixed/ScheduledCheckpoint.sol](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/contracts/modules/Experimental/Mixed/ScheduledCheckpoint.sol)

**↗ Extends:** [**ICheckpoint**](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/ICheckpoint.md)**,** [**TransferManager**](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/TransferManager.md)

**ScheduledCheckpoint**

**Enums**

### TimeUnit

```javascript
enum TimeUnit {
 SECONDS,
 DAYS,
 WEEKS,
 MONTHS,
 YEARS
}
```

## Structs

### Schedule

```javascript
struct Schedule {
 bytes32 name,
 uint256 startTime,
 uint256 nextTime,
 uint256 interval,
 enum ScheduledCheckpoint.TimeUnit timeUnit,
 uint256 index,
 uint256[] checkpointIds,
 uint256[] timestamps,
 uint256[] periods,
 uint256 totalPeriods
}
```

## Contract Members

**Constants & Variables**

```javascript
bytes32[] public names;
mapping(bytes32 => struct ScheduledCheckpoint.Schedule) public schedules;
```

**Events**

```javascript
event AddSchedule(bytes32  _name, uint256  _startTime, uint256  _interval, enum ScheduledCheckpoint.TimeUnit  _timeUint);
event RemoveSchedule(bytes32  _name);
```

## Functions

* [(address \_securityToken, address \_polyToken)](/polymath/api/scheduledcheckpoint.md)
* [getInitFunction()](/polymath/api/scheduledcheckpoint.md#getinitfunction)
* [addSchedule(bytes32 \_name, uint256 \_startTime, uint256 \_interval, enum ScheduledCheckpoint.TimeUnit \_timeUnit)](/polymath/api/scheduledcheckpoint.md#addschedule)
* [removeSchedule(bytes32 \_name)](/polymath/api/scheduledcheckpoint.md#removeschedule)
* [executeTransfer(address , address , uint256 , bytes )](/polymath/api/scheduledcheckpoint.md#executetransfer)
* [verifyTransfer(address , address , uint256 , bytes )](/polymath/api/scheduledcheckpoint.md#verifytransfer)
* [getSchedule(bytes32 \_name)](/polymath/api/scheduledcheckpoint.md#getschedule)
* [update(bytes32 \_name)](/polymath/api/scheduledcheckpoint.md#update)
* [\_update(bytes32 \_name)](/polymath/api/scheduledcheckpoint.md#_update)
* [updateAll()](/polymath/api/scheduledcheckpoint.md#updateall)
* [\_updateAll()](/polymath/api/scheduledcheckpoint.md#_updateall)
* [getPermissions()](/polymath/api/scheduledcheckpoint.md#getpermissions)

Constructor

```javascript
function (address _securityToken, address _polyToken) public nonpayable Module
```

**Arguments**

| Name            | Type    | Description                   |
| --------------- | ------- | ----------------------------- |
| \_securityToken | address | Address of the security token |
| \_polyToken     | address |                               |

### getInitFunction

⤾ overrides [IModule.getInitFunction](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/IModule.md#getinitfunction)

This function returns the signature of configure function

```javascript
function getInitFunction() public pure
returns(bytes4)
```

**Arguments**

| Name | Type | Description |
| ---- | ---- | ----------- |

### addSchedule

adds a new schedule for checkpoints

```javascript
function addSchedule(bytes32 _name, uint256 _startTime, uint256 _interval, enum ScheduledCheckpoint.TimeUnit _timeUnit) external nonpayable
```

**Arguments**

| Name        | Type                              | Description                                         |
| ----------- | --------------------------------- | --------------------------------------------------- |
| \_name      | bytes32                           | name of the new schedule (must be unused)           |
| \_startTime | uint256                           | start time of the schedule (first checkpoint)       |
| \_interval  | uint256                           | interval at which checkpoints should be created     |
| \_timeUnit  | enum ScheduledCheckpoint.TimeUnit | unit of time at which checkpoints should be created |

### removeSchedule

removes a schedule for checkpoints

```javascript
function removeSchedule(bytes32 _name) external nonpayable
```

**Arguments**

| Name   | Type    | Description                        |
| ------ | ------- | ---------------------------------- |
| \_name | bytes32 | name of the schedule to be removed |

### executeTransfer

⤾ overrides [ITransferManager.executeTransfer](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/ITransferManager.md#executetransfer)

Used to create checkpoints that correctly reflect balances

```javascript
function executeTransfer(address , address , uint256 , bytes ) external nonpayable onlySecurityToken 
returns(enum ITransferManager.Result)
```

**Returns**

always returns Result.NA

**Arguments**

| Name | Type    | Description |
| ---- | ------- | ----------- |
|      | address |             |
|      | address |             |
|      | uint256 |             |
|      | bytes   |             |

### verifyTransfer

⤾ overrides [ITransferManager.verifyTransfer](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/ITransferManager.md#verifytransfer)

Used to create checkpoints that correctly reflect balances

```javascript
function verifyTransfer(address , address , uint256 , bytes ) public view
returns(enum ITransferManager.Result, bytes32)
```

**Returns**

always returns Result.NA

**Arguments**

| Name | Type    | Description |
| ---- | ------- | ----------- |
|      | address |             |
|      | address |             |
|      | uint256 |             |
|      | bytes   |             |

### getSchedule

gets schedule details

```javascript
function getSchedule(bytes32 _name) external view
returns(bytes32, uint256, uint256, uint256, enum ScheduledCheckpoint.TimeUnit, uint256[], uint256[], uint256[], uint256)
```

**Arguments**

| Name   | Type    | Description          |
| ------ | ------- | -------------------- |
| \_name | bytes32 | name of the schedule |

### update

manually triggers update outside of transfer request for named schedule (can be used to reduce user gas costs)

```javascript
function update(bytes32 _name) external nonpayable
```

**Arguments**

| Name   | Type    | Description          |
| ------ | ------- | -------------------- |
| \_name | bytes32 | name of the schedule |

### \_update

```javascript
function _update(bytes32 _name) internal nonpayable
```

**Arguments**

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| \_name | bytes32 |             |

### updateAll

manually triggers update outside of transfer request for all schedules (can be used to reduce user gas costs)

```javascript
function updateAll() external nonpayable
```

**Arguments**

| Name | Type | Description |
| ---- | ---- | ----------- |

### \_updateAll

```javascript
function _updateAll() internal nonpayable
```

**Arguments**

| Name | Type | Description |
| ---- | ---- | ----------- |

### getPermissions

⤾ overrides [IModule.getPermissions](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/IModule.md#getpermissions)

Return the permissions flag that are associated with CountTransferManager

```javascript
function getPermissions() external view
returns(bytes32[])
```

**Arguments**

| Name | Type | Description |
| ---- | ---- | ----------- |


---

# 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://developers.polymath.network/polymath/api/scheduledcheckpoint.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.
