import type { UserData } from '../instrument';
import type { CardData } from '../instrument';
import { CaptureMode, PaymentIntent, PaymentEntryMode, Currency } from '../enums';
export interface Amount {
    value: number;
    currency: Currency;
}
export interface Capture {
    mode: CaptureMode;
}
export interface Installments {
    quantity: number;
    type: string;
}
export interface Card extends Omit<CardData, 'first_name' | 'last_name'> {
    holder_name: string;
}
export interface Instrument {
    type: 'CARD';
    card: Card;
    user_data: UserData;
}
export interface BaseIdempotencyKeyRequest {
    idempotencyKey?: string;
}
export interface BaseAuthorizeRequest extends BaseIdempotencyKeyRequest {
    amount: Amount;
    intent: PaymentIntent;
    trace_id: string;
    entry_mode: PaymentEntryMode;
    capture: Capture;
    merchant_id: string;
    installments: Installments;
}
export interface AuthorizeWithPanRequest extends BaseAuthorizeRequest {
    instrument: Instrument;
}
export interface RefundPaymentRequest extends BaseIdempotencyKeyRequest {
    amount: Amount;
}
export interface AuthorizeWithTokenRequest extends BaseAuthorizeRequest {
    instrument: {
        id: string;
    };
}
export interface VerifyPaymentRequest extends BaseIdempotencyKeyRequest {
    intent: 'account-status';
    merchant_id: string;
    trace_id: string;
    instrument: Instrument | {
        id: string;
    };
}
export interface CapturePaymentRequest extends BaseIdempotencyKeyRequest {
    amount: Amount;
}
export interface CancelPaymentRequest extends BaseIdempotencyKeyRequest {
}
export interface ClearPaymentRequest extends BaseIdempotencyKeyRequest {
}
