This documentation describes the functionality and interface for the GYSR Core v2 contracts. The associated source code can be found at github.com/gysr-io/core

ERC20BaseRewardModule
this abstract class implements common ERC20 funding and unlocking logic, which is inherited by other reward modules.

ERC20CompetitiveRewardModule
this reward module distributes a single ERC20 token as the staking reward. It is designed to offer competitive and engaging reward mechanics.

ERC20CompetitiveRewardModuleFactory
this factory contract handles deployment for the ERC20CompetitiveRewardModule contract

ERC20CompetitiveRewardModuleInfo
this library provides read-only convenience functions to query additional information about the ERC20CompetitiveRewardModule contract.

ERC20FriendlyRewardModule
this reward module distributes a single ERC20 token as the staking reward. It is designed to offer simple and predictable reward mechanics.

ERC20FriendlyRewardModuleFactory
this factory contract handles deployment for the ERC20FriendlyRewardModule contract

ERC20FriendlyRewardModuleInfo
this library provides read-only convenience functions to query additional information about the ERC20FriendlyRewardModule contract.

ERC20StakingModule
this staking module allows users to deposit an amount of ERC20 token in exchange for shares credited to their address. When the user unstakes, these shares will be burned and a reward will be distributed.

ERC20StakingModuleFactory
this factory contract handles deployment for the ERC20StakingModule contract

ERC20StakingModuleInfo
this library provides read-only convenience functions to query additional information about the ERC20StakingModule contract.

ERC721StakingModule
this staking module allows users to deposit one or more ERC721 tokens in exchange for shares credited to their address. When the user unstakes, these shares will be burned and a reward will be distributed.

ERC721StakingModuleFactory
this factory contract handles deployment for the ERC721StakingModule contract

ERC721StakingModuleInfo
this library provides read-only convenience functions to query additional information about the ERC721StakingModule contract.

GeyserToken
simple ERC20 compliant contract to implement GYSR token

GysrUtils
this library implements utility methods for the GYSR multiplier and spending mechanics

IEvents
common interface to define GYSR event system

IModuleFactory
this defines the common module factory interface used by the main factory to create the staking and reward modules for a new Pool.

IPool
this defines the core Pool contract interface

IPoolFactory
this defines the Pool factory interface, primarily intended for the Pool contract to interact with

IPoolInfo
this defines the Pool info contract interface

IRewardModule
this contract defines the common interface that any reward module must implement to be compatible with the modular Pool architecture.

IRewardModuleInfo
this contract defines the common interface that any reward module info must implement to be compatible with the modular Pool architecture.

IStakingModule
this contract defines the common interface that any staking module must implement to be compatible with the modular Pool architecture.

IStakingModuleInfo
this contract defines the common interface that any staking module info must implement to be compatible with the modular Pool architecture.

MathUtils
this library implements various logarithmic math utilies which support other contracts and specifically the GYSR multiplier calculation

OwnerController
this base contract implements an owner-controller access model.

Pool
this implements the GYSR core Pool contract. It supports generalized incentive mechanisms through a modular architecture, where staking and reward logic is contained in child contracts.

PoolFactory
this implements the Pool factory contract which allows any user to easily configure and deploy their own Pool

PoolInfo
this implements the Pool info library, which provides read-only convenience functions to query additional information and metadata about the core Pool contract.