package usecase

import (
	"context"
	"time"
)

// CreateLoginSessionRequest binds tenant/provider before OAuth login redirect.
type CreateLoginSessionRequest struct {
	TenantID    string
	TenantSlug  string
	Provider    string
	RedirectURI string
	TTL         time.Duration
}

// LoginSessionView is returned to clients before OAuth login redirect.
type LoginSessionView struct {
	SessionID string
	ExpiresIn int
}

// LoginSessionUseCase manages social login sessions (no invite / registration metadata).
type LoginSessionUseCase interface {
	Create(ctx context.Context, req *CreateLoginSessionRequest) (*LoginSessionView, error)
	Get(ctx context.Context, sessionID string) (*CreateLoginSessionRequest, error)
	Delete(ctx context.Context, sessionID string) error
}
