// ================================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// You can delete these comments if you wish manually maintain this interface file.
// ================================================================================

package service

import (
	"context"
	"hotgo/internal/library/hgorm/handler"
	"hotgo/internal/model/input/payin"

	"github.com/gogf/gf/v2/database/gdb"
)

type (
	IPay interface {
		Create(ctx context.Context, in payin.PayCreateInp) (res *payin.PayCreateModel, err error)
		GenNotifyURL(ctx context.Context, in payin.PayCreateInp) (notifyURL string, err error)
		Notify(ctx context.Context, in *payin.PayNotifyInp) (res *payin.PayNotifyModel, err error)
		Model(ctx context.Context, option ...*handler.Option) *gdb.Model
		List(ctx context.Context, in payin.PayListInp) (list []*payin.PayListModel, totalCount int, err error)
		Export(ctx context.Context, in payin.PayListInp) (err error)
		Edit(ctx context.Context, in payin.PayEditInp) (err error)
		Delete(ctx context.Context, in payin.PayDeleteInp) (err error)
		View(ctx context.Context, in payin.PayViewInp) (res *payin.PayViewModel, err error)
		Status(ctx context.Context, in payin.PayStatusInp) (err error)
	}
	IPayRefund interface {
		Model(ctx context.Context, option ...*handler.Option) *gdb.Model
		Refund(ctx context.Context, in *payin.PayRefundInp) (res *payin.PayRefundModel, err error)
		List(ctx context.Context, in *payin.PayRefundListInp) (list []*payin.PayRefundListModel, totalCount int, err error)
		Export(ctx context.Context, in *payin.PayRefundListInp) (err error)
	}
)

var (
	localPay       IPay
	localPayRefund IPayRefund
)

func PayRefund() IPayRefund {
	if localPayRefund == nil {
		panic("implement not found for interface IPayRefund, forgot register?")
	}
	return localPayRefund
}

func RegisterPayRefund(i IPayRefund) {
	localPayRefund = i
}

func Pay() IPay {
	if localPay == nil {
		panic("implement not found for interface IPay, forgot register?")
	}
	return localPay
}

func RegisterPay(i IPay) {
	localPay = i
}
