mapping(address => mapping(uint256 => uint256)) public holdings;
mapping(address => mapping(uint256 => bool)) public paused;
modifier authorized(address a);
modifier unpaused(address u, uint256 m);
constructor(address l, address s, address t);
function setAdmin(address a) external authorized(admin) returns (bool);
function setMarketPlace(address m) external authorized(admin) returns (bool);
function setConverter(address c, address[] memory i) external authorized(admin) returns (bool);
function setLender(address l) external authorized(admin) returns (bool);
function setFee(uint256 f) external authorized(admin) returns (bool);
function scheduleFeeChange() external authorized(admin) returns (bool);
function pauseRedemptions(address u, uint256 m, bool b) external authorized(admin);
function approve(address i) external authorized(marketPlace);
function redeem(uint8 p, address u, uint256 m) external unpaused(u, m) returns (bool);
function redeem(uint8 p, address u, uint256 m, uint8 protocol) external unpaused(u, m) returns (bool);
function redeem(uint8 p, address u, uint256 m, uint256 s, uint256 a, address periphery)
external
unpaused(u, m)
returns (bool);
function redeem(address u, uint256 m) external unpaused(u, m);
function authRedeem(address u, uint256 m, address f, address t, uint256 a)
external
authorized(IMarketPlace(marketPlace).markets(u, m, 0))
unpaused(u, m)
returns (uint256);
function autoRedeem(address u, uint256 m, address[] calldata f) external unpaused(u, m) returns (uint256);
function depositHoldings(address u, uint256 m, uint256 a) external;
function apwineWithdraw(address p, address u, uint256 a) internal;