feat: added models
This commit is contained in:
@@ -0,0 +1,80 @@
|
|||||||
|
package org.ccoin.models
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class ApiResponse<T>(
|
||||||
|
val success: Boolean,
|
||||||
|
val data: T? = null,
|
||||||
|
val error: String? = null,
|
||||||
|
val timestamp: Long = System.currentTimeMillis()
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class ErrorResponse(
|
||||||
|
val error: String,
|
||||||
|
val code: String? = null,
|
||||||
|
val details: Map<String, String>? = null,
|
||||||
|
val timestamp: Long = System.currentTimeMillis()
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class SuccessResponse(
|
||||||
|
val message: String,
|
||||||
|
val timestamp: Long = System.currentTimeMillis()
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class HealthResponse(
|
||||||
|
val status: String,
|
||||||
|
val version: String,
|
||||||
|
val uptime: Long,
|
||||||
|
val database: DatabaseHealth,
|
||||||
|
val blockchain: BlockchainHealth
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class DatabaseHealth(
|
||||||
|
val connected: Boolean,
|
||||||
|
val responseTime: Long,
|
||||||
|
val activeConnections: Int,
|
||||||
|
val maxConnections: Int
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class BlockchainHealth(
|
||||||
|
val latestBlock: Int,
|
||||||
|
val pendingTransactions: Int,
|
||||||
|
val networkHashRate: Double,
|
||||||
|
val averageBlockTime: Long
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class PaginationRequest(
|
||||||
|
val page: Int = 1,
|
||||||
|
val pageSize: Int = 50,
|
||||||
|
val sortBy: String? = null,
|
||||||
|
val sortOrder: SortOrder = SortOrder.DESC
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class PaginatedResponse<T>(
|
||||||
|
val data: List<T>,
|
||||||
|
val pagination: PaginationInfo
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class PaginationInfo(
|
||||||
|
val currentPage: Int,
|
||||||
|
val pageSize: Int,
|
||||||
|
val totalItems: Int,
|
||||||
|
val totalPages: Int,
|
||||||
|
val hasNext: Boolean,
|
||||||
|
val hasPrevious: Boolean
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
enum class SortOrder {
|
||||||
|
ASC,
|
||||||
|
DESC
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
package org.ccoin.models
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class StartMiningRequest(
|
||||||
|
val minerAddress: String, // Format: random_word:random_6_digits
|
||||||
|
val difficulty: Int? = null
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class SubmitMiningRequest(
|
||||||
|
val minerAddress: String,
|
||||||
|
val nonce: Long,
|
||||||
|
val hash: String,
|
||||||
|
val previousHash: String,
|
||||||
|
val timestamp: Long
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class BlockResponse(
|
||||||
|
val hash: String,
|
||||||
|
val previousHash: String?,
|
||||||
|
val merkleRoot: String,
|
||||||
|
val timestamp: Long,
|
||||||
|
val difficulty: Int,
|
||||||
|
val nonce: Long,
|
||||||
|
val minerAddress: String
|
||||||
|
val reward: Double,
|
||||||
|
val height: Int,
|
||||||
|
val transactionCount: Int,
|
||||||
|
val confirmations: Int = 0
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class MiningJobResponse(
|
||||||
|
val jobId: String,
|
||||||
|
val target: String,
|
||||||
|
val difficulty: Int,
|
||||||
|
val previousHash: String,
|
||||||
|
val height: Int,
|
||||||
|
val timestamp: Long,
|
||||||
|
val expiresAt: Long
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class MiningStatsResponse(
|
||||||
|
val minerAddress: String,
|
||||||
|
val totalBlocksMined: Int,
|
||||||
|
val totalRewardEarned: Double,
|
||||||
|
val lastBlockMined: Long?,
|
||||||
|
val currentDifficulty: Int
|
||||||
|
)
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package org.ccoin.models
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class SendTransactionRequest(
|
||||||
|
val fromAddress: String, // Format random_word:random_6_digits
|
||||||
|
val toAddress: String, // Format random_word:random_6_digits
|
||||||
|
val amount: Double,
|
||||||
|
val fee: Double = 0.0,
|
||||||
|
val memo: String? = null
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class TransactionResponse(
|
||||||
|
val hash: String,
|
||||||
|
val fromAddress: String?,
|
||||||
|
val toAddress: String,
|
||||||
|
val amount: Double,
|
||||||
|
val fee: Double,
|
||||||
|
val memo: String?,
|
||||||
|
val blockHash: String?,
|
||||||
|
val timestamp: Long,
|
||||||
|
val status: TransactionStatus,
|
||||||
|
val confirmations: Int = 0
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class TransactionHistoryResponse(
|
||||||
|
val transactions: List<TransactionResponse>,
|
||||||
|
val totalCount: Int,
|
||||||
|
val page: Int,
|
||||||
|
val pageSize: Int
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
enum class TransactionStatus {
|
||||||
|
PENDING,
|
||||||
|
CONFIRMED,
|
||||||
|
FAILED,
|
||||||
|
CANCELLED
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package org.ccoin.models
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class CreateWalletRequest(
|
||||||
|
val label: String? = null
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class WalletResponse(
|
||||||
|
val address: String, // Format random_word:random_6_digits (e.g. "phoenix:123456")
|
||||||
|
val balance: Double,
|
||||||
|
val label: String?,
|
||||||
|
val createdAt: Long,
|
||||||
|
val lastActivity: Long?
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class BalanceResponse(
|
||||||
|
val address: String,
|
||||||
|
val balance: Double
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class UpdateWalletRequest(
|
||||||
|
val label: String?
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user