package usecase

import (
	"backend/pkg/notification/domain/entity"
	"backend/pkg/notification/domain/template"
	"context"
)

type TemplateUseCase interface {
	// GetEmailTemplateByStatic 從靜態模板獲取郵件模板
	GetEmailTemplateByStatic(ctx context.Context, language template.Language, templateID template.Type) (template.EmailTemplate, error)

	// GetEmailTemplate 獲取郵件模板（優先從資料庫，回退到靜態模板）
	GetEmailTemplate(ctx context.Context, language template.Language, templateID template.Type) (template.EmailTemplate, error)

	// GetSMSTemplate 獲取 SMS 模板（優先從資料庫，回退到靜態模板）
	GetSMSTemplate(ctx context.Context, language template.Language, templateID template.Type) (SMSTemplateResp, error)

	// RenderEmailTemplate 渲染郵件模板（替換變數）
	RenderEmailTemplate(ctx context.Context, tmpl template.EmailTemplate, params entity.TemplateParams) (EmailTemplateResp, error)

	// RenderSMSTemplate 渲染 SMS 模板（替換變數）
	RenderSMSTemplate(ctx context.Context, tmpl SMSTemplateResp, params entity.TemplateParams) (SMSTemplateResp, error)
}
