package usecase

import "context"

type VerifyMemberUseCase interface {
	// GenerateRefreshCode 這個帳號驗證碼（十分鐘），通用的
	GenerateRefreshCode(ctx context.Context, req GenerateRefreshCodeRequest) (GenerateRefreshCodeResponse, error)
	// VerifyRefreshCode 驗證驗證碼，驗證完會刪除
	VerifyRefreshCode(ctx context.Context, req VerifyRefreshCodeRequest) error
	// CheckRefreshCode 驗證驗證碼，驗證完不會刪除
	CheckRefreshCode(ctx context.Context, req VerifyRefreshCodeRequest) error
	// VerifyPlatformAuthResult 驗證平台授權結果 -> 看密碼對不對
	VerifyPlatformAuthResult(ctx context.Context, req VerifyAuthResultRequest) (VerifyAuthResultResponse, error)
	GoogleVerify
	LineVerify
}

type GoogleVerify interface {
	// VerifyGoogleAuthResult  驗證 Google 授權結果
	VerifyGoogleAuthResult(ctx context.Context, req VerifyAuthResultRequest) (GoogleTokenInfo, error)
}

type LineVerify interface {
	// LineCodeToAccessToken 換取 AccessToken
	LineCodeToAccessToken(ctx context.Context, code string) (LineAccessTokenResponse, error)
	// LineGetProfileByAccessToken 用 Access Token 換取使用者的基本資料
	LineGetProfileByAccessToken(ctx context.Context, accessToken string) (*LineUserProfile, error)
}
