interface IPetExchange {
event CompletedPetExchange(address indexed owner, uint256 indexed eggId1, uint256 indexed eggId2, uint8 eggTypeRecieved, uint256 exchangeId);
event StartedPetExchange(address indexed owner, uint256 indexed eggId1, uint256 indexed eggId2, uint256 exchangeId);
function completeExchange(uint256 _exchangeId);
function eggs(uint256) view returns (address);
function getPetExchange(uint256 _exchangeId) view returns (tuple(uint256 id, address owner, uint256 petId1, uint256 petId2, uint256 seedblock, uint256 finishTime, uint8 status));
function getUserPetExchanges(address _address) view returns (tuple(uint256 id, address owner, uint256 petId1, uint256 petId2, uint256 seedblock, uint256 finishTime, uint8 status)[]);
function idToPetExchange(uint256) view returns (uint256 id, address owner, uint256 petId1, uint256 petId2, uint256 seedblock, uint256 finishTime, uint8 status);
function paused() view returns (bool);
function profileExchangedPets(address, uint256) view returns (uint256 id, address owner, uint256 petId1, uint256 petId2, uint256 seedblock, uint256 finishTime, uint8 status);
function startExchange(uint256 _petId1, uint256 _petId2);
function totalExchanges() view returns (uint256);
}
interface IPasture {
event PetReleased(uint256 petId, string indexed releaseReason, uint256 releaseTime);
function getProfileReleasedPet(address _profile, uint256 _index) view returns (tuple(uint256 id, uint256 petId, uint64 releaseTime, string releaseReason, address previousOwner));
function getProfileReleasedPets(address _profile) view returns (tuple(uint256 id, uint256 petId, uint64 releaseTime, string releaseReason, address previousOwner)[]);
function getReleasedPet(uint256 _petId) view returns (tuple(uint256 id, uint256 petId, uint64 releaseTime, string releaseReason, address previousOwner));
function getReleasedPets() view returns (tuple(uint256 id, uint256 petId, uint64 releaseTime, string releaseReason, address previousOwner)[]);
function petCore() view returns (address);
function petToReleasedPet(uint256) view returns (uint256);
function profileReleasedPets(address, uint256) view returns (uint256 id, uint256 petId, uint64 releaseTime, string releaseReason, address previousOwner);
function releasePet(address _holder, uint256 _petId, string _releaseReason, address _previousOwner);
function releasedPets(uint256) view returns (uint256 id, uint256 petId, uint64 releaseTime, string releaseReason, address previousOwner);
}
interface IPetExchangeHarmony {
event PetExchangeCompleted(address indexed owner, uint256 indexed eggId1, uint256 indexed eggId2, uint8 eggTypeRecieved);
event PetExchangeStarted(address indexed owner, uint256 indexed eggId1, uint256 indexed eggId2);
function completeExchange(uint256 _exchangeId);
function eggs(uint256) view returns (address);
function getPetExchange(uint256 _exchangeId) view returns (tuple(uint256 id, address owner, uint256 petId1, uint256 petId2, uint256 seedblock, uint256 finishTime, uint8 status));
function getUserPetExchanges(address _address) view returns (tuple(uint256 id, address owner, uint256 petId1, uint256 petId2, uint256 seedblock, uint256 finishTime, uint8 status)[]);
function idToPetExchange(uint256) view returns (uint256 id, address owner, uint256 petId1, uint256 petId2, uint256 seedblock, uint256 finishTime, uint8 status);
function paused() view returns (bool);
function profileExchangedPets(address, uint256) view returns (uint256 id, address owner, uint256 petId1, uint256 petId2, uint256 seedblock, uint256 finishTime, uint8 status);
function startExchange(uint256 _petId1, uint256 _petId2);
function totalExchanges() view returns (uint256);
}