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

Treasury

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

/**
 * @title ITreasury
 * @dev Interface for the treasury of a decentralized finance (DeFi) system.
 * This treasury interface manages deposits, withdrawals, and can interact with
 * various investment protocols to generate yield.
 */
interface ITreasury {
    /// @notice Emitted when funds are deposited via fallback or receive function.
    /// @param sender The address of the sender who deposited the funds.
    /// @param amount The amount of funds deposited.
    event FundsReceived(address indexed sender, uint256 amount);

    /**
     * @dev Emitted when funds are withdrawn from the treasury.
     * @param recipient The address receiving the withdrawal.
     * @param amount The amount of funds withdrawn.
     * @param timestamp The time at which the withdrawal occurred.
     */
    event FundsWithdrawn(address indexed recipient, uint256 amount, uint256 timestamp);

    /**
     * @notice Withdraws funds from the treasury.
     * @dev Allows an authorized entity to withdraw funds from the treasury. This function
     * should include access controls to prevent unauthorized withdrawals.
     * @param recipient The address to receive the withdrawn funds.
     * @param amount The amount of funds to withdraw.
     */
    function withdraw(address recipient, uint256 amount) external;

    /**
     * @notice Returns the balance of the treasury.
     * @dev Provides the current balance of funds held by the treasury. This balance
     * might be in the form of native cryptocurrency or ERC20 tokens.
     * @return The current balance of the treasury.
     */
    function getBalance() external view returns (uint256);
}
PreviousRatingsReviewsNextValidators

Last updated 1 year ago