/*
 * Copyright 2025 CloudWeGo Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Code generated by MockGen. DO NOT EDIT.
// Source: interface.go
//
// Generated by this command:
//
//	mockgen -destination ../internal/mock/adk/Agent_mock.go --package adk -source interface.go
//

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

import (
	context "context"
	reflect "reflect"

	adk "github.com/cloudwego/eino/adk"
	gomock "go.uber.org/mock/gomock"
)

// MockAgent is a mock of Agent interface.
type MockAgent struct {
	ctrl     *gomock.Controller
	recorder *MockAgentMockRecorder
	isgomock struct{}
}

// MockAgentMockRecorder is the mock recorder for MockAgent.
type MockAgentMockRecorder struct {
	mock *MockAgent
}

// NewMockAgent creates a new mock instance.
func NewMockAgent(ctrl *gomock.Controller) *MockAgent {
	mock := &MockAgent{ctrl: ctrl}
	mock.recorder = &MockAgentMockRecorder{mock}
	return mock
}

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

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

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

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

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

// Run mocks base method.
func (m *MockAgent) Run(ctx context.Context, input *adk.AgentInput, options ...adk.AgentRunOption) *adk.AsyncIterator[*adk.AgentEvent] {
	m.ctrl.T.Helper()
	varargs := []any{ctx, input}
	for _, a := range options {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "Run", varargs...)
	ret0, _ := ret[0].(*adk.AsyncIterator[*adk.AgentEvent])
	return ret0
}

// Run indicates an expected call of Run.
func (mr *MockAgentMockRecorder) Run(ctx, input any, options ...any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]any{ctx, input}, options...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Run", reflect.TypeOf((*MockAgent)(nil).Run), varargs...)
}

// MockOnSubAgents is a mock of OnSubAgents interface.
type MockOnSubAgents struct {
	ctrl     *gomock.Controller
	recorder *MockOnSubAgentsMockRecorder
	isgomock struct{}
}

// MockOnSubAgentsMockRecorder is the mock recorder for MockOnSubAgents.
type MockOnSubAgentsMockRecorder struct {
	mock *MockOnSubAgents
}

// NewMockOnSubAgents creates a new mock instance.
func NewMockOnSubAgents(ctrl *gomock.Controller) *MockOnSubAgents {
	mock := &MockOnSubAgents{ctrl: ctrl}
	mock.recorder = &MockOnSubAgentsMockRecorder{mock}
	return mock
}

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

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

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

// OnSetAsSubAgent mocks base method.
func (m *MockOnSubAgents) OnSetAsSubAgent(ctx context.Context, parent adk.Agent) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "OnSetAsSubAgent", ctx, parent)
	ret0, _ := ret[0].(error)
	return ret0
}

// OnSetAsSubAgent indicates an expected call of OnSetAsSubAgent.
func (mr *MockOnSubAgentsMockRecorder) OnSetAsSubAgent(ctx, parent any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "OnSetAsSubAgent", reflect.TypeOf((*MockOnSubAgents)(nil).OnSetAsSubAgent), ctx, parent)
}

// OnSetSubAgents mocks base method.
func (m *MockOnSubAgents) OnSetSubAgents(ctx context.Context, subAgents []adk.Agent) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "OnSetSubAgents", ctx, subAgents)
	ret0, _ := ret[0].(error)
	return ret0
}

// OnSetSubAgents indicates an expected call of OnSetSubAgents.
func (mr *MockOnSubAgentsMockRecorder) OnSetSubAgents(ctx, subAgents any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "OnSetSubAgents", reflect.TypeOf((*MockOnSubAgents)(nil).OnSetSubAgents), ctx, subAgents)
}
