package domain

import "io"

// Sink defines the contract for a storage sink that supports atomic two-phase writes.
type Sink interface {
	Begin(key string) (SinkTx, error)
	List(prefix string) ([]string, error)
	Remove(key string) error
}

// SinkTx represents an in-progress write transaction.
type SinkTx interface {
	io.Writer
	Commit() error
	Abort() error
}
