package netts // APIResponse represents Netts standard API response envelope. type APIResponse[T any] struct { Code int `json:"code"` Msg string `json:"msg"` Data T `json:"data"` } // AnalyzeUSDTRequest describes the payload for /apiv2/usdt/analyze. type AnalyzeUSDTRequest struct { Sender string `json:"sender"` Receiver string `json:"receiver"` Amount string `json:"amount"` } // AnalyzeUSDTData contains analysis details for USDT transfer. type AnalyzeUSDTData struct { TransferDetails TransferDetails `json:"transfer_details"` } // TransferDetails describes recommended resources for a transfer. type TransferDetails struct { SenderAddress string `json:"sender_address"` ReceiverAddress string `json:"receiver_address"` USDTAmount string `json:"usdt_amount"` RecommendedEnergy int `json:"recommended_energy"` EnergyNeeded int `json:"energy_needed"` BandwidthNeeded int `json:"bandwidth_needed"` CostBreakdown CostBreakdown `json:"cost_breakdown"` SavingsAnalysis SavingsAnalysis `json:"savings_analysis"` HasSufficientUSDT *bool `json:"has_usdt,omitempty"` RecommendedReserve int `json:"recommended_energy_reserve,omitempty"` } // CostBreakdown details TRX costs. type CostBreakdown struct { EnergyCost string `json:"energy_cost"` BandwidthCost string `json:"bandwidth_cost"` TotalCostTRX string `json:"total_cost_trx"` } // SavingsAnalysis summarises cost savings. type SavingsAnalysis struct { VsDirectBurn string `json:"vs_direct_burn"` VsStaking string `json:"vs_staking"` SavingsPercentage float64 `json:"savings_percentage"` } // AddressStatus represents Host Mode status for an address. type AddressStatus struct { Address string `json:"address"` Mode string `json:"mode"` Status string `json:"status"` CyclesOrdered int `json:"cycles_ordered"` CycleSet int `json:"cycle_set"` CyclesCompleted int `json:"cycles_completed"` CyclesRemaining int `json:"cycles_remaining"` OpenOrders int `json:"open_orders"` NextDelegationTime int64 `json:"next_delegation_time"` ExpiryTime int64 `json:"expiry_time"` BalanceAfter float64 `json:"balance_after"` } // AddAddressResult captures response from /time/add. type AddAddressResult struct { Address string `json:"address"` CallbackURL string `json:"callback_url,omitempty"` Timestamp string `json:"timestamp"` } // OrderResult captures order summary from /time/order. type OrderResult struct { Address string `json:"address"` CyclesPurchased int `json:"cycles_purchased"` TotalCycles int `json:"total_cycles"` PreviousCycles int `json:"previous_cycles"` TotalCost float64 `json:"total_cost"` PricePerCycle float64 `json:"price_per_cycle"` OrderID string `json:"order_id"` TransactionHash string `json:"transaction_hash"` PaymentMethod string `json:"payment_method"` BalanceAfter float64 `json:"balance_after"` NextDelegation int64 `json:"next_delegation_time"` ExpiryTime int64 `json:"expiry_time"` Status string `json:"status"` }