package jumpservercli

import "context"

type InitUserParam struct {
	Username string // xxx@pingcap.com
	Email    string // xxx@pingcap.com or xxx@pingcap.cn
}

type JumpServerCli interface {
	// InitUser init resources for a user.
	InitUser(ctx context.Context, param InitUserParam) (User, Account, error)
	// GetUser get a user by email.
	//
	// If the user does not exist, return nil, nil
	GetUser(ctx context.Context, username string) (*User, error)
	// UpdateAccountToken updates the token of an account.
	UpdateAccountToken(ctx context.Context, username string, token string) error
	// GetBaseAssetId returns the asset id for base asset
	//
	// If the asset does not exist, return nil, nil
	GetBaseAsset(ctx context.Context) (*Asset, error)
	// CreateConnectionToken creates a connection token for a user.
	CreateConnectionToken(ctx context.Context, username string) (*ConnectionToken, error)
}
