package refreshtokens

import (
	"context"

	"github.com/tech/sendico/pkg/db/template"
	"github.com/tech/sendico/pkg/model"
	"go.mongodb.org/mongo-driver/v2/bson"
)

type DB interface {
	template.DB[*model.RefreshToken]
	Revoke(ctx context.Context, accountRef bson.ObjectID, session *model.SessionIdentifier) error
	RevokeAll(ctx context.Context, accountRef bson.ObjectID, deviceID string) error
	GetByCRT(ctx context.Context, t *model.ClientRefreshToken) (*model.RefreshToken, error)
	GetClient(ctx context.Context, clientID string) (*model.Client, error)
}
