IAsset.sol

RWA Marketplace Asset Contract Interface (Solidity)

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "dual-layer-token/contracts/DLT/interface/IDLT.sol";

interface IAsset is IDLT {
    struct AssetInfo {
        address owner;
        uint256 price;
        uint256 salePrice;
        uint256 rewardApr;
        uint256 dueDate;
        uint256 lastClaimDate;
    }

    event AssetBaseURISet(string oldBaseURI, string newBaseURI);

    event AssetCreated(
        address indexed creator,
        address indexed owner,
        uint256 indexed mainId
    );

    error UnsupportedInterface();
    
    function settleAsset(uint256 mainId) external returns (uint256);

    function createAsset(
        address owner,
        uint256 mainId,
        uint256 price,
        uint256 dueDate,
        uint256 apr
    ) external;

    function relist(uint256 mainId, uint256 salePrice) external;

    function setBaseURI(string calldata newBaseURI) external;

    function updateClaim(uint256 mainId) external returns (uint256 reward);

    function getRemainingReward(
        uint256 mainId
    ) external view returns (uint256 reward);

    function getAvailableReward(
        uint256 mainId
    ) external view returns (uint256 reward);

    function getAssetInfo(
        uint256 mainId
    ) external view returns (AssetInfo calldata);

    function tokenURI(uint256 mainId) external view returns (string memory);
}

Last updated