import { BaseAxiosApiClient } from "./base-client";
import { WebhookService } from "../features/webhook/index";
import { InvoiceService } from "../features/invoice/index";
import type { ApiClientOptions, Metadata, MoyasarClientTypes, MetadataValidator, ApiClient } from "../shared/types/index";
import { PaymentService } from "../features/payment/index";
export interface MoyasarClientOptions<T extends object = Metadata> extends ApiClientOptions {
    apiKey: string;
    metadataValidator?: MetadataValidator<T>;
}
export declare class MoyasarClient<T extends object = Metadata> extends BaseAxiosApiClient implements ApiClient<MoyasarClientTypes<T>> {
    readonly webhook: WebhookService<MoyasarClientTypes<T>>;
    readonly invoice: InvoiceService<MoyasarClientTypes<T>>;
    readonly payment: PaymentService<MoyasarClientTypes<T>>;
    readonly metadataValidator: MetadataValidator<T>;
    constructor(options: MoyasarClientOptions<T>);
    readonly defaultParser: MetadataValidator<T>;
    /**
     * Test the API connection
     */
    ping(): Promise<{
        status: "ok";
        timestamp: number;
    }>;
    /**
     * Get client information
     */
    getClientInfo(): {
        baseUrl: string;
        userAgent: string;
        version: string;
    };
}
//# sourceMappingURL=moyasar-client.d.ts.map