// Code generated by MockGen. DO NOT EDIT.
// Source: link.go

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

import (
	v1 "github.com/baetyl/baetyl-go/v2/spec/v1"
	gomock "github.com/golang/mock/gomock"
	reflect "reflect"
)

// MockLink is a mock of Link interface
type MockLink struct {
	ctrl     *gomock.Controller
	recorder *MockLinkMockRecorder
}

// MockLinkMockRecorder is the mock recorder for MockLink
type MockLinkMockRecorder struct {
	mock *MockLink
}

// NewMockLink creates a new mock instance
func NewMockLink(ctrl *gomock.Controller) *MockLink {
	mock := &MockLink{ctrl: ctrl}
	mock.recorder = &MockLinkMockRecorder{mock}
	return mock
}

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

// State mocks base method
func (m *MockLink) State() *v1.Message {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "State")
	ret0, _ := ret[0].(*v1.Message)
	return ret0
}

// State indicates an expected call of State
func (mr *MockLinkMockRecorder) State() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "State", reflect.TypeOf((*MockLink)(nil).State))
}

// Receive mocks base method
func (m *MockLink) Receive() (<-chan *v1.Message, <-chan error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Receive")
	ret0, _ := ret[0].(<-chan *v1.Message)
	ret1, _ := ret[1].(<-chan error)
	return ret0, ret1
}

// Receive indicates an expected call of Receive
func (mr *MockLinkMockRecorder) Receive() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Receive", reflect.TypeOf((*MockLink)(nil).Receive))
}

// Request mocks base method
func (m *MockLink) Request(msg *v1.Message) (*v1.Message, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Request", msg)
	ret0, _ := ret[0].(*v1.Message)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// Request indicates an expected call of Request
func (mr *MockLinkMockRecorder) Request(msg interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Request", reflect.TypeOf((*MockLink)(nil).Request), msg)
}

// Send mocks base method
func (m *MockLink) Send(msg *v1.Message) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Send", msg)
	ret0, _ := ret[0].(error)
	return ret0
}

// Send indicates an expected call of Send
func (mr *MockLinkMockRecorder) Send(msg interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockLink)(nil).Send), msg)
}

// IsAsyncSupported mocks base method
func (m *MockLink) IsAsyncSupported() bool {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "IsAsyncSupported")
	ret0, _ := ret[0].(bool)
	return ret0
}

// IsAsyncSupported indicates an expected call of IsAsyncSupported
func (mr *MockLinkMockRecorder) IsAsyncSupported() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsAsyncSupported", reflect.TypeOf((*MockLink)(nil).IsAsyncSupported))
}
