// validator events

type EvtValidatorBond struct {
	Amount cosmos.Uint
	Signer cosmos.AccAddress
}

type EvtValidatorUnbond struct {
	Amount cosmos.Uint
	Signer cosmos.AccAddress
}
// host events

type EvtHostBond struct {
	Amount cosmos.Uint
	Chain common.Chain
	Pubkey common.Pubkey
}

type EvtHostUnbond struct {
	Amount cosmos.Uint
	Chain common.Chain
	Pubkey common.Pubkey
}

type EvtHostRegistration struct {
	Chain common.Chain
	Pubkey common.Pubkey
}

type EvtHostConfig struct {
	Chain common.Chain
	Pubkey common.Pubkey
	MetadataURI string
	MetadataNonce int64
  Status HostStatus
  SubscriptionRate int64
  PayAsYouGoRate int64
  MaxContractDuration int64
}

type EvtHostClaimSubscription struct {
	Pubkey common.Pubkey
  Chain common.chain
  Client common.Address
	Claimed cosmos.Uint
}

type EvtHostClaimPayAsYouGo struct {
	Pubkey common.Pubkey
  Chain common.chain
  Client common.Address
	Requests int64
	Claimed cosmos.Uint
}
// user events

type EvtUserOpenSubscription struct {
	Pubkey common.Pubkey
  Chain common.chain
  Client common.Address
  Start int64
	Duration int64
	Deposited cosmos.Uint
}

type EvtUserCancelSubscribe struct {
	Pubkey common.Pubkey
  Chain common.chain
	Client common.Address
}

type EvtUserOpenPasAsYouGo struct {
	Pubkey common.Pubkey
  Chain common.chain
  Client common.Address
	Start int64
	Duration int64
	Deposited cosmos.Uint
}
// contract events
type EvtSubscriptionExpired struct {
	Pubkey common.Pubkey
  Chain common.chain
  Client common.Address
}

type EvtPayAsYouGoExpired struct {
	Pubkey common.Pubkey
  Chain common.chain
  Client common.Address
}