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

package mocks

import (
	appconfig "github.com/aws/amazon-ssm-agent/agent/appconfig"
	authtokenrequest "github.com/aws/amazon-ssm-agent/agent/ssm/authtokenrequest"

	aws "github.com/aws/aws-sdk-go/aws"

	client "github.com/aws/aws-sdk-go/aws/client"

	credentials "github.com/aws/aws-sdk-go/aws/credentials"

	log "github.com/aws/amazon-ssm-agent/agent/log"

	mock "github.com/stretchr/testify/mock"

	request "github.com/aws/aws-sdk-go/aws/request"

	session "github.com/aws/aws-sdk-go/aws/session"

	ssm "github.com/aws/aws-sdk-go/service/ssm"

	testing "testing"
)

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

// AwsConfig provides a mock function with given fields: _a0, appConfig, service, region
func (_m *IRsaClientDeps) AwsConfig(_a0 log.T, appConfig appconfig.SsmagentConfig, service string, region string) *aws.Config {
	ret := _m.Called(_a0, appConfig, service, region)

	var r0 *aws.Config
	if rf, ok := ret.Get(0).(func(log.T, appconfig.SsmagentConfig, string, string) *aws.Config); ok {
		r0 = rf(_a0, appConfig, service, region)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*aws.Config)
		}
	}

	return r0
}

// MakeAddToUserAgentHandler provides a mock function with given fields: name, version, extra
func (_m *IRsaClientDeps) MakeAddToUserAgentHandler(name string, version string, extra ...string) func(*request.Request) {
	_va := make([]interface{}, len(extra))
	for _i := range extra {
		_va[_i] = extra[_i]
	}
	var _ca []interface{}
	_ca = append(_ca, name, version)
	_ca = append(_ca, _va...)
	ret := _m.Called(_ca...)

	var r0 func(*request.Request)
	if rf, ok := ret.Get(0).(func(string, string, ...string) func(*request.Request)); ok {
		r0 = rf(name, version, extra...)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(func(*request.Request))
		}
	}

	return r0
}

// NewAuthTokenClient provides a mock function with given fields: sdk
func (_m *IRsaClientDeps) NewAuthTokenClient(sdk *ssm.SSM) authtokenrequest.IClient {
	ret := _m.Called(sdk)

	var r0 authtokenrequest.IClient
	if rf, ok := ret.Get(0).(func(*ssm.SSM) authtokenrequest.IClient); ok {
		r0 = rf(sdk)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(authtokenrequest.IClient)
		}
	}

	return r0
}

// NewCredentials provides a mock function with given fields: provider
func (_m *IRsaClientDeps) NewCredentials(provider credentials.Provider) *credentials.Credentials {
	ret := _m.Called(provider)

	var r0 *credentials.Credentials
	if rf, ok := ret.Get(0).(func(credentials.Provider) *credentials.Credentials); ok {
		r0 = rf(provider)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*credentials.Credentials)
		}
	}

	return r0
}

// NewSession provides a mock function with given fields: config
func (_m *IRsaClientDeps) NewSession(config *aws.Config) (*session.Session, error) {
	ret := _m.Called(config)

	var r0 *session.Session
	if rf, ok := ret.Get(0).(func(*aws.Config) *session.Session); ok {
		r0 = rf(config)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*session.Session)
		}
	}

	var r1 error
	if rf, ok := ret.Get(1).(func(*aws.Config) error); ok {
		r1 = rf(config)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// NewSsmSdk provides a mock function with given fields: p, cfgs
func (_m *IRsaClientDeps) NewSsmSdk(p client.ConfigProvider, cfgs ...*aws.Config) *ssm.SSM {
	_va := make([]interface{}, len(cfgs))
	for _i := range cfgs {
		_va[_i] = cfgs[_i]
	}
	var _ca []interface{}
	_ca = append(_ca, p)
	_ca = append(_ca, _va...)
	ret := _m.Called(_ca...)

	var r0 *ssm.SSM
	if rf, ok := ret.Get(0).(func(client.ConfigProvider, ...*aws.Config) *ssm.SSM); ok {
		r0 = rf(p, cfgs...)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*ssm.SSM)
		}
	}

	return r0
}

// NewStaticCredentials provides a mock function with given fields: id, secret, token
func (_m *IRsaClientDeps) NewStaticCredentials(id string, secret string, token string) *credentials.Credentials {
	ret := _m.Called(id, secret, token)

	var r0 *credentials.Credentials
	if rf, ok := ret.Get(0).(func(string, string, string) *credentials.Credentials); ok {
		r0 = rf(id, secret, token)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*credentials.Credentials)
		}
	}

	return r0
}

// NewIRsaClientDeps creates a new instance of IRsaClientDeps. It also registers the testing.TB interface on the mock and a cleanup function to assert the mocks expectations.
func NewIRsaClientDeps(t testing.TB) *IRsaClientDeps {
	mock := &IRsaClientDeps{}
	mock.Mock.Test(t)

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

	return mock
}
