package plugin

import "github.com/tidbcloud/infra-provider/pkg/config"

// Factory creates a Plugin
type Factory func(cfg config.AcctSchedPluginConfig) (Plugin, error)

type Registry struct {
	FilterPlugins map[string]Factory
	ScorePlugins  map[string]Factory
}

func NewDefaultRegistry() *Registry {
	return &Registry{
		FilterPlugins: map[string]Factory{
			dedicatedAccountPluginName: newDedicatedAccount,
		},
		ScorePlugins: map[string]Factory{
			defaultAccountPluginName: newDefaultAccount,
		},
	}
}
