import { AxiosError } from 'axios';
interface KuraimiEPayClientOptions {
    username: string;
    password: string;
    environment?: 'UAT' | 'PROD';
    baseUrl?: string;
    /**
     * DANGER: Set to `true` to disable SSL/TLS certificate verification.
     * ONLY use this for trusted UAT/development environments where the server
     * might have a self-signed certificate. NEVER use in production.
     * Defaults to `false`.
     */
    dangerouslyDisableSSLCertVerification?: boolean;
}
interface BaseApiPayload {
    SCustID: string;
    REFNO: string;
}
export interface SendPaymentPayload extends BaseApiPayload {
    AMOUNT: number;
    CRCY?: string;
    MRCHNTNAME: string;
    PINPASS: string;
}
export interface ReversePaymentPayload extends BaseApiPayload {
}
interface ResultSet {
    PH_REF_NO?: string;
}
export interface ApiResponse<T = ResultSet | null> {
    Code: number;
    Message: string;
    MessageDesc: string;
    Date: string;
    ResultSet: T;
}
export interface ApiErrorResponseData extends Omit<ApiResponse<null>, 'Code'> {
    Code?: number;
}
export interface ApiError extends Error {
    statusCode?: number;
    data?: ApiErrorResponseData;
    originalError?: AxiosError | Error;
}
declare class KuraimiEPayClient {
    private axiosInstance;
    private username;
    private password;
    private environment;
    constructor({ username, password, environment, baseUrl, dangerouslyDisableSSLCertVerification, }: KuraimiEPayClientOptions);
    private _encodePin;
    private _handleApiError;
    sendPayment(paymentData: SendPaymentPayload): Promise<ApiResponse>;
    reversePayment(reversalData: ReversePaymentPayload): Promise<ApiResponse>;
}
export default KuraimiEPayClient;
