Skip to content

Commit

Permalink
--wip-- [skip ci]
Browse files Browse the repository at this point in the history
  • Loading branch information
shark0der committed Apr 1, 2024
1 parent 68b12b4 commit 4d11315
Show file tree
Hide file tree
Showing 14 changed files with 343 additions and 432 deletions.
12 changes: 6 additions & 6 deletions contracts/interfaces/ICover.sol
Original file line number Diff line number Diff line change
Expand Up @@ -129,15 +129,15 @@ interface ICover {

function totalActiveCoverInAsset(uint coverAsset) external view returns (uint);

function globalCapacityRatio() external view returns (uint);
function getGlobalCapacityRatio() external view returns (uint);

function globalRewardsRatio() external view returns (uint);
function getGlobalRewardsRatio() external view returns (uint);

function getPriceAndCapacityRatios(uint[] calldata productIds) external view returns (
function getGlobalMinPriceRatio() external pure returns (uint);

function getGlobalCapacityAndPriceRatios() external view returns (
uint _globalCapacityRatio,
uint _globalMinPriceRatio,
uint[] memory _initialPriceRatios,
uint[] memory _capacityReductionRatios
uint _globalMinPriceRatio
);

function GLOBAL_MIN_PRICE_RATIO() external view returns (uint);
Expand Down
67 changes: 40 additions & 27 deletions contracts/interfaces/ICoverProducts.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,54 +6,71 @@ import "./ICover.sol";

/* ========== DATA STRUCTURES ========== */

struct ProductParam {
string productName;
uint productId;
string ipfsMetadata;
Product product;
uint[] allowedPools;
}

struct ProductTypeParam {
string productTypeName;
uint productTypeId;
string ipfsMetadata;
ProductType productType;
}
struct ProductParam {
string productName;
uint productId;
string ipfsMetadata;
Product product;
uint[] allowedPools;
}

struct ProductTypeParam {
string productTypeName;
uint productTypeId;
string ipfsMetadata;
ProductType productType;
}

interface ICoverProducts {

/* ========== VIEWS ========== */

function allowedPoolsCount(uint productId) external view returns (uint);
function getProductType(uint productTypeId) external view returns (ProductType memory);

function products(uint id) external view returns (Product memory);
function getProductTypeName(uint productTypeId) external view returns (string memory);

function productNames(uint productId) external view returns (string memory);
function getProductTypeCount() external view returns (uint);

function productsCount() external view returns (uint);
function getProductTypes() external view returns (ProductType[] memory);

function productTypesCount() external view returns (uint);
function getProduct(uint productId) external view returns (Product memory);

function productTypes(uint id) external view returns (ProductType memory);
function getProductName(uint productTypeId) external view returns (string memory);

function getProductCount() external view returns (uint);

function getProducts() external view returns (Product[] memory);

function getProductTypes() external view returns (ProductType[] memory);
function getProductWithType(uint productId) external view returns (Product memory, ProductType memory);

function getAllowedPools(uint productId) external view returns (uint[] memory _allowedPools);

function getAllowedPoolsCount(uint productId) external view returns (uint);

function isPoolAllowed(uint productId, uint poolId) external view returns (bool);

function requirePoolIsAllowed(uint[] calldata productIds, uint poolId) external view;

function getProductWithType(uint productId) external view returns (Product memory, ProductType memory);
function getCapacityReductionRatios(uint[] calldata productIds) external view returns (uint[] memory);

function getInitialPrices(uint[] calldata productIds) external view returns (uint[] memory);

function getCapacityReductionRatiosInitialPrices(
uint[] calldata productIds
) external view returns (
uint[] memory initialPrices,
uint[] memory capacityReductionRatios
);

// deprecated
function productNames(uint) external view returns (string memory);

/* === MUTATIVE FUNCTIONS ==== */

function setProductTypes(ProductTypeParam[] calldata productTypes) external;

function setProducts(ProductParam[] calldata params) external;


/* ========== EVENTS ========== */

event ProductSet(uint id, string ipfsMetadata);
Expand Down Expand Up @@ -81,8 +98,4 @@ interface ICoverProducts {
// Misc
error CapacityReductionRatioAbove100Percent();

function getPriceAndCapacityRatios(uint[] calldata productIds) external view returns (
uint[] memory _initialPrices,
uint[] memory _capacityReductionRatios
);
}
74 changes: 48 additions & 26 deletions contracts/mocks/Claims/CLMockCoverProducts.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,44 +6,44 @@ import "../../interfaces/ICover.sol";
import "../../interfaces/ICoverProducts.sol";
import "../../interfaces/ICoverNFT.sol";


contract CLMockCoverProducts is ICoverProducts {

Product[] internal _products;
mapping(uint => uint) capacityFactors;

ProductType[] internal _productTypes;
mapping(uint => uint) internal capacityFactors;
string[] public productNames;


function products(uint id) external view returns (Product memory) {
return _products[id];
}

function productTypes(uint id) external view returns (ProductType memory) {
function getProductTypes(uint id) external view returns (ProductType memory) {
return _productTypes[id];
}


function addProductType(
uint8 claimMethod,
uint32 gracePeriod,
uint16 /*burnRatio*/
) external {
_productTypes.push(ProductType(
claimMethod,
gracePeriod
));
_productTypes.push(
ProductType(claimMethod, gracePeriod)
);
}

function addProduct(Product calldata product) external {
_products.push(product);
}

function productsCount() external view returns (uint) {
return _products.length;
function setProductTypes(ProductTypeParam[] calldata /* productTypes */) external pure {
revert("Unsupported");
}

function setProducts(ProductParam[] calldata /* params */) external pure {
revert("Unsupported");
}

function allowedPoolsCount(uint /* productId */ ) external pure returns (uint) {
function getInitialPrices(uint[] calldata /*productIds*/) external view returns (uint[] memory) {
revert("Unsupported");
}

function getAllowedPoolsCount(uint /* productId */) external pure returns (uint) {
revert("Unsupported");
}

Expand All @@ -63,30 +63,52 @@ contract CLMockCoverProducts is ICoverProducts {
revert("Unsupported");
}

function productTypesCount() external pure returns (uint) {
function getProductTypesCount() external pure returns (uint) {
revert("Unsupported");
}

function getPriceAndCapacityRatios(uint[] calldata /* productIds */ ) external pure returns (
uint[] memory /* _initialPrices */,
uint[] memory /* _capacityReductionRatios */
function getCapacityReductionRatiosInitialPrices(
uint[] calldata productIds
) external view returns (
uint[] memory initialPrices,
uint[] memory capacityReductionRatios
) {
revert("Unsupported");
}

function productNames(uint /* productId */) external pure returns (string memory) {
function getProductWithType(uint /* productId */) external pure returns (Product memory, ProductType memory) {
revert("Unsupported");
}

function getAllowedPools(uint /* productId */) external view returns (uint[] memory) {
revert("Unsupported");
}

function getCapacityReductionRatios(uint[] calldata /* productIds */) external view returns (uint[] memory) {
revert("Unsupported");
}

function getProduct(uint /* productId */) external view returns (Product memory) {
revert("Unsupported");
}

function getProductCount() external view returns (uint) {
revert("Unsupported");
}

function getProductName(uint /* productTypeId */) external view returns (string memory) {
revert("Unsupported");
}

function getProductWithType(uint /* productId */ ) external pure returns (Product memory, ProductType memory) {
function getProductType(uint /* productTypeId */) external view returns (ProductType memory) {
revert("Unsupported");
}

function setProductTypes(ProductTypeParam[] calldata /* productTypes */ ) external pure {
function getProductTypeCount() external view returns (uint) {
revert("Unsupported");
}

function setProducts(ProductParam[] calldata /* params */ ) external pure {
function getProductTypeName(uint /* productTypeId */) external view returns (string memory) {
revert("Unsupported");
}
}
}
7 changes: 4 additions & 3 deletions contracts/mocks/Cover/CoverMockStakingProducts.sol
Original file line number Diff line number Diff line change
Expand Up @@ -159,16 +159,17 @@ contract CoverMockStakingProducts is IStakingProducts {
uint productId = productInitParams[i].productId;

ICoverProducts _coverProducts = coverProducts();

// if there is a list of allowed pools for this product - this pool didn't exist yet so it's not in it
if (_coverProducts.allowedPoolsCount(productId) > 0) {
if (_coverProducts.getAllowedPoolsCount(productId) > 0) {
revert ICoverProducts.PoolNotAllowedForThisProduct(productId);
}

if (productId >= _coverProducts.productsCount()) {
if (productId >= _coverProducts.getProductCount()) {
revert ProductDoesntExistOrIsDeprecated();
}

Product memory product = _coverProducts.products(productId);
Product memory product = _coverProducts.getProduct(productId);

if (product.isDeprecated) {
revert ProductDoesntExistOrIsDeprecated();
Expand Down
19 changes: 19 additions & 0 deletions contracts/mocks/CoverProducts/CoverProductsMockCover.sol
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,25 @@ contract CoverProductsMockCover is ICover {
revert("Unsupported");
}

function getGlobalCapacityAndPriceRatios() external view returns (
uint _globalCapacityRatio,
uint _globalMinPriceRatio
) {
revert("Unsupported");
}

function getGlobalCapacityRatio() external view returns (uint) {
revert("Unsupported");
}

function getGlobalMinPriceRatio() external pure returns (uint) {
revert("Unsupported");
}

function getGlobalRewardsRatio() external view returns (uint) {
revert("Unsupported");
}

function getProducts() external view returns (Product[] memory) {
return _products;
}
Expand Down
Loading

0 comments on commit 4d11315

Please sign in to comment.