wormhole-explorer/fly-event-processor/queue/types.go

94 lines
2.6 KiB
Go
Raw Normal View History

package queue
import (
"context"
"time"
)
const (
DeduplicateVaaEventType = "duplicated-vaa"
GovernorStatusEventType = "governor-status"
)
// sqsEvent represents a event data from SQS.
type sqsEvent struct {
MessageID string `json:"MessageId"`
Message string `json:"Message"`
}
// Event represents a event data.
type Event interface {
EventDuplicateVaa | EventGovernorStatus
}
// EventDuplicateVaa defition.
type EventDuplicateVaa struct {
TrackID string `json:"trackId"`
Type string `json:"type"`
Source string `json:"source"`
Data DuplicateVaa `json:"data"`
}
// DuplicateVaa defition.
type DuplicateVaa struct {
VaaID string `json:"vaaId"`
ChainID uint16 `json:"chainId"`
Version uint8 `json:"version"`
GuardianSetIndex uint32 `json:"guardianSetIndex"`
Vaa []byte `json:"vaas"`
Digest string `json:"digest"`
ConsistencyLevel uint8 `json:"consistencyLevel"`
Timestamp *time.Time `json:"timestamp"`
}
// EventGovernorStatus defition.
type EventGovernorStatus struct {
TrackID string `json:"trackId"`
Type string `json:"type"`
Source string `json:"source"`
Data GovernorStatus `json:"data"`
}
// GovernorStatus defition.
type GovernorStatus struct {
NodeAddress string `json:"nodeAddress"`
NodeName string `json:"nodeName"`
Counter int64 `json:"counter"`
Timestamp int64 `json:"timestamp"`
Chains []*ChainStatus `json:"chains"`
}
// ChainStatus defition.
type ChainStatus struct {
ChainId uint32 `json:"chainId"`
RemainingAvailableNotional uint64 `json:"remainingAvailableNotional"`
Emitters []*Emitter `json:"emitters"`
}
// Emitter defition.
type Emitter struct {
EmitterAddress string `bson:"emitteraddress" json:"emitterAddress"`
TotalEnqueuedVaas uint64 `bson:"totalenqueuedvaas" json:"totalEnqueuedVaas"`
EnqueuedVaas []*EnqueuedVAA `bson:"enqueuedvaas" json:"enqueuedVaas"`
}
// EnqueuedVAA defition.
type EnqueuedVAA struct {
Sequence string `bson:"sequence" json:"sequence"`
ReleaseTime uint64 `bson:"releasetime" json:"releaseTime"`
NotionalValue uint64 `bson:"notionalvalue" json:"notionalValue"`
TxHash string `bson:"txhash" json:"txHash"`
}
// ConsumerMessage defition.
type ConsumerMessage[T any] interface {
Retry() uint8
Data() T
Done()
Failed()
IsExpired() bool
}
// ConsumeFunc is a function to consume Event.
type ConsumeFunc[T any] func(context.Context) <-chan ConsumerMessage[T]