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

package service

import (
	"context"
	"server/internal/model"
)

type (
	IAuthor interface {
		// List retrieves a paginated list of authors
		List(ctx context.Context, in *model.AuthorListIn) (out *model.AuthorListOut, err error)
		// Create adds a new author
		Create(ctx context.Context, in *model.AuthorAddIn) (out *model.AuthorCRUDOut, err error)
		// Update edits an author
		Update(ctx context.Context, in *model.AuthorEditIn) (out *model.AuthorCRUDOut, err error)
		// Delete removes an author by id
		Delete(ctx context.Context, in *model.AuthorDelIn) (out *model.AuthorCRUDOut, err error)
		// Apply 允许用户申请成为作者
		Apply(ctx context.Context, in *model.AuthorApplyIn) (out *model.AuthorApplyOut, err error)
		Detail(ctx context.Context, in *model.AuthorDetailIn) (out *model.AuthorDetailOut, err error)
		// AuthorInfo 获取作者信息
		AuthorInfo(ctx context.Context, in *model.AuthorInfoIn) (out *model.AuthorInfoOut, err error)
		// 审核作者申请（通过/拒绝）
		Review(ctx context.Context, in *model.AuthorReviewIn) (out *model.AuthorReviewOut, err error)
	}
)

var (
	localAuthor IAuthor
)

func Author() IAuthor {
	if localAuthor == nil {
		panic("implement not found for interface IAuthor, forgot register?")
	}
	return localAuthor
}

func RegisterAuthor(i IAuthor) {
	localAuthor = i
}
