> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gains.trade/llms.txt
> Use this file to discover all available pages before exploring further.

# IGNSStaking

*Interface for GNSStaking contract*

## Staker

```solidity theme={null}
struct Staker {
  uint128 stakedGns;
  uint128 debtDai;
}
```

## StakerInfo

```solidity theme={null}
struct StakerInfo {
  uint48 lastDepositTs;
  uint208 __placeholder;
}
```

## RewardState

```solidity theme={null}
struct RewardState {
  uint128 accRewardPerGns;
  uint128 precisionDelta;
}
```

## RewardInfo

```solidity theme={null}
struct RewardInfo {
  uint128 debtToken;
  uint128 __placeholder;
}
```

## UnlockSchedule

```solidity theme={null}
struct UnlockSchedule {
  uint128 totalGns;
  uint128 claimedGns;
  uint128 debtDai;
  uint48 start;
  uint48 duration;
  bool revocable;
  enum IGNSStaking.UnlockType unlockType;
  uint16 __placeholder;
}
```

## UnlockScheduleInput

```solidity theme={null}
struct UnlockScheduleInput {
  uint128 totalGns;
  uint48 start;
  uint48 duration;
  bool revocable;
  enum IGNSStaking.UnlockType unlockType;
}
```

## UnlockType

```solidity theme={null}
enum UnlockType {
  LINEAR,
  CLIFF
}
```

## owner

```solidity theme={null}
function owner() external view returns (address)
```

## distributeReward

```solidity theme={null}
function distributeReward(address _rewardToken, uint256 _amountToken) external
```

## createUnlockSchedule

```solidity theme={null}
function createUnlockSchedule(struct IGNSStaking.UnlockScheduleInput _schedule, address _staker) external
```

## UnlockManagerUpdated

```solidity theme={null}
event UnlockManagerUpdated(address manager, bool authorized)
```

## DaiHarvested

```solidity theme={null}
event DaiHarvested(address staker, uint128 amountDai)
```

## RewardHarvested

```solidity theme={null}
event RewardHarvested(address staker, address token, uint128 amountToken)
```

## RewardHarvestedFromUnlock

```solidity theme={null}
event RewardHarvestedFromUnlock(address staker, address token, bool isOldDai, uint256[] ids, uint128 amountToken)
```

## RewardDistributed

```solidity theme={null}
event RewardDistributed(address token, uint256 amount)
```

## GnsStaked

```solidity theme={null}
event GnsStaked(address staker, uint128 amountGns)
```

## GnsUnstaked

```solidity theme={null}
event GnsUnstaked(address staker, uint128 amountGns)
```

## GnsClaimed

```solidity theme={null}
event GnsClaimed(address staker, uint256[] ids, uint128 amountGns)
```

## UnlockScheduled

```solidity theme={null}
event UnlockScheduled(address staker, uint256 index, struct IGNSStaking.UnlockSchedule schedule)
```

## UnlockScheduleRevoked

```solidity theme={null}
event UnlockScheduleRevoked(address staker, uint256 index)
```

## RewardTokenAdded

```solidity theme={null}
event RewardTokenAdded(address token, uint256 index, uint128 precisionDelta)
```
