// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/kardolus/chatgpt-cli/agent/core (interfaces: Budget)

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

import (
	reflect "reflect"
	time "time"

	gomock "github.com/golang/mock/gomock"
	core "github.com/kardolus/chatgpt-cli/agent/core"
	types "github.com/kardolus/chatgpt-cli/agent/types"
)

// MockBudget is a mock of Budget interface.
type MockBudget struct {
	ctrl     *gomock.Controller
	recorder *MockBudgetMockRecorder
}

// MockBudgetMockRecorder is the mock recorder for MockBudget.
type MockBudgetMockRecorder struct {
	mock *MockBudget
}

// NewMockBudget creates a new mock instance.
func NewMockBudget(ctrl *gomock.Controller) *MockBudget {
	mock := &MockBudget{ctrl: ctrl}
	mock.recorder = &MockBudgetMockRecorder{mock}
	return mock
}

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

// AllowIteration mocks base method.
func (m *MockBudget) AllowIteration(arg0 time.Time) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "AllowIteration", arg0)
	ret0, _ := ret[0].(error)
	return ret0
}

// AllowIteration indicates an expected call of AllowIteration.
func (mr *MockBudgetMockRecorder) AllowIteration(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AllowIteration", reflect.TypeOf((*MockBudget)(nil).AllowIteration), arg0)
}

// AllowStep mocks base method.
func (m *MockBudget) AllowStep(arg0 types.Step, arg1 time.Time) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "AllowStep", arg0, arg1)
	ret0, _ := ret[0].(error)
	return ret0
}

// AllowStep indicates an expected call of AllowStep.
func (mr *MockBudgetMockRecorder) AllowStep(arg0, arg1 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AllowStep", reflect.TypeOf((*MockBudget)(nil).AllowStep), arg0, arg1)
}

// AllowTool mocks base method.
func (m *MockBudget) AllowTool(arg0 types.ToolKind, arg1 time.Time) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "AllowTool", arg0, arg1)
	ret0, _ := ret[0].(error)
	return ret0
}

// AllowTool indicates an expected call of AllowTool.
func (mr *MockBudgetMockRecorder) AllowTool(arg0, arg1 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AllowTool", reflect.TypeOf((*MockBudget)(nil).AllowTool), arg0, arg1)
}

// ChargeLLMTokens mocks base method.
func (m *MockBudget) ChargeLLMTokens(arg0 int, arg1 time.Time) {
	m.ctrl.T.Helper()
	m.ctrl.Call(m, "ChargeLLMTokens", arg0, arg1)
}

// ChargeLLMTokens indicates an expected call of ChargeLLMTokens.
func (mr *MockBudgetMockRecorder) ChargeLLMTokens(arg0, arg1 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ChargeLLMTokens", reflect.TypeOf((*MockBudget)(nil).ChargeLLMTokens), arg0, arg1)
}

// Snapshot mocks base method.
func (m *MockBudget) Snapshot(arg0 time.Time) core.BudgetSnapshot {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Snapshot", arg0)
	ret0, _ := ret[0].(core.BudgetSnapshot)
	return ret0
}

// Snapshot indicates an expected call of Snapshot.
func (mr *MockBudgetMockRecorder) Snapshot(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Snapshot", reflect.TypeOf((*MockBudget)(nil).Snapshot), arg0)
}

// Start mocks base method.
func (m *MockBudget) Start(arg0 time.Time) {
	m.ctrl.T.Helper()
	m.ctrl.Call(m, "Start", arg0)
}

// Start indicates an expected call of Start.
func (mr *MockBudgetMockRecorder) Start(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockBudget)(nil).Start), arg0)
}
