// Code generated by Fern. DO NOT EDIT.

package client

import (
	breachedpassworddetection "github.com/auth0/go-auth0/v2/management/attackprotection/breachedpassworddetection"
	bruteforceprotection "github.com/auth0/go-auth0/v2/management/attackprotection/bruteforceprotection"
	suspiciousipthrottling "github.com/auth0/go-auth0/v2/management/attackprotection/suspiciousipthrottling"
	core "github.com/auth0/go-auth0/v2/management/core"
	internal "github.com/auth0/go-auth0/v2/management/internal"
)

type Client struct {
	BreachedPasswordDetection *breachedpassworddetection.Client
	BruteForceProtection      *bruteforceprotection.Client
	SuspiciousIPThrottling    *suspiciousipthrottling.Client

	options *core.RequestOptions
	baseURL string
	caller  *internal.Caller
}

func NewClient(options *core.RequestOptions) *Client {
	return &Client{
		BreachedPasswordDetection: breachedpassworddetection.NewClient(options),
		BruteForceProtection:      bruteforceprotection.NewClient(options),
		SuspiciousIPThrottling:    suspiciousipthrottling.NewClient(options),
		options:                   options,
		baseURL:                   options.BaseURL,
		caller: internal.NewCaller(
			&internal.CallerParams{
				Client:      options.HTTPClient,
				MaxAttempts: options.MaxAttempts,
			},
		),
	}
}
