package layer

import (
	"context"
	"errors"

	"git.frostfs.info/TrueCloudLab/frostfs-http-gw/internal/data"
	cid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id"
)

// TreeService provide interface to interact with tree service using s3 data models.
type TreeService interface {
	GetLatestVersion(ctx context.Context, cnrID *cid.ID, objectName string) (*data.NodeVersion, error)
	GetSubTreeByPrefix(ctx context.Context, bktInfo *data.BucketInfo, prefix string, latestOnly bool) ([]data.NodeInfo, string, error)
	CheckSettingsNodeExists(ctx context.Context, bktInfo *data.BucketInfo) error
}

var (
	// ErrNodeNotFound is returned from Tree service in case of not found error.
	ErrNodeNotFound = errors.New("not found")

	// ErrNodeAccessDenied is returned from Tree service in case of access denied error.
	ErrNodeAccessDenied = errors.New("access denied")
)