package actionsignoff

import "context"

type Service interface {
	GetByFlight(ctx context.Context, flightID []byte) (*ActionSignoff, error)
	GetByComplaint(ctx context.Context, complaintID []byte) (*ActionSignoff, error)
	GetByComplaintIDs(ctx context.Context, complaintIDs [][]byte) (map[string]*ActionSignoff, error)
	Sign(ctx context.Context, flightID, helicopterID []byte, signer []byte) (*ActionSignoff, error)
	SignForComplaint(ctx context.Context, complaintID, flightID, helicopterID []byte, signer []byte) (*ActionSignoff, error)
	Unsign(ctx context.Context, flightID []byte, actor []byte) (*ActionSignoff, error)
	// UnsignByComplaint clears the signature on a complaint-linked sign-off (no-op when
	// there is none or it is already unsigned) — used when a closed complaint is reopened
	// and to toggle a complaint sign-off off. Returns nil row when none exists.
	UnsignByComplaint(ctx context.Context, complaintID []byte) (*ActionSignoff, error)
}
