// Code generated by mockery v2.53.4. DO NOT EDIT.

package mocks

import (
	koanf "github.com/knadh/koanf/v2"
	mock "github.com/stretchr/testify/mock"
)

// Koanf is an autogenerated mock type for the Koanf type
type Koanf struct {
	mock.Mock
}

// Bool provides a mock function with given fields: path
func (_m *Koanf) Bool(path string) bool {
	ret := _m.Called(path)

	if len(ret) == 0 {
		panic("no return value specified for Bool")
	}

	var r0 bool
	if rf, ok := ret.Get(0).(func(string) bool); ok {
		r0 = rf(path)
	} else {
		r0 = ret.Get(0).(bool)
	}

	return r0
}

// Exists provides a mock function with given fields: path
func (_m *Koanf) Exists(path string) bool {
	ret := _m.Called(path)

	if len(ret) == 0 {
		panic("no return value specified for Exists")
	}

	var r0 bool
	if rf, ok := ret.Get(0).(func(string) bool); ok {
		r0 = rf(path)
	} else {
		r0 = ret.Get(0).(bool)
	}

	return r0
}

// Int64 provides a mock function with given fields: path
func (_m *Koanf) Int64(path string) int64 {
	ret := _m.Called(path)

	if len(ret) == 0 {
		panic("no return value specified for Int64")
	}

	var r0 int64
	if rf, ok := ret.Get(0).(func(string) int64); ok {
		r0 = rf(path)
	} else {
		r0 = ret.Get(0).(int64)
	}

	return r0
}

// Load provides a mock function with given fields: p, pa, opts
func (_m *Koanf) Load(p koanf.Provider, pa koanf.Parser, opts ...koanf.Option) error {
	_va := make([]interface{}, len(opts))
	for _i := range opts {
		_va[_i] = opts[_i]
	}
	var _ca []interface{}
	_ca = append(_ca, p, pa)
	_ca = append(_ca, _va...)
	ret := _m.Called(_ca...)

	if len(ret) == 0 {
		panic("no return value specified for Load")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(koanf.Provider, koanf.Parser, ...koanf.Option) error); ok {
		r0 = rf(p, pa, opts...)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// Set provides a mock function with given fields: key, val
func (_m *Koanf) Set(key string, val interface{}) error {
	ret := _m.Called(key, val)

	if len(ret) == 0 {
		panic("no return value specified for Set")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(string, interface{}) error); ok {
		r0 = rf(key, val)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// String provides a mock function with given fields: path
func (_m *Koanf) String(path string) string {
	ret := _m.Called(path)

	if len(ret) == 0 {
		panic("no return value specified for String")
	}

	var r0 string
	if rf, ok := ret.Get(0).(func(string) string); ok {
		r0 = rf(path)
	} else {
		r0 = ret.Get(0).(string)
	}

	return r0
}

// Strings provides a mock function with given fields: path
func (_m *Koanf) Strings(path string) []string {
	ret := _m.Called(path)

	if len(ret) == 0 {
		panic("no return value specified for Strings")
	}

	var r0 []string
	if rf, ok := ret.Get(0).(func(string) []string); ok {
		r0 = rf(path)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]string)
		}
	}

	return r0
}

// NewKoanf creates a new instance of Koanf. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewKoanf(t interface {
	mock.TestingT
	Cleanup(func())
}) *Koanf {
	mock := &Koanf{}
	mock.Mock.Test(t)

	t.Cleanup(func() { mock.AssertExpectations(t) })

	return mock
}
