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

AssignmentStakingModule
this staking module allows an administrator to set a fixed rate of earnings for a specific user.

AssignmentStakingModuleFactory
this factory contract handles deployment for the AssignmentStakingModule contract

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

Configuration
configuration contract to define global variables for GYSR protocol

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

ERC20BondStakingModule
this staking module allows users to permanently sell an ERC20 token in exchange for bond shares credited to their address. When the user unstakes, these shares will be burned and a reward will be distributed.

ERC20BondStakingModuleFactory
this factory contract handles deployment for the ERC20BondStakingModule contract

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

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.

ERC20FixedRewardModule
this reward module distributes a fixed amount of a single ERC20 token.

ERC20FixedRewardModuleFactory
this factory contract handles deployment for the ERC20FixedRewardModule contract

ERC20FixedRewardModuleInfo
this library provides read-only convenience functions to query additional information about the ERC20FixedRewardModule 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.

ERC20LinearRewardModule
this reward module distributes a single ERC20 token at a continuous fixed rate.

ERC20LinearRewardModuleFactory
this factory contract handles deployment for the ERC20LinearRewardModule contract

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

ERC20MultiRewardModule
this reward module distributes multiple ERC20 token as the staking reward. It is designed to offer simple and flexible reward mechanics.

ERC20MultiRewardModuleFactory
this factory contract handles deployment for the ERC20MultiRewardModule contract

ERC20MultiRewardModuleInfo
this library provides read-only convenience functions to query additional information about the ERC20MultiRewardModule 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

IConfiguration
this defines the protocol configuration interface

IEvents
common interface to define GYSR event system

IMetadata
this defines the metadata library interface for tokenized staking modules

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

IOwnerController
this defines the interface for any contracts that use the owner controller access pattern

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.

TokenUtils
this library implements utility methods for token handling, dynamic balance accounting, and fee processing

TokenUtilsInfo
this library implements utility methods for token handling, dynamic balance accounting, and fee processing. this is a modified version to be used by info libraries.