package models

import contractmodels "github.com/pingcap-inc/nexuscrm-contract/pkg/models"

// UserSession represents an authenticated user session
type UserSession = contractmodels.UserSession

// ConnectedApp is DELETED — use models.SystemConnectedApp from z_generated.go

// SessionToken represents an OAuth token response
// These fields use snake_case per OAuth2 RFC 6749 spec — this is correct.
type SessionToken struct {
	AccessToken  string `json:"access_token"`
	TokenType    string `json:"token_type"`
	RefreshToken string `json:"refresh_token,omitempty"`
	ExpiresIn    int    `json:"expires_in"`
	ID           string `json:"id,omitempty"`           // Identity URL
	InstanceURL  string `json:"instance_url,omitempty"` // Instance URL
	IssuedAt     string `json:"issued_at,omitempty"`    // Timestamp string
	Signature    string `json:"signature,omitempty"`    // Signature
	Scope        string `json:"scope,omitempty"`        // Granted OAuth scope (SF-compatible)
}

// SystemPermissionSetAssignment - use generated
// type PermissionSetAssignment struct { ... }

// SystemGroupMember - use generated
// type GroupMember struct { ... }
