interface IRaffleTicket {
event Approval(address indexed owner, address indexed spender, uint256 value);
event Transfer(address indexed from, address indexed to, uint256 value);
function allowance(address owner, address spender) view returns (uint256);
function approve(address spender, uint256 amount) returns (bool);
function balanceOf(address account) view returns (uint256);
function burn(uint256 amount);
function burnFrom(address account, uint256 amount);
function burnable() view returns (bool);
function decimals() view returns (uint8);
function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool);
function increaseAllowance(address spender, uint256 addedValue) returns (bool);
function mint(address to, uint256 amount);
function name() view returns (string);
function paused() view returns (bool);
function symbol() view returns (string);
function totalSupply() view returns (uint256);
function transfer(address to, uint256 amount) returns (bool);
function transferFrom(address from, address to, uint256 amount) returns (bool);
}
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);
}