// Code generated by sdkgen. DO NOT EDIT.

package cdn

import (
	"context"

	"google.golang.org/grpc"
)

// CDN provides access to "cdn" component of Yandex.Cloud
type CDN struct {
	getConn func(ctx context.Context) (*grpc.ClientConn, error)
}

// NewCDN creates instance of CDN
func NewCDN(g func(ctx context.Context) (*grpc.ClientConn, error)) *CDN {
	return &CDN{g}
}

// Cache gets CacheService client
func (c *CDN) Cache() *CacheServiceClient {
	return &CacheServiceClient{getConn: c.getConn}
}

// OriginGroup gets OriginGroupService client
func (c *CDN) OriginGroup() *OriginGroupServiceClient {
	return &OriginGroupServiceClient{getConn: c.getConn}
}

// Origin gets OriginService client
func (c *CDN) Origin() *OriginServiceClient {
	return &OriginServiceClient{getConn: c.getConn}
}

// Provider gets ProviderService client
func (c *CDN) Provider() *ProviderServiceClient {
	return &ProviderServiceClient{getConn: c.getConn}
}

// RawLogs gets RawLogsService client
func (c *CDN) RawLogs() *RawLogsServiceClient {
	return &RawLogsServiceClient{getConn: c.getConn}
}

// ResourceRules gets ResourceRulesService client
func (c *CDN) ResourceRules() *ResourceRulesServiceClient {
	return &ResourceRulesServiceClient{getConn: c.getConn}
}

// Resource gets ResourceService client
func (c *CDN) Resource() *ResourceServiceClient {
	return &ResourceServiceClient{getConn: c.getConn}
}

// Shielding gets ShieldingService client
func (c *CDN) Shielding() *ShieldingServiceClient {
	return &ShieldingServiceClient{getConn: c.getConn}
}
