package bindingowner

import "errors"

var (
	// ErrDependencyMissing reports that the repository cannot be constructed or
	// used because a required dependency is absent.
	ErrDependencyMissing = errors.New("connector binding owner: dependency missing")
	// ErrInvalidRequest reports a malformed exact coordinate or binding identity.
	ErrInvalidRequest = errors.New("connector binding owner: invalid request")
	// ErrAuthorityConflict reports missing, incomplete, corrupt, or disagreeing
	// immutable owner authority.
	ErrAuthorityConflict = errors.New("connector binding owner: authority conflict")
	// ErrExactReadBudgetExceeded reports that one multi-generation exact read
	// would exceed the closed aggregate definition-set byte budget.
	ErrExactReadBudgetExceeded = errors.New("connector binding owner: exact read budget exceeded")
)

// PackGenerationCoordinate identifies both the target-local immutable storage
// parent and its portable owner coordinate. StorageID is the exact opaque
// PackGeneration ID assigned by its owner; Connector bounds it to the physical
// identifier width but never derives or interprets its contents. The coordinate
// is intentionally independent of the Catalog binding so exact readers can
// compare the two authorities.
type PackGenerationCoordinate struct {
	StorageID          string
	OwnerPack          string
	PackInstallationID string
	PackPayloadDigest  string
}
