// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/tidbcloud/aisupport/packages/sdk-go/infra/lark/client/im (interfaces: IM)
//
// Generated by this command:
//
//	mockgen -destination ../../packages/sdk-go/infra/lark/client/im/im_mock.go -package im github.com/tidbcloud/aisupport/packages/sdk-go/infra/lark/client/im IM
//

// Package im is a generated GoMock package.
package im

import (
	context "context"
	io "io"
	reflect "reflect"

	larkim "github.com/larksuite/oapi-sdk-go/v3/service/im/v1"
	gomock "go.uber.org/mock/gomock"
)

// MockIM is a mock of IM interface.
type MockIM struct {
	ctrl     *gomock.Controller
	recorder *MockIMMockRecorder
	isgomock struct{}
}

// MockIMMockRecorder is the mock recorder for MockIM.
type MockIMMockRecorder struct {
	mock *MockIM
}

// NewMockIM creates a new mock instance.
func NewMockIM(ctrl *gomock.Controller) *MockIM {
	mock := &MockIM{ctrl: ctrl}
	mock.recorder = &MockIMMockRecorder{mock}
	return mock
}

// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockIM) EXPECT() *MockIMMockRecorder {
	return m.recorder
}

// GenerateChatShareLink mocks base method.
func (m *MockIM) GenerateChatShareLink(ctx context.Context, chatID, validityPeriod string) (string, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GenerateChatShareLink", ctx, chatID, validityPeriod)
	ret0, _ := ret[0].(string)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// GenerateChatShareLink indicates an expected call of GenerateChatShareLink.
func (mr *MockIMMockRecorder) GenerateChatShareLink(ctx, chatID, validityPeriod any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenerateChatShareLink", reflect.TypeOf((*MockIM)(nil).GenerateChatShareLink), ctx, chatID, validityPeriod)
}

// ListMessageReadUserOpenIDs mocks base method.
func (m *MockIM) ListMessageReadUserOpenIDs(ctx context.Context, msgID string) ([]string, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ListMessageReadUserOpenIDs", ctx, msgID)
	ret0, _ := ret[0].([]string)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ListMessageReadUserOpenIDs indicates an expected call of ListMessageReadUserOpenIDs.
func (mr *MockIMMockRecorder) ListMessageReadUserOpenIDs(ctx, msgID any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMessageReadUserOpenIDs", reflect.TypeOf((*MockIM)(nil).ListMessageReadUserOpenIDs), ctx, msgID)
}

// ListMessages mocks base method.
func (m *MockIM) ListMessages(ctx context.Context, chatID, startTime, endTime string) (*larkim.ListMessageRespData, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ListMessages", ctx, chatID, startTime, endTime)
	ret0, _ := ret[0].(*larkim.ListMessageRespData)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ListMessages indicates an expected call of ListMessages.
func (mr *MockIMMockRecorder) ListMessages(ctx, chatID, startTime, endTime any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMessages", reflect.TypeOf((*MockIM)(nil).ListMessages), ctx, chatID, startTime, endTime)
}

// PatchMessage mocks base method.
func (m *MockIM) PatchMessage(ctx context.Context, msgID string, msg Message) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "PatchMessage", ctx, msgID, msg)
	ret0, _ := ret[0].(error)
	return ret0
}

// PatchMessage indicates an expected call of PatchMessage.
func (mr *MockIMMockRecorder) PatchMessage(ctx, msgID, msg any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchMessage", reflect.TypeOf((*MockIM)(nil).PatchMessage), ctx, msgID, msg)
}

// ReactEmoji mocks base method.
func (m *MockIM) ReactEmoji(ctx context.Context, msgID, emoji string) (*string, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ReactEmoji", ctx, msgID, emoji)
	ret0, _ := ret[0].(*string)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ReactEmoji indicates an expected call of ReactEmoji.
func (mr *MockIMMockRecorder) ReactEmoji(ctx, msgID, emoji any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReactEmoji", reflect.TypeOf((*MockIM)(nil).ReactEmoji), ctx, msgID, emoji)
}

// ReplyMessage mocks base method.
func (m *MockIM) ReplyMessage(ctx context.Context, msgID string, msg Message, replyInThread bool) (*string, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ReplyMessage", ctx, msgID, msg, replyInThread)
	ret0, _ := ret[0].(*string)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ReplyMessage indicates an expected call of ReplyMessage.
func (mr *MockIMMockRecorder) ReplyMessage(ctx, msgID, msg, replyInThread any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReplyMessage", reflect.TypeOf((*MockIM)(nil).ReplyMessage), ctx, msgID, msg, replyInThread)
}

// SendMessage mocks base method.
func (m *MockIM) SendMessage(ctx context.Context, receiveType, receiveID string, msg Message) (*string, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "SendMessage", ctx, receiveType, receiveID, msg)
	ret0, _ := ret[0].(*string)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// SendMessage indicates an expected call of SendMessage.
func (mr *MockIMMockRecorder) SendMessage(ctx, receiveType, receiveID, msg any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMessage", reflect.TypeOf((*MockIM)(nil).SendMessage), ctx, receiveType, receiveID, msg)
}

// SendMessageViaWebhook mocks base method.
func (m *MockIM) SendMessageViaWebhook(ctx context.Context, webhookURL string, msg Message) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "SendMessageViaWebhook", ctx, webhookURL, msg)
	ret0, _ := ret[0].(error)
	return ret0
}

// SendMessageViaWebhook indicates an expected call of SendMessageViaWebhook.
func (mr *MockIMMockRecorder) SendMessageViaWebhook(ctx, webhookURL, msg any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMessageViaWebhook", reflect.TypeOf((*MockIM)(nil).SendMessageViaWebhook), ctx, webhookURL, msg)
}

// UnreactEmoji mocks base method.
func (m *MockIM) UnreactEmoji(ctx context.Context, msgID, reactionID string) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "UnreactEmoji", ctx, msgID, reactionID)
	ret0, _ := ret[0].(error)
	return ret0
}

// UnreactEmoji indicates an expected call of UnreactEmoji.
func (mr *MockIMMockRecorder) UnreactEmoji(ctx, msgID, reactionID any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnreactEmoji", reflect.TypeOf((*MockIM)(nil).UnreactEmoji), ctx, msgID, reactionID)
}

// UploadFile mocks base method.
func (m *MockIM) UploadFile(ctx context.Context, fileType, fileName string, file io.Reader) (*string, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "UploadFile", ctx, fileType, fileName, file)
	ret0, _ := ret[0].(*string)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// UploadFile indicates an expected call of UploadFile.
func (mr *MockIMMockRecorder) UploadFile(ctx, fileType, fileName, file any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadFile", reflect.TypeOf((*MockIM)(nil).UploadFile), ctx, fileType, fileName, file)
}

// UploadImage mocks base method.
func (m *MockIM) UploadImage(ctx context.Context, image io.Reader) (*string, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "UploadImage", ctx, image)
	ret0, _ := ret[0].(*string)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// UploadImage indicates an expected call of UploadImage.
func (mr *MockIMMockRecorder) UploadImage(ctx, image any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadImage", reflect.TypeOf((*MockIM)(nil).UploadImage), ctx, image)
}

// UrgentAppMessage mocks base method.
func (m *MockIM) UrgentAppMessage(ctx context.Context, msgID string, userOpenIDs []string) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "UrgentAppMessage", ctx, msgID, userOpenIDs)
	ret0, _ := ret[0].(error)
	return ret0
}

// UrgentAppMessage indicates an expected call of UrgentAppMessage.
func (mr *MockIMMockRecorder) UrgentAppMessage(ctx, msgID, userOpenIDs any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UrgentAppMessage", reflect.TypeOf((*MockIM)(nil).UrgentAppMessage), ctx, msgID, userOpenIDs)
}
