import { Payment, TossPaymentsErrorType, PaymentStatus } from "../types";
import { PaymentSessionData } from "@medusajs/medusa";
declare class TossPaymentsBase {
    private tosspaymentsApi;
    protected readonly secretKey: string;
    protected status: PaymentStatus;
    protected paymentIntent: Record<string, unknown>;
    private readonly baseUrl;
    constructor(secretKey: unknown, version: unknown);
    getStatus(): PaymentStatus;
    /**
     *
     * @param sessionData
     */
    initialize({ id, email, amount, }: {
        id: string;
        email: string;
        amount: number;
    }): Record<string, unknown>;
    update(data: PaymentSessionData): Record<string, unknown>;
    retrieve(): Record<string, unknown>;
    /**
     * TOSSPAYMENTS API
     */
    /**
     * paymentKey에 해당하는 결제를 검증하고 승인합니다.
     * 결제 인증이 유효한 10분 안에 상점에서 결제 승인 API를 호출하지 않으면 해당 결제는 만료됩니다.
     *
     * @param data<{paymentKey: string, orderId: string, amount: number}>
     * @returns
     */
    confirm(data: {
        paymentKey: string;
        orderId: string;
        amount: number;
    }): Promise<Payment | TossPaymentsErrorType>;
    /**
     * 승인된 결제를 paymentKey로 조회합니다.
     * paymentKey는 SDK를 사용해 결제할 때 발급되는 고유한 키 값이며, orderId는 SDK로 결제를 요청할 때 가맹점에서 만들어서 사용한 값입니다.
     * 결제가 최종 승인된 후 돌아오는 Payment 객체에 담겨있습니다.
     *
     * @param paymentKey
     */
    inquiry(paymentKey: string): Promise<Payment | TossPaymentsErrorType>;
    /**
     * 승인된 결제를 paymentKey로 취소합니다. 취소 이유를 cancelReason에 추가해야 합니다.
     * 결제 금액의 일부만 부분 취소하려면 cancelAmount에 취소할 금액을 추가해서 API를 요청합니다. (cancelAmount에 값을 넣지 않으면 전액 취소됩니다.)
     * 멱등키를 요청 헤더에 추가하면 중복 취소 없이 안전하게 처리됩니다.
     *
     * @param paymentKey
     * @param reason
     * @param amount
     * @returns
     */
    cancel(paymentKey: string, reason: string, amount?: number): Promise<Payment | TossPaymentsErrorType>;
}
export default TossPaymentsBase;
