interface IRaffleWholesale {
event FeeAddressAdded(address indexed feeAddress, uint256 indexed feePercent);
event FeeDeferred(address indexed source, address indexed from, address indexed to, address token, uint256 amount, uint64 timestamp);
event FeeDisbursed(address indexed source, address indexed from, address indexed to, address token, uint256 amount, uint64 timestamp);
event FeeLockedBurned(address indexed source, address indexed from, address indexed to, address token, uint256 amount, uint64 timestamp);
event LimitSet(address indexed wholesaler, uint256 limit);
event PricingSet(address indexed wholesaler, tuple(uint256[] levels, uint256[] prices, uint256 periodLimit, uint256 method, uint256 startPeriod) pricing);
event RefundClaimed(address indexed wholesaler, uint256 period, uint256 amount, uint256 refundableTickets);
event TicketsPurchased(address indexed wholesaler, address indexed recipient, uint256 tickets);
function claimRefund(uint256 _period);
function costPerTicket() view returns (uint256);
function currentPeriod() view returns (uint256);
function feeAddresses(uint256) view returns (address);
function feePercents(uint256) view returns (uint256);
function getCurrentPeriod() returns (uint256);
function paused() view returns (bool);
function periodDuration() view returns (uint256);
function periodLimit(address) view returns (uint256);
function potentialRefundableTickets(address, uint256) view returns (uint256);
function powerToken() view returns (address);
function purchaseTickets(address _recipient, uint256 _tickets);
function purchaseTicketsWithLocked(address _recipient, uint256 _tickets);
function raffleTickets() view returns (address);
function ticketsPurchased(address, uint256) view returns (uint256);
function userPricing(address) view returns (uint256 periodLimit, uint256 method, uint256 startPeriod);
}