package cloud

import (
	"context"

	modelv1 "github.com/pingcap-inc/pchub/model/v1"
)

// CloudProvider 云平台提供者接口
type CloudProvider interface {
	// 同步用户角色
	SyncUserRoles(ctx context.Context, roles []*modelv1.RoleMembers, cloudResource *modelv1.CloudResource, optionType int) error

	// 获取用户成员信息
	GetProviderMembers(ctx context.Context, provider string) ([]modelv1.ResourceMemberAccess, []uint64, error)

	// 获取平台名称
	GetProviderName() string

	// 验证配置
	ValidateConfig() error

	// 同步用户到数据库
	SyncUsers(ctx context.Context) error

	// 同步成员信息到数据库
	SyncMembers(ctx context.Context) error
}

// 移除特定的Provider接口，改为在具体的provider包中定义，避免循环依赖

// AWSToken AWS Token结构
type AWSToken struct {
	AccessKeyId     string `json:"accessKeyId"`
	SecretAccessKey string `json:"secretAccessKey"`
	SessionToken    string `json:"sessionToken"`
	Expiration      string `json:"expiration"`
}

// CloudProviderFactory 云平台工厂
type CloudProviderFactory interface {
	CreateProvider(providerCode string, subscriptionID string) (CloudProvider, error)
}
