/**
 * @file synor.hpp
 * @brief Synor SDK for C++ - Main Include Header
 *
 * This header includes all Synor SDK components:
 * - Wallet: Key management and transaction signing
 * - RPC: Blockchain queries and subscriptions
 * - Storage: IPFS-compatible decentralized storage
 *
 * @example
 * ```cpp
 * #include <synor/synor.hpp>
 *
 * int main() {
 *     // Create clients
 *     synor::wallet::Client wallet({.api_key = "your-api-key"});
 *     synor::rpc::Client rpc({.api_key = "your-api-key"});
 *     synor::storage::Client storage({.api_key = "your-api-key"});
 *
 *     // Use the SDKs...
 *     return 0;
 * }
 * ```
 */

#pragma once

#include "wallet.hpp"
#include "rpc.hpp"
#include "storage.hpp"

namespace synor {

/// SDK version
inline constexpr const char* VERSION = "0.1.0";

/// Convert Network to string
inline const char* to_string(Network network) {
    switch (network) {
        case Network::Mainnet: return "mainnet";
        case Network::Testnet: return "testnet";
        case Network::Devnet: return "devnet";
        default: return "unknown";
    }
}

/// Convert WalletType to string
inline const char* to_string(WalletType type) {
    switch (type) {
        case WalletType::Standard: return "standard";
        case WalletType::Multisig: return "multisig";
        case WalletType::Hardware: return "hardware";
        case WalletType::Stealth: return "stealth";
        default: return "unknown";
    }
}

/// Convert Priority to string
inline const char* to_string(Priority priority) {
    switch (priority) {
        case Priority::Low: return "low";
        case Priority::Medium: return "medium";
        case Priority::High: return "high";
        default: return "unknown";
    }
}

} // namespace synor
