//go:generate ${GOBIN}/mockgen -destination api_mock.go -package=api ${GO_MODULE}/pkg/service/itoken/api InternalTokenServiceAPI
package api

import (
	"context"
	"time"

	itkent "github.com/tidbcloud/devops/entity/itoken"
)

type IssueJWTTokenParam struct {
	Subject      string
	Audience     string
	ExpiresAt    *time.Time
	CustomClaims map[string]any
	JWTID        *string
}

type InternalTokenServiceAPI interface {
	IssueJWTToken(ctx context.Context, param IssueJWTTokenParam) (*itkent.IssuedJWTToken, error)
	GetJWKS(ctx context.Context) (*itkent.JWKSet, error)
}
