139 lines
4.4 KiB
Go
139 lines
4.4 KiB
Go
package appdata
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"cosmossdk.io/schema"
|
|
)
|
|
|
|
// ModuleInitializationData represents data for related to module initialization, in particular
|
|
// the module's schema.
|
|
type ModuleInitializationData struct {
|
|
// ModuleName is the name of the module.
|
|
ModuleName string
|
|
|
|
// Schema is the schema of the module.
|
|
Schema schema.ModuleSchema
|
|
}
|
|
|
|
// StartBlockData represents the data that is passed to a listener when a block is started.
|
|
type StartBlockData struct {
|
|
// Height is the height of the block.
|
|
Height uint64
|
|
|
|
// Bytes is the raw byte representation of the block header. It may be nil if the source does not provide it.
|
|
HeaderBytes ToBytes
|
|
|
|
// JSON is the JSON representation of the block header. It should generally be a JSON object.
|
|
// It may be nil if the source does not provide it.
|
|
HeaderJSON ToJSON
|
|
}
|
|
|
|
// TxData represents the raw transaction data that is passed to a listener.
|
|
type TxData struct {
|
|
// TxIndex is the index of the transaction in the block.
|
|
TxIndex int32
|
|
|
|
// Bytes is the raw byte representation of the transaction.
|
|
Bytes ToBytes
|
|
|
|
// JSON is the JSON representation of the transaction. It should generally be a JSON object.
|
|
JSON ToJSON
|
|
}
|
|
|
|
// EventData represents event data that is passed to a listener when events are received.
|
|
type EventData struct {
|
|
// Events are the events that are received.
|
|
Events []Event
|
|
}
|
|
|
|
// Event represents the data for a single event.
|
|
type Event struct {
|
|
// BlockStage represents the stage of the block at which this event is associated.
|
|
// If the block stage is unknown, it should be set to UnknownBlockStage.
|
|
BlockStage BlockStage
|
|
|
|
// TxIndex is the 1-based index of the transaction in the block to which this event is associated.
|
|
// If TxIndex is zero, it means that we do not know the transaction index.
|
|
// Otherwise, the index should start with 1.
|
|
TxIndex int32
|
|
|
|
// MsgIndex is the 1-based index of the message in the transaction to which this event is associated.
|
|
// If MsgIndex is zero, it means that we do not know the message index.
|
|
// Otherwise, the index should start with 1.
|
|
MsgIndex int32
|
|
|
|
// EventIndex is the 1-based index of the event in the message to which this event is associated.
|
|
// If EventIndex is zero, it means that we do not know the event index.
|
|
// Otherwise, the index should start with 1.
|
|
EventIndex int32
|
|
|
|
// Type is the type of the event.
|
|
Type string
|
|
|
|
// Data lazily returns the JSON representation of the event.
|
|
Data ToJSON
|
|
|
|
// Attributes lazily returns the key-value attribute representation of the event.
|
|
Attributes ToEventAttributes
|
|
}
|
|
|
|
// BlockStage represents the stage of block processing for an event.
|
|
type BlockStage int32
|
|
|
|
const (
|
|
// UnknownBlockStage indicates that we do not know the block stage.
|
|
UnknownBlockStage BlockStage = iota
|
|
|
|
// PreBlockStage indicates that the event is associated with the pre-block stage.
|
|
PreBlockStage
|
|
|
|
// BeginBlockStage indicates that the event is associated with the begin-block stage.
|
|
BeginBlockStage
|
|
|
|
// TxProcessingStage indicates that the event is associated with the transaction processing stage.
|
|
TxProcessingStage
|
|
|
|
// EndBlockStage indicates that the event is associated with the end-block stage.
|
|
EndBlockStage
|
|
)
|
|
|
|
type EventAttribute = struct {
|
|
Key, Value string
|
|
}
|
|
|
|
// ToBytes is a function that lazily returns the raw byte representation of data.
|
|
type ToBytes = func() ([]byte, error)
|
|
|
|
// ToJSON is a function that lazily returns the JSON representation of data.
|
|
type ToJSON = func() (json.RawMessage, error)
|
|
|
|
// ToEventAttributes is a function that lazily returns the key-value attribute representation of an event.
|
|
type ToEventAttributes = func() ([]EventAttribute, error)
|
|
|
|
// KVPairData represents a batch of key-value pair data that is passed to a listener.
|
|
type KVPairData struct {
|
|
Updates []ActorKVPairUpdate
|
|
}
|
|
|
|
// ActorKVPairUpdate represents a key-value pair update for a specific module or account.
|
|
type ActorKVPairUpdate = struct {
|
|
// Actor is the byte representation of the module or account that is updating the key-value pair.
|
|
Actor []byte
|
|
|
|
// StateChanges are key-value pair updates.
|
|
StateChanges []schema.KVPairUpdate
|
|
}
|
|
|
|
// ObjectUpdateData represents object update data that is passed to a listener.
|
|
type ObjectUpdateData struct {
|
|
// ModuleName is the name of the module that the update corresponds to.
|
|
ModuleName string
|
|
|
|
// Updates are the object updates.
|
|
Updates []schema.StateObjectUpdate
|
|
}
|
|
|
|
// CommitData represents commit data. It is empty for now, but fields could be added later.
|
|
type CommitData struct{}
|