package interfaces

import (
	"context"
	"io"

	"nf-repo/internal/model"
	"nf-repo/internal/tool/rerr"
)

type ManifestHandler interface {
	Get(ctx context.Context, repo string, target string) (io.ReadCloser, string, *rerr.RepositoryError)
	Put(ctx context.Context, repo string, target string, digest string, mf *model.RepoSimpleManifest) *rerr.RepositoryError
	Delete(ctx context.Context, repo string, target string) *rerr.RepositoryError

	Catalog(ctx context.Context, limit int, last int, keyword string) (*model.Catalog, *rerr.RepositoryError)
	Tags(ctx context.Context, repo string, limit, last int, keyword string) (*model.Tag, *rerr.RepositoryError)
	Referrers(ctx context.Context, repo string, target string) (*model.IndexManifest, *rerr.RepositoryError)
}