// Path: src/main/java/com/github/sbouclier/result/LedgersInformationResult.java
// public class LedgersInformationResult extends Result<LedgersInformationResult.LedgersInformation> {
// 
//     public static class LedgersInformation {
// 
//         @JsonProperty("ledger")
//         public Map<String, LedgerInformation> ledger;
// 
//         public Long count;
// 
//         @Override
//         public String toString() {
//             return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
//                     .append("ledger", ledger)
//                     .append("count", count)
//                     .toString();
//         }
//     }
// }


import com.github.sbouclier.result.*;
import com.github.sbouclier.result.LedgersInformationResult;
            case ORDER_BOOK:
                return new HttpApiClient<OrderBookResult>();
            case RECENT_TRADES:
                return new HttpApiClient<RecentTradeResult>();
            case RECENT_SPREADS:
                return new HttpApiClient<RecentSpreadResult>();
            default:
                throw new IllegalArgumentException("Unknown Kraken API method");
        }
    }

    public HttpApiClient<? extends Result> getHttpApiClient(String apiKey, String apiSecret, KrakenApiMethod method) {
        switch(method) {
            case ACCOUNT_BALANCE:
                return new HttpApiClient<AccountBalanceResult>(apiKey, apiSecret);
            case TRADE_BALANCE:
                return new HttpApiClient<TradeBalanceResult>(apiKey, apiSecret);
            case OPEN_ORDERS:
                return new HttpApiClient<OpenOrdersResult>(apiKey, apiSecret);
            case CLOSED_ORDERS:
                return new HttpApiClient<ClosedOrdersResult>(apiKey, apiSecret);
            case ORDERS_INFORMATION:
                return new HttpApiClient<OrdersInformationResult>(apiKey, apiSecret);
            case TRADES_HISTORY:
                return new HttpApiClient<TradesHistoryResult>(apiKey, apiSecret);
            case TRADES_INFORMATION:
                return new HttpApiClient<TradesInformationResult>(apiKey, apiSecret);
            case OPEN_POSITIONS:
                return new HttpApiClient<OpenPositionsResult>(apiKey, apiSecret);
            case LEDGERS_INFORMATION:
// Path: src/main/java/com/github/sbouclier/result/LedgersInformationResult.java
// public class LedgersInformationResult extends Result<LedgersInformationResult.LedgersInformation> {
// 
//     public static class LedgersInformation {
// 
//         @JsonProperty("ledger")
//         public Map<String, LedgerInformation> ledger;
// 
//         public Long count;
// 
//         @Override
//         public String toString() {
//             return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
//                     .append("ledger", ledger)
//                     .append("count", count)
//                     .toString();
//         }
//     }
// }


// Path: src/main/java/com/github/sbouclier/HttpApiClientFactory.java
import com.github.sbouclier.result.*;
import com.github.sbouclier.result.LedgersInformationResult;

            case ORDER_BOOK:
                return new HttpApiClient<OrderBookResult>();
            case RECENT_TRADES:
                return new HttpApiClient<RecentTradeResult>();
            case RECENT_SPREADS:
                return new HttpApiClient<RecentSpreadResult>();
            default:
                throw new IllegalArgumentException("Unknown Kraken API method");
        }
    }

    public HttpApiClient<? extends Result> getHttpApiClient(String apiKey, String apiSecret, KrakenApiMethod method) {
        switch(method) {
            case ACCOUNT_BALANCE:
                return new HttpApiClient<AccountBalanceResult>(apiKey, apiSecret);
            case TRADE_BALANCE:
                return new HttpApiClient<TradeBalanceResult>(apiKey, apiSecret);
            case OPEN_ORDERS:
                return new HttpApiClient<OpenOrdersResult>(apiKey, apiSecret);
            case CLOSED_ORDERS:
                return new HttpApiClient<ClosedOrdersResult>(apiKey, apiSecret);
            case ORDERS_INFORMATION:
                return new HttpApiClient<OrdersInformationResult>(apiKey, apiSecret);
            case TRADES_HISTORY:
                return new HttpApiClient<TradesHistoryResult>(apiKey, apiSecret);
            case TRADES_INFORMATION:
                return new HttpApiClient<TradesInformationResult>(apiKey, apiSecret);
            case OPEN_POSITIONS:
                return new HttpApiClient<OpenPositionsResult>(apiKey, apiSecret);
            case LEDGERS_INFORMATION:
                return new HttpApiClient<LedgersInformationResult>(apiKey, apiSecret);