export declare enum PaymentMode {
    Online = "online",
    CardPresent = "cardPresent"
}
export declare enum PaymentType {
    StripeOnlineCheckout = "stripeOnlineCheckout",
    AdyenCloudCardTerminal = "adyenCloudCardTerminal",
    Other = "other"
}
export interface TransactionOtherPayment {
    type: PaymentType.Other;
    data: unknown;
}
export interface StripeOnlineCheckoutPaymentData {
    collectShippingAddress: boolean;
}
export interface TransactionStripeOnlineCheckoutPayment {
    type: PaymentType.StripeOnlineCheckout;
    data: StripeOnlineCheckoutPaymentData;
}
export interface AdyenCardTerminalCloudPaymentData {
    terminalId: string;
}
export interface TransactionAdyenCloudCardTerminalCheckoutPayment {
    type: PaymentType.AdyenCloudCardTerminal;
    data: AdyenCardTerminalCloudPaymentData;
}
export type TransactionPayment = TransactionOtherPayment | TransactionStripeOnlineCheckoutPayment;
export interface Customer {
    email: string;
    name: string;
    phone: string;
}
export interface AdyenCloudCardTerminalPaymentData {
    terminalId: string;
}
export interface CreatePaymentPayload {
    paymentTypeId: string;
    transactionId: string;
    data?: AdyenCloudCardTerminalPaymentData | StripeOnlineCheckoutPaymentData;
}
export interface StripeOnlineCheckoutPaymentResponse {
    type: PaymentType.StripeOnlineCheckout;
    transactionId: string;
    data: {
        stripeId: string;
        checkoutUrl: string;
    };
}
export interface AdyenCloudCardTerminalCheckoutPaymentResponse {
    type: PaymentType.AdyenCloudCardTerminal;
    transactionId: string;
    data: {
        status: string;
    };
}
export type PaymentResponse = StripeOnlineCheckoutPaymentResponse | AdyenCloudCardTerminalCheckoutPaymentResponse;
export interface PaymentMethodSchemaConfig {
    id: string;
    title: string;
    type: PaymentType;
    mode: PaymentMode;
    data: StripeOnlineCheckoutPaymentData | AdyenCardTerminalCloudPaymentData;
}
