package relay

import (
	
)

type Option func(*Relay) error

// WithResources is a Relay option that sets specific relay resources for the relay.
func ( Resources) Option {
	return func( *Relay) error {
		.rc = 
		return nil
	}
}

// WithLimit is a Relay option that sets only the relayed connection limits for the relay.
func ( *RelayLimit) Option {
	return func( *Relay) error {
		.rc.Limit = 
		return nil
	}
}

// Reservation address function used to promote addresses to connected nodes
type ReservationAddressFilterFunc func(addr multiaddr.Multiaddr) (include bool)

// Overrides the default reservation address filter.
// This will permit the relay let the client know it have access to non public addresses too.
func ( ReservationAddressFilterFunc) ( Option) {
	return func( *Relay) ( error) {
		.reservationAddrFilter = 
		return nil
	}
}

// WithInfiniteLimits is a Relay option that disables limits.
func () Option {
	return func( *Relay) error {
		.rc.Limit = nil
		return nil
	}
}

// WithACL is a Relay option that supplies an ACLFilter for access control.
func ( ACLFilter) Option {
	return func( *Relay) error {
		.acl = 
		return nil
	}
}

// WithMetricsTracer is a Relay option that supplies a MetricsTracer for metrics
func ( MetricsTracer) Option {
	return func( *Relay) error {
		.metricsTracer = 
		return nil
	}
}