enum MessageType {
  INTERCHAIN_TRANSFER,
  DEPLOY_INTERCHAIN_TOKEN,
  DEPLOY_TOKEN_MANAGER,
  SEND_TO_HUB,
  RECEIVE_FROM_HUB
}
struct InterchainTransfer {
  uint256 messageType;
  bytes32 tokenId;
  bytes sourceAddress;
  bytes destinationAddress;
  uint256 amount;
  bytes data;
}
struct DeployInterchainToken {
  uint256 messageType;
  bytes32 tokenId;
  string name;
  string symbol;
  uint8 decimals;
  bytes minter;
}
struct DeployTokenManager {
  uint256 messageType;
  bytes32 tokenId;
  uint256 tokenManagerType;
  bytes params;
}