package dto

// AcceptInviteRequest is the request body for POST /api/v1/auth/accept-invite.
type AcceptInviteRequest struct {
	Token string `json:"token"`
}

// OIDCAuthorizationURLRequest is the request body for POST /api/v1/auth/oidc/authorize-url.
type OIDCAuthorizationURLRequest struct {
	RedirectURI string `json:"redirect_uri"`
}

// LogoutRequest is the request body for POST /api/v1/auth/logout.
type LogoutRequest struct {
	RefreshToken string `json:"refreshToken"`
}

// MobileVerificationRequest is the request body for POST /api/v1/auth/mobile/request-verification.
type MobileVerificationRequest struct {
	Mobile string `json:"mobile"`
}

// MobileVerifyRequest is the request body for POST /api/v1/auth/mobile/verify.
type MobileVerifyRequest struct {
	Code string `json:"code"`
}

// EmailVerifyRequest is the request body for POST /api/v1/auth/verify-email.
type EmailVerifyRequest struct {
	Token string `json:"token"`
}

// ResendVerificationRequest is the request body for POST /api/v1/auth/resend-verification.
type ResendVerificationRequest struct{}

// ChannelTransferOwnerRequest is the request body for POST /api/channels/:channelId/owner.
type ChannelTransferOwnerRequest struct {
	UserID string `json:"userId"`
}

// ChannelDismissOwnerContextRequest is the request body for POST /api/channels/:channelId/owner-context-dismiss.
type ChannelDismissOwnerContextRequest struct {
	// DismissedThroughGlobalSeq keeps the stable wire key, but the value is the
	// scope-local message sequence for the channel or thread surface.
	DismissedThroughGlobalSeq int64 `json:"dismissedThroughGlobalSeq"`
}

// GitHubConnectionCreateRequest is the request body for POST /api/v1/workspaces/:workspaceId/providers/github/connections.
type GitHubConnectionCreateRequest struct {
	InstallationID  string   `json:"installation_id,omitempty"`
	InstallationIDs []string `json:"installation_ids"`
}

// ThreadSubscribeRequest is the request body for POST /api/threads/:threadChannelId/subscribe.
type ThreadSubscribeRequest struct {
	State string `json:"state"`
}

// NotificationStateRequest is the generic request body for notification state endpoints.
type NotificationStateRequest struct {
	State string `json:"state"`
}

// NotificationWakeStateRequest is the generic request body for agent notification wake-state endpoints.
type NotificationWakeStateRequest struct {
	WakeState string `json:"wakeState"`
}
