This repository has been archived by the owner on Jul 2, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathIIncentivizer.sol
44 lines (40 loc) · 2.84 KB
/
IIncentivizer.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.13;
import "@equilibria/root/token/types/Token18.sol";
import "@equilibria/root/number/types/UFixed18.sol";
import "@equilibria/perennial-oracle/contracts/interfaces/IOracleProvider.sol";
import "./types/ProgramInfo.sol";
import "./IController.sol";
import "./IProduct.sol";
interface IIncentivizer {
event ProgramCreated(IProduct indexed product, uint256 indexed programId, ProgramInfo programInfo, UFixed18 programFeeAmount);
event ProgramStarted(IProduct indexed product, uint256 indexed programId, uint256 version);
event ProgramComplete(IProduct indexed product, uint256 indexed programId, uint256 version);
event Claim(IProduct indexed product, address indexed account, uint256 indexed programId, UFixed18 amount);
event FeeClaim(Token18 indexed token, UFixed18 amount);
error IncentivizerNotAllowedError(IProduct product);
error IncentivizerTooManyProgramsError();
error IncentivizerNotProgramOwnerError(IProduct product, uint256 programId);
error IncentivizerInvalidProgramError(IProduct product, uint256 programId);
error IncentivizerBatchClaimArgumentMismatchError();
function programInfos(IProduct product, uint256 programId) external view returns (ProgramInfo memory);
function fees(Token18 token) external view returns (UFixed18);
function initialize(IController controller_) external;
function create(IProduct product, ProgramInfo calldata info) external returns (uint256);
function complete(IProduct product, uint256 programId) external;
function sync(IOracleProvider.OracleVersion memory currentOracleVersion) external;
function syncAccount(address account, IOracleProvider.OracleVersion memory currentOracleVersion) external;
function claim(IProduct product, uint256[] calldata programIds) external;
function claimFor(address account, IProduct product, uint256[] calldata programIds) external;
function claim(IProduct[] calldata products, uint256[][] calldata programIds) external;
function claimFee(Token18[] calldata tokens) external;
function active(IProduct product) external view returns (uint256);
function count(IProduct product) external view returns (uint256);
function unclaimed(IProduct product, address account, uint256 programId) external view returns (UFixed18);
function available(IProduct product, uint256 programId) external view returns (UFixed18);
function versionStarted(IProduct product, uint256 programId) external view returns (uint256);
function versionComplete(IProduct product, uint256 programId) external view returns (uint256);
function owner(IProduct product, uint256 programId) external view returns (address);
function treasury(IProduct product, uint256 programId) external view returns (address);
function treasury(uint256 coordinatorId) external view returns (address);
}