// This file is part of tdir, the Taler Directory implementation.
// Copyright (C) 2025 Martin Schanzenbach
//
// Taldir is free software: you can redistribute it and/or modify it
// under the terms of the GNU Affero General Public License as published
// by the Free Software Foundation, either version 3 of the License,
// or (at your option) any later version.
//
// Taldir is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
//
// SPDX-License-Identifier: AGPL3.0-or-later

package taldir

import (
	"html/template"
)

type ValidatorType string

const (
	ValidatorTypeCommand ValidatorType = "command"
	ValidatorTypeOIDC    ValidatorType = "oidc"
)

type Validator interface {

	// Validator name
	Name() string

	// Validator type
	Type() ValidatorType

	// Amount of payment required
	ChallengeFee() string

	// registration/lookup page
	LandingPageTpl() *template.Template

	// Is alias valid
	IsAliasValid(alias string) error

	// Start registration
	RegistrationStart(topic string, link string, message string, alias string, challenge string) (string, error)
}
