// Code generated by Fern. DO NOT EDIT.

package client

import (
	client "github.com/auth0/go-auth0/v2/management/actions/client"
	anomalyclient "github.com/auth0/go-auth0/v2/management/anomaly/client"
	attackprotectionclient "github.com/auth0/go-auth0/v2/management/attackprotection/client"
	brandingclient "github.com/auth0/go-auth0/v2/management/branding/client"
	clientgrantsclient "github.com/auth0/go-auth0/v2/management/clientgrants/client"
	clientsclient "github.com/auth0/go-auth0/v2/management/clients/client"
	connectionsclient "github.com/auth0/go-auth0/v2/management/connections/client"
	core "github.com/auth0/go-auth0/v2/management/core"
	customdomains "github.com/auth0/go-auth0/v2/management/customdomains"
	devicecredentials "github.com/auth0/go-auth0/v2/management/devicecredentials"
	emailsclient "github.com/auth0/go-auth0/v2/management/emails/client"
	emailtemplates "github.com/auth0/go-auth0/v2/management/emailtemplates"
	eventstreamsclient "github.com/auth0/go-auth0/v2/management/eventstreams/client"
	flowsclient "github.com/auth0/go-auth0/v2/management/flows/client"
	forms "github.com/auth0/go-auth0/v2/management/forms"
	guardianclient "github.com/auth0/go-auth0/v2/management/guardian/client"
	hooksclient "github.com/auth0/go-auth0/v2/management/hooks/client"
	internal "github.com/auth0/go-auth0/v2/management/internal"
	jobsclient "github.com/auth0/go-auth0/v2/management/jobs/client"
	keysclient "github.com/auth0/go-auth0/v2/management/keys/client"
	logs "github.com/auth0/go-auth0/v2/management/logs"
	logstreams "github.com/auth0/go-auth0/v2/management/logstreams"
	networkacls "github.com/auth0/go-auth0/v2/management/networkacls"
	option "github.com/auth0/go-auth0/v2/management/option"
	organizationsclient "github.com/auth0/go-auth0/v2/management/organizations/client"
	promptsclient "github.com/auth0/go-auth0/v2/management/prompts/client"
	refreshtokens "github.com/auth0/go-auth0/v2/management/refreshtokens"
	resourceservers "github.com/auth0/go-auth0/v2/management/resourceservers"
	riskassessmentsclient "github.com/auth0/go-auth0/v2/management/riskassessments/client"
	rolesclient "github.com/auth0/go-auth0/v2/management/roles/client"
	rules "github.com/auth0/go-auth0/v2/management/rules"
	rulesconfigs "github.com/auth0/go-auth0/v2/management/rulesconfigs"
	selfserviceprofilesclient "github.com/auth0/go-auth0/v2/management/selfserviceprofiles/client"
	sessions "github.com/auth0/go-auth0/v2/management/sessions"
	stats "github.com/auth0/go-auth0/v2/management/stats"
	supplementalsignals "github.com/auth0/go-auth0/v2/management/supplementalsignals"
	tenantsclient "github.com/auth0/go-auth0/v2/management/tenants/client"
	tickets "github.com/auth0/go-auth0/v2/management/tickets"
	tokenexchangeprofiles "github.com/auth0/go-auth0/v2/management/tokenexchangeprofiles"
	userattributeprofiles "github.com/auth0/go-auth0/v2/management/userattributeprofiles"
	userblocks "github.com/auth0/go-auth0/v2/management/userblocks"
	usergrants "github.com/auth0/go-auth0/v2/management/usergrants"
	usersclient "github.com/auth0/go-auth0/v2/management/users/client"
	verifiablecredentialsclient "github.com/auth0/go-auth0/v2/management/verifiablecredentials/client"
)

type Management struct {
	Actions               *client.Client
	Branding              *brandingclient.Client
	ClientGrants          *clientgrantsclient.Client
	Clients               *clientsclient.Client
	Connections           *connectionsclient.Client
	CustomDomains         *customdomains.Client
	DeviceCredentials     *devicecredentials.Client
	EmailTemplates        *emailtemplates.Client
	EventStreams          *eventstreamsclient.Client
	Flows                 *flowsclient.Client
	Forms                 *forms.Client
	UserGrants            *usergrants.Client
	Hooks                 *hooksclient.Client
	Jobs                  *jobsclient.Client
	LogStreams            *logstreams.Client
	Logs                  *logs.Client
	NetworkACLs           *networkacls.Client
	Organizations         *organizationsclient.Client
	Prompts               *promptsclient.Client
	RefreshTokens         *refreshtokens.Client
	ResourceServers       *resourceservers.Client
	Roles                 *rolesclient.Client
	Rules                 *rules.Client
	RulesConfigs          *rulesconfigs.Client
	SelfServiceProfiles   *selfserviceprofilesclient.Client
	Sessions              *sessions.Client
	Stats                 *stats.Client
	SupplementalSignals   *supplementalsignals.Client
	Tickets               *tickets.Client
	TokenExchangeProfiles *tokenexchangeprofiles.Client
	UserAttributeProfiles *userattributeprofiles.Client
	UserBlocks            *userblocks.Client
	Users                 *usersclient.Client
	Anomaly               *anomalyclient.Client
	AttackProtection      *attackprotectionclient.Client
	Emails                *emailsclient.Client
	Guardian              *guardianclient.Client
	Keys                  *keysclient.Client
	RiskAssessments       *riskassessmentsclient.Client
	Tenants               *tenantsclient.Client
	VerifiableCredentials *verifiablecredentialsclient.Client

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

func NewWithOptions(opts ...option.RequestOption) *Management {
	options := core.NewRequestOptions(opts...)
	return &Management{
		Actions:               client.NewClient(options),
		Branding:              brandingclient.NewClient(options),
		ClientGrants:          clientgrantsclient.NewClient(options),
		Clients:               clientsclient.NewClient(options),
		Connections:           connectionsclient.NewClient(options),
		CustomDomains:         customdomains.NewClient(options),
		DeviceCredentials:     devicecredentials.NewClient(options),
		EmailTemplates:        emailtemplates.NewClient(options),
		EventStreams:          eventstreamsclient.NewClient(options),
		Flows:                 flowsclient.NewClient(options),
		Forms:                 forms.NewClient(options),
		UserGrants:            usergrants.NewClient(options),
		Hooks:                 hooksclient.NewClient(options),
		Jobs:                  jobsclient.NewClient(options),
		LogStreams:            logstreams.NewClient(options),
		Logs:                  logs.NewClient(options),
		NetworkACLs:           networkacls.NewClient(options),
		Organizations:         organizationsclient.NewClient(options),
		Prompts:               promptsclient.NewClient(options),
		RefreshTokens:         refreshtokens.NewClient(options),
		ResourceServers:       resourceservers.NewClient(options),
		Roles:                 rolesclient.NewClient(options),
		Rules:                 rules.NewClient(options),
		RulesConfigs:          rulesconfigs.NewClient(options),
		SelfServiceProfiles:   selfserviceprofilesclient.NewClient(options),
		Sessions:              sessions.NewClient(options),
		Stats:                 stats.NewClient(options),
		SupplementalSignals:   supplementalsignals.NewClient(options),
		Tickets:               tickets.NewClient(options),
		TokenExchangeProfiles: tokenexchangeprofiles.NewClient(options),
		UserAttributeProfiles: userattributeprofiles.NewClient(options),
		UserBlocks:            userblocks.NewClient(options),
		Users:                 usersclient.NewClient(options),
		Anomaly:               anomalyclient.NewClient(options),
		AttackProtection:      attackprotectionclient.NewClient(options),
		Emails:                emailsclient.NewClient(options),
		Guardian:              guardianclient.NewClient(options),
		Keys:                  keysclient.NewClient(options),
		RiskAssessments:       riskassessmentsclient.NewClient(options),
		Tenants:               tenantsclient.NewClient(options),
		VerifiableCredentials: verifiablecredentialsclient.NewClient(options),
		options:               options,
		baseURL:               options.BaseURL,
		caller: internal.NewCaller(
			&internal.CallerParams{
				Client:      options.HTTPClient,
				MaxAttempts: options.MaxAttempts,
			},
		),
	}
}
