/ contracts / interfaces / IGovernableLiquidityPool.sol
IGovernableLiquidityPool.sol
 1  pragma solidity >=0.6.0;
 2  
 3  import "../interfaces/IOptionsExchange.sol";
 4  
 5  
 6  interface IGovernableLiquidityPool {
 7  
 8      enum Operation { NONE, BUY, SELL }
 9  
10      struct PricingParameters {
11          address udlFeed;
12          IOptionsExchange.OptionType optType;
13          uint120 strike;
14          uint32 maturity;
15          uint32 t0;
16          uint32 t1;
17          uint[3] bsStockSpread; //buyStock == bsStockSpread[0], sellStock == bsStockSpread[1], spread == bsStockSpread[2]
18          uint120[] x;
19          uint120[] y;
20      }
21  
22      struct Range {
23          uint120 start;
24          uint120 end;
25      }
26  
27      event AddSymbol(string optSymbol);
28      
29      //event RemoveSymbol(string optSymbol);
30  
31      event Buy(address indexed token, address indexed buyer, uint price, uint volume);
32      
33      event Sell(address indexed token, address indexed seller, uint price, uint volume);
34  
35      function setParameters(uint _reserveRatio, uint _withdrawFee, uint _mt, uint _lm, address _hmngr, uint _ht) external;
36  
37      function addSymbol(address udlFeed, uint strike, uint _mt, IOptionsExchange.OptionType optType, uint t0, uint t1, uint120[] calldata x, uint120[] calldata y, uint[3] calldata bsStockSpread) external;
38      
39      function yield(uint dt) external view returns (uint);
40  
41      function depositTokens(address to, address token, uint value) external;
42  
43      function withdraw(uint amount) external;
44  
45      function valueOf(address ownr) external view returns (uint);
46      
47      function maturity() external view returns (uint);
48      
49      function withdrawFee() external view returns (uint);
50  
51      function calcFreeBalance() external view returns (uint balance);
52  
53      function listSymbols() external view returns (string memory available);
54  
55      function queryBuy(string calldata optSymbol, bool isBuy) external view returns (uint price, uint volume);
56  
57  
58      function buy(string calldata optSymbol, uint price, uint volume, address token)
59          external
60          returns (address addr);
61  
62      function sell(
63          string calldata optSymbol,
64          uint price,
65          uint volume
66      )
67          external;
68  
69      function getHedgingManager() external view returns (address manager);
70      function getLeverage() external view returns (uint leverage);
71      function getHedgeNotionalThreshold() external view returns (uint threshold);
72  }