37 lines
1.2 KiB
Solidity
37 lines
1.2 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.20;
|
|
|
|
interface INoteKeeper {
|
|
error OnlyAuthorized();
|
|
error NoteNotFound(address from, uint256 index);
|
|
error TransferNotFound(address from, uint256 index);
|
|
error AlreadyRedeemed(address from, uint256 index);
|
|
error IncompleteRedeemPayout();
|
|
|
|
struct Note {
|
|
uint256 payout;
|
|
uint48 created;
|
|
uint48 matured;
|
|
uint48 redeemed;
|
|
uint48 marketId;
|
|
}
|
|
|
|
function redeem(
|
|
address _user,
|
|
bool _sendGhst,
|
|
uint256[] memory _indexes
|
|
) external returns (uint256);
|
|
|
|
function forceRedeem(
|
|
bytes32 _receiver,
|
|
uint256[] memory _indexes
|
|
) external returns (uint256);
|
|
|
|
function redeemAll(address _user, bool _sendGhst) external returns (uint256);
|
|
function forceRedeemAll(bytes32 _receiver) external returns (uint256);
|
|
function pushNote(address to, uint256 index) external;
|
|
function pullNote(address from, uint256 index) external returns (uint256 newIndex_);
|
|
function indexesFor(address _user) external view returns (uint256[] memory);
|
|
function pendingFor(address _user, uint256 _index) external view returns (uint256 payout_, bool matured_);
|
|
}
|