# IClaimSetupManager

> Interface for managing reward claim setup.

> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

Source: https://dev.flare.network/network/solidity-reference/IClaimSetupManager

Interface for managing reward claim setup.

Sourced from `IClaimSetupManager.sol` on [GitLab](https://gitlab.com/flarenetwork/flare-smart-contracts/-/blob/master/contracts/userInterfaces/IClaimSetupManager.sol).

## Functions[​](#functions "Direct link to Functions")

### setAutoClaiming[​](#setautoclaiming "Direct link to setAutoClaiming")

Sets the addresses of executors and optionally enables (creates) delegation account. If setting registered executors some fee must be paid to them.

```
function setAutoClaiming(    address[] _executors,    bool _enableDelegationAccount) external payable;
```

#### Parameters[​](#parameters "Direct link to Parameters")

-   `_executors`: The new executors. All old executors will be deleted and replaced by these.
-   `_enableDelegationAccount`:

### setClaimExecutors[​](#setclaimexecutors "Direct link to setClaimExecutors")

Sets the addresses of executors. If setting registered executors some fee must be paid to them.

```
function setClaimExecutors(    address[] _executors) external payable;
```

#### Parameters[​](#parameters-1 "Direct link to Parameters")

-   `_executors`: The new executors. All old executors will be deleted and replaced by these.

### setAllowedClaimRecipients[​](#setallowedclaimrecipients "Direct link to setAllowedClaimRecipients")

Set the addresses of allowed recipients. Apart from these, the owner is always an allowed recipient.

```
function setAllowedClaimRecipients(    address[] _recipients) external;
```

#### Parameters[​](#parameters-2 "Direct link to Parameters")

-   `_recipients`: The new allowed recipients. All old recipients will be deleted and replaced by these.

### enableDelegationAccount[​](#enabledelegationaccount "Direct link to enableDelegationAccount")

Enables (creates) delegation account contract, i.e. all airdrop and ftso rewards will be send to delegation account when using automatic claiming.

```
function enableDelegationAccount() external returns (    contract IDelegationAccount);
```

#### Returns[​](#returns "Direct link to Returns")

-   \`\`: Address of delegation account contract.

### disableDelegationAccount[​](#disabledelegationaccount "Direct link to disableDelegationAccount")

Disables delegation account contract, i.e. all airdrop and ftso rewards will be send to owner's account when using automatic claiming. Automatic claiming will not claim airdrop and ftso rewards for delegation account anymore.

```
function disableDelegationAccount() external;
```

### registerExecutor[​](#registerexecutor "Direct link to registerExecutor")

Allows executor to register and set initial fee value. If executor was already registered before (has fee set), only update fee after `feeValueUpdateOffset`. Executor must pay fee in order to register - `registerExecutorFeeValueWei`.

```
function registerExecutor(    uint256 _feeValue) external payable returns (    uint256);
```

#### Parameters[​](#parameters-3 "Direct link to Parameters")

-   `_feeValue`: number representing fee value

#### Returns[​](#returns-1 "Direct link to Returns")

-   \`\`: Returns the reward epoch number when the setting becomes effective.

### unregisterExecutor[​](#unregisterexecutor "Direct link to unregisterExecutor")

Allows executor to unregister.

```
function unregisterExecutor() external returns (    uint256);
```

#### Returns[​](#returns-2 "Direct link to Returns")

-   \`\`: Returns the reward epoch number when the setting becomes effective.

### updateExecutorFeeValue[​](#updateexecutorfeevalue "Direct link to updateExecutorFeeValue")

Allows registered executor to set (or update last scheduled) fee value.

```
function updateExecutorFeeValue(    uint256 _feeValue) external returns (    uint256);
```

#### Parameters[​](#parameters-4 "Direct link to Parameters")

-   `_feeValue`: number representing fee value

#### Returns[​](#returns-3 "Direct link to Returns")

-   \`\`: Returns the reward epoch number when the setting becomes effective.

### delegate[​](#delegate "Direct link to delegate")

Delegate `_bips` of voting power to `_to` from msg.sender's delegation account

```
function delegate(    address _to,    uint256 _bips) external;
```

#### Parameters[​](#parameters-5 "Direct link to Parameters")

-   `_to`: The address of the recipient
-   `_bips`: The percentage of voting power to be delegated expressed in basis points (1/100 of one percent). Not cumulative - every call resets the delegation value (and value of 0 revokes delegation).

### batchDelegate[​](#batchdelegate "Direct link to batchDelegate")

Undelegate all percentage delegations from the msg.sender's delegation account and then delegate corresponding `_bips` percentage of voting power to each member of `_delegatees`.

```
function batchDelegate(    address[] _delegatees,    uint256[] _bips) external;
```

#### Parameters[​](#parameters-6 "Direct link to Parameters")

-   `_delegatees`: The addresses of the new recipients.
-   `_bips`: The percentages of voting power to be delegated expressed in basis points (1/100 of one percent). Total of all `_bips` values must be at most 10000.

### undelegateAll[​](#undelegateall "Direct link to undelegateAll")

Undelegate all voting power for delegates of msg.sender's delegation account

```
function undelegateAll() external;
```

### revokeDelegationAt[​](#revokedelegationat "Direct link to revokeDelegationAt")

Revoke all delegation from msg.sender's delegation account to `_who` at given block. Only affects the reads via `votePowerOfAtCached()` in the block `_blockNumber`. Block `_blockNumber` must be in the past. This method should be used only to prevent rogue delegate voting in the current voting block. To stop delegating use delegate with value of 0 or undelegateAll.

```
function revokeDelegationAt(    address _who,    uint256 _blockNumber) external;
```

### delegateGovernance[​](#delegategovernance "Direct link to delegateGovernance")

Delegate all governance vote power of msg.sender's delegation account to `_to`.

```
function delegateGovernance(    address _to) external;
```

#### Parameters[​](#parameters-7 "Direct link to Parameters")

-   `_to`: The address of the recipient

### undelegateGovernance[​](#undelegategovernance "Direct link to undelegateGovernance")

Undelegate governance vote power for delegate of msg.sender's delegation account

```
function undelegateGovernance() external;
```

### withdraw[​](#withdraw "Direct link to withdraw")

Allows user to transfer WNat to owner's account.

```
function withdraw(    uint256 _amount) external;
```

#### Parameters[​](#parameters-8 "Direct link to Parameters")

-   `_amount`: Amount of tokens to transfer

### transferExternalToken[​](#transferexternaltoken "Direct link to transferExternalToken")

Allows user to transfer balance of ERC20 tokens owned by the personal delegation contract. The main use case is to transfer tokens/NFTs that were received as part of an airdrop or register as participant in such airdrop.

```
function transferExternalToken(    contract IERC20 _token,    uint256 _amount) external;
```

#### Parameters[​](#parameters-9 "Direct link to Parameters")

-   `_token`: Target token contract address
-   `_amount`: Amount of tokens to transfer

### accountToDelegationAccount[​](#accounttodelegationaccount "Direct link to accountToDelegationAccount")

Gets the delegation account of the `_owner`. Returns address(0) if not created yet.

```
function accountToDelegationAccount(    address _owner) external view returns (    address);
```

### getDelegationAccountData[​](#getdelegationaccountdata "Direct link to getDelegationAccountData")

Gets the delegation account data for the `_owner`. Returns address(0) if not created yet.

```
function getDelegationAccountData(    address _owner) external view returns (    contract IDelegationAccount _delegationAccount,    bool _enabled);
```

#### Parameters[​](#parameters-10 "Direct link to Parameters")

-   `_owner`: owner's address

#### Returns[​](#returns-4 "Direct link to Returns")

-   `_delegationAccount`: owner's delegation account address - could be address(0)
-   `_enabled`: indicates if delegation account is enabled

### claimExecutors[​](#claimexecutors "Direct link to claimExecutors")

Get the addresses of executors.

```
function claimExecutors(    address _owner) external view returns (    address[]);
```

### allowedClaimRecipients[​](#allowedclaimrecipients "Direct link to allowedClaimRecipients")

Get the addresses of allowed recipients. Apart from these, the owner is always an allowed recipient.

```
function allowedClaimRecipients(    address _rewardOwner) external view returns (    address[]);
```

### isClaimExecutor[​](#isclaimexecutor "Direct link to isClaimExecutor")

Returns info if `_executor` is allowed to execute calls for `_owner`

```
function isClaimExecutor(    address _owner,    address _executor) external view returns (    bool);
```

### getRegisteredExecutors[​](#getregisteredexecutors "Direct link to getRegisteredExecutors")

Get registered executors

```
function getRegisteredExecutors(    uint256 _start,    uint256 _end) external view returns (    address[] _registeredExecutors,    uint256 _totalLength);
```

### getExecutorInfo[​](#getexecutorinfo "Direct link to getExecutorInfo")

Returns some info about the `_executor`

```
function getExecutorInfo(    address _executor) external view returns (    bool _registered,    uint256 _currentFeeValue);
```

#### Parameters[​](#parameters-11 "Direct link to Parameters")

-   `_executor`: address representing executor

#### Returns[​](#returns-5 "Direct link to Returns")

-   `_registered`: information if executor is registered
-   `_currentFeeValue`: executor's current fee value

### getExecutorCurrentFeeValue[​](#getexecutorcurrentfeevalue "Direct link to getExecutorCurrentFeeValue")

Returns the current fee value of `_executor`

```
function getExecutorCurrentFeeValue(    address _executor) external view returns (    uint256);
```

#### Parameters[​](#parameters-12 "Direct link to Parameters")

-   `_executor`: address representing executor

### getExecutorFeeValue[​](#getexecutorfeevalue "Direct link to getExecutorFeeValue")

Returns the fee value of `_executor` at `_rewardEpoch`

```
function getExecutorFeeValue(    address _executor,    uint256 _rewardEpoch) external view returns (    uint256);
```

#### Parameters[​](#parameters-13 "Direct link to Parameters")

-   `_executor`: address representing executor
-   `_rewardEpoch`: reward epoch number

### getExecutorScheduledFeeValueChanges[​](#getexecutorscheduledfeevaluechanges "Direct link to getExecutorScheduledFeeValueChanges")

Returns the scheduled fee value changes of `_executor`

```
function getExecutorScheduledFeeValueChanges(    address _executor) external view returns (    uint256[] _feeValue,    uint256[] _validFromEpoch,    bool[] _fixed);
```

#### Parameters[​](#parameters-14 "Direct link to Parameters")

-   `_executor`: address representing executor

#### Returns[​](#returns-6 "Direct link to Returns")

-   `_feeValue`: positional array of fee values
-   `_validFromEpoch`: positional array of reward epochs the fee settings are effective from
-   `_fixed`: positional array of boolean values indicating if settings are subjected to change

## Events[​](#events "Direct link to Events")

### DelegationAccountCreated[​](#delegationaccountcreated "Direct link to DelegationAccountCreated")

```
event DelegationAccountCreated(    address owner,    contract IDelegationAccount delegationAccount)
```

### DelegationAccountUpdated[​](#delegationaccountupdated "Direct link to DelegationAccountUpdated")

```
event DelegationAccountUpdated(    address owner,    contract IDelegationAccount delegationAccount,    bool enabled)
```

### ClaimExecutorsChanged[​](#claimexecutorschanged "Direct link to ClaimExecutorsChanged")

```
event ClaimExecutorsChanged(    address owner,    address[] executors)
```

### AllowedClaimRecipientsChanged[​](#allowedclaimrecipientschanged "Direct link to AllowedClaimRecipientsChanged")

```
event AllowedClaimRecipientsChanged(    address owner,    address[] recipients)
```

### ClaimExecutorFeeValueChanged[​](#claimexecutorfeevaluechanged "Direct link to ClaimExecutorFeeValueChanged")

```
event ClaimExecutorFeeValueChanged(    address executor,    uint256 validFromRewardEpoch,    uint256 feeValueWei)
```

### ExecutorRegistered[​](#executorregistered "Direct link to ExecutorRegistered")

```
event ExecutorRegistered(    address executor)
```

### ExecutorUnregistered[​](#executorunregistered "Direct link to ExecutorUnregistered")

```
event ExecutorUnregistered(    address executor,    uint256 validFromRewardEpoch)
```

### MinFeeSet[​](#minfeeset "Direct link to MinFeeSet")

```
event MinFeeSet(    uint256 minFeeValueWei)
```

### MaxFeeSet[​](#maxfeeset "Direct link to MaxFeeSet")

```
event MaxFeeSet(    uint256 maxFeeValueWei)
```

### RegisterExecutorFeeSet[​](#registerexecutorfeeset "Direct link to RegisterExecutorFeeSet")

```
event RegisterExecutorFeeSet(    uint256 registerExecutorFeeValueWei)
```

### SetExecutorsExcessAmountRefunded[​](#setexecutorsexcessamountrefunded "Direct link to SetExecutorsExcessAmountRefunded")

```
event SetExecutorsExcessAmountRefunded(    address owner,    uint256 excessAmount)
```
