package mixrepos

import (
	"context"
	v1 "voucher/api/v1"
	"voucher/internal/biz/bo"
)

type CmbMixRepo interface {
	// OrderVerify cmb 券订单参数验证
	OrderVerify(ctx context.Context, req *v1.CmbRequest) (*v1.CmbOrderRequest, error)
	// QueryVerify cmb 券订单参数验证
	QueryVerify(ctx context.Context, req *v1.CmbRequest) (*v1.CmbQueryRequest, error)
	// ProductQueryVerify cmb 券产品查询参数验证
	ProductQueryVerify(ctx context.Context, req *v1.CmbRequest) (*v1.CmbQueryProductRequest, error)
	// GetMockRequest cmb 券参数mock构建
	GetMockRequest(ctx context.Context, bizContent string) (*v1.CmbRequest, error)
	// GetRequest 我们请求cmb参数构建处理
	GetRequest(ctx context.Context, reqBo *bo.CmbRequestBo) (*v1.CmbRequest, error)
	// GetResponse cmb 请求我们响应返回结果处理
	GetResponse(ctx context.Context, reqBo *bo.CmbResponseBo) (*v1.CmbReply, error)
	// VerifyResponse cmb 请求响应返回结果验证
	VerifyResponse(ctx context.Context, req *v1.CmbReply) error
	// Request cmb 请求
	Request(ctx context.Context, req *v1.CmbRequest, uri string) (*v1.CmbReply, error)
	// Decrypt cmb  业务参数 解密
	Decrypt(ctx context.Context, encryptBody string) (string, error)
}
