abstract contract Core {

  // native core functions

  function transfer(address[2] memory addressArr, uint[2] memory uintArr) external virtual returns(bool success);

  function approve(address[2] memory addressArr, uint[2] memory uintArr) external virtual returns(bool success);

  function increaseAllowance(address[2] memory addressArr, uint[2] memory uintArr) external virtual returns(bool success);

  function decreaseAllowance(address[2] memory addressArr, uint[2] memory uintArr) external virtual returns(bool success);

  function transferFrom(address[3] memory addressArr, uint[3] memory uintArr) external virtual returns(bool success);

  //non-native core functions

  function mint(address[2] memory addressArr, uint[2] memory uintArr) external virtual returns(bool success);

  function burn(address[2] memory addressArr, uint[2] memory uintArr) external virtual returns(bool success);

  function updateTotalSupply(uint[2] memory uintArr) external virtual returns(bool success);

  function updateCurrentSupply(uint[2] memory uintArr) external virtual returns(bool success);

  function updateJointSupply(uint[2] memory uintArr) external virtual returns(bool success);

}
function transfer(address[2] memory addressArr, uint[2] memory uintArr) external virtual returns(bool success);

// native core functions