import { OtherService } from "./services/other";
import { PaymentsService } from "./services/payments";
import { PayoutsService } from "./services/payouts";
import type { CryptomusConfig } from "./types/config";
/**
 * Main client class for interacting with the Cryptomus API.
 * Provides access to payments, payouts, and other services through a unified interface.
 *
 * @class
 * @example
 * ```typescript
 * const client = new CryptomusClient({
 *   merchantId: "your-merchant-id",
 *   paymentKey: "your-payment-key",
 *   payoutKey: "your-payout-key"
 * });
 *
 * // Create a payment
 * const payment = await client.payments.create({
 *   amount: "100",
 *   currency: "USD",
 *   order_id: "test-123"
 * });
 *
 * // Create a payout
 * const payout = await client.payouts.create({
 *   amount: "50",
 *   currency: "USDT",
 *   network: "TRX",
 *   address: "wallet-address"
 * });
 *
 * // Get exchange rates
 * const rates = await client.other.getExchangeRatesForCurrency("USDT");
 * ```
 */
export declare class CryptomusClient {
    /** Base URL for the Cryptomus API */
    private readonly baseUrl;
    /**
     * Service for handling payment operations.
     * Includes methods for creating payments, managing wallets, and handling discounts.
     */
    readonly payments: PaymentsService;
    /**
     * Service for handling payout operations.
     * Includes methods for creating payouts and transferring funds.
     */
    readonly payouts: PayoutsService;
    /**
     * Service for other utility operations.
     * Currently includes methods for retrieving exchange rates.
     */
    readonly other: OtherService;
    /**
     * Creates a new instance of the CryptomusClient.
     *
     * @param {CryptomusConfig} config - Configuration object containing API credentials.
     * @param {string} config.merchantId - Your Cryptomus merchant ID.
     * @param {string} config.paymentKey - Your API key for payment operations.
     * @param {string} config.payoutKey - Your API key for payout operations.
     *
     * @throws {Error} If required configuration parameters are missing.
     */
    constructor(config: CryptomusConfig);
}
export * from "./types";
