package usecase

import "context"

// LifecycleUseCase performs single-step member status transitions.
type LifecycleUseCase interface {
	CreateUnverified(ctx context.Context, req *CreatePlatformMemberRequest) (*MemberDTO, error)
	Activate(ctx context.Context, tenantID, uid string) error
	Suspend(ctx context.Context, tenantID, uid, reason string) error
	Reactivate(ctx context.Context, tenantID, uid string) error
	SoftDelete(ctx context.Context, tenantID, uid string) error
	AbortPending(ctx context.Context, tenantID, uid string) error
}

// CreatePlatformMemberRequest creates an unverified platform-native member.
type CreatePlatformMemberRequest struct {
	TenantID      string
	Email         string
	PasswordHash  string
	DisplayName   string
	Language      string
	ZitadelUserID string
}
