// Allows data host to bond with asset
type MsgHostBond struct {
	Amount cosmos.Uint
	Chain common.Chain // The symbol of the native token of the blockchain being registered (e.g. BTC or ETH, etc.)
	Pubkey common.Pubkey // The public key of the server being registered. Must match signer
	Signer cosmos.AccAddress
}
// Allows data host to unbond with asset
type MsgHostUnbond struct {
	Amount cosmos.Uint
	Chain common.Chain // The symbol of the native token of the blockchain being registered (e.g. BTC or ETH, etc.)
	Pubkey common.Pubkey // The public key of the server being registered. Must match signer
	Signer cosmos.AccAddress
}
// This message registers a new DataHost on-chain, or updates the existing DataHost’s record on-chain. This message costs 1 NT to perform, and locks up the current [DataHostBondAmount](<https://shapeshift.notion.site/KVStore-Items-beac5689487342cebc24dec89c55cc2e>) from the account registering this host on-chain.
type MsgHostRegistration struct {
	Chain common.Chain // The symbol of the native token of the blockchain being registered (e.g. BTC or ETH, etc.)
	Pubkey common.Pubkey // The public key of the server being registered. Must match signer
	Signer cosmos.AccAddress
}
// update the configuration of a host
type MsgHostConfig struct {
	Chain common.Chain // The symbol of the native token of the blockchain being registered (e.g. BTC or ETH, etc.)
	Pubkey common.Pubkey // The public key of the server being registered. Must match signer
	MetadataURI string
	MetadataNonce int // each time the metadata is changed, the data host should update this nonce
  Status enum // online, offline
  SubscriptionRate int // tokens per block
  PayAsYouGoRate int // tokens per request
  MaxContractDuration int // maximum duration a contract can be opened for
  Signer cosmos.AccAddress
}
// claim income from a contract

type MsgHostClaimSubscription struct {
	Chain common.Chain // The symbol of the native token of the blockchain being registered (e.g. BTC or ETH, etc.)
	Pubkey common.Pubkey // The public key of the server being registered. Must match signer
	Client common.Address // address that can make these queries
	Signer cosmos.AccAddress
}

type MsgHostClaimPayAsYouGo struct {
	Chain common.Chain // The symbol of the native token of the blockchain being registered (e.g. BTC or ETH, etc.)
	Pubkey common.Pubkey // The public key of the server being registered. Must match signer
	Client common.Address // address that can make these queries
	Signer cosmos.AccAddress
}