package domain

import "context"

type RoundEventRepository interface {
	Save(ctx context.Context, id string, events ...RoundEvent) error
	Load(ctx context.Context, id string) (*Round, error)
}

type RoundRepository interface {
	AddOrUpdateRound(ctx context.Context, round Round) error
	GetCurrentRound(ctx context.Context) (*Round, error)
	GetRoundWithId(ctx context.Context, id string) (*Round, error)
	GetRoundWithTxid(ctx context.Context, txid string) (*Round, error)
}

type VtxoRepository interface {
	AddVtxos(ctx context.Context, vtxos []Vtxo) error
	SpendVtxos(ctx context.Context, vtxos []VtxoKey) error
	GetVtxos(ctx context.Context, vtxos []VtxoKey) ([]Vtxo, error)
	GetSpendableVtxosWithPubkey(ctx context.Context, pubkey string) ([]Vtxo, error)
}
