LayerMarket Protocol
  • Welcome
  • Getting Started
    • Quick Links
    • How to use
    • Table of contents
    • Introduction
  • Key Features
    • Seller KYC Verification
    • Comprehensive Marketplace
    • Gasless Product Listings
    • Secure Payment & Escrow
    • Product Verification
    • Dispute Management
    • Search & Reviews
    • Activity Earnings
  • Contracts
    • Fees
    • Products
    • PurchaseEscrow
    • RatingsReviews
    • Treasury
    • Validators
    • Rewards
    • Addresses
  • Expansion Strategy
    • Overview
    • Digital Products
    • Physical Goods
    • Strategic Partnerships
    • Services
  • Utility Token Design
    • Overview
    • Locking
    • Governance
    • Fee Discounts
    • Fee Distribution
    • Exclusive Access
  • Conclusion
    • Overview
  • Support
    • Contact Us
Powered by GitBook
On this page
  1. Contracts

Rewards

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

/**
 * @title IRewards
 * @dev Interface for managing the rewards system.
 */
interface IRewards {

    /**
     * @dev Emitted when tokens are earned.
     * @param user The address of the user earning tokens.
     * @param activityType The type of activity for which tokens are earned.
     * @param tokens The number of tokens earned.
     */
    event TokensEarned(address indexed user, uint256 indexed activityType, uint256 indexed tokens);

    /**
     * @dev Emitted when tokens are redeemed.
     * @param user The address of the user redeeming tokens.
     * @param tokens The number of tokens redeemed.
     */
    event TokensRedeemed(address indexed user, uint256 indexed tokens);


    /**
     * @dev Emitted when activity reward amount is updated.
     * @param activityType The type of activity for which the reward amount is updated.
     * @param amount The new reward amount.
     */
    event ActivityRewardUpdated(uint256 indexed activityType, uint256 indexed amount);

    /**
     * @dev Emitted when the boost factor is updated.
     * @param oldFactor The old boost factor.
     * @param newFactor The new boost factor.
     */
    event BoostFactorUpdated(uint256 indexed oldFactor, uint256 indexed newFactor);

    /**
     * @dev Emitted when the payout duration is updated.
     * @param oldDuration The old payout duration.
     * @param newDuration The new payout duration.
     */
    event PayoutDurationUpdated(uint256 indexed oldDuration, uint256 indexed newDuration);

    /**
     * @dev Emitted when the variable reward approval rate is updated.
     * @param newRate The new rate.
     */
    event VariableRewardApprovalRateChanged(uint256 indexed newRate);

    /**
     * @notice Adds tokens to a user's balance based on an activity type.
     * @param user The address of the user earning tokens.
     * @param activityType The type of activity (e.g., "List Product"=1, "Make Purchase"=2, .etc).
     */
    function earnTokens(address user, uint256 activityType) external;

    /**
     * @notice Redeems tokens from a user's balance.
     * @param user The address of the user redeeming tokens.
     * @param tokens The number of tokens to redeem.
     */
    function redeemTokens(address user, uint256 tokens) external;

    /**
     * @notice Retrieves the current token balance of a user.
     * @param user The address of the user.
     * @return balance The current token balance.
     */
    function getTokenBalance(address user) external view returns (uint256);

    /**
     * @notice Retrieves the total tokens earned by a user for a specific activity type.
     * @param user The address of the user.
     * @param activityType The type of activity.
     * @return totalTokens The total number of tokens earned for the specified activity type.
     */
    function getTotalTokensEarnedForActivity(address user, uint256 activityType) external view returns (uint256);
}
PreviousValidatorsNextAddresses

Last updated 10 months ago