import type { Amount } from '../../../../common/interfaces';
import type { ReceiptRegistrationEnum } from '../../../receipt/enums';
import type { CancellationPartyEnum, CancellationReasonEnum, PaymentStatusEnum } from '../../enums';
import type { PaymentMethod } from '../payment-method.interface';
import type { ConfirmationResponse } from './confirmation.response';
import type { YookassaMetadata } from '../../../../common/types/metadata.type';
/**
 * Информация об отмене платежа.
 * Содержит комментарий к статусу canceled: кто отменил платеж и по какой причине.
 */
export interface CancellationDetails {
    /**
     * Участник процесса платежа, который принял решение об отмене транзакции.
     */
    party: CancellationPartyEnum;
    /**
     * Причина отмены платежа.
     */
    reason: CancellationReasonEnum;
}
/**
 * Статусы распределения денег между магазинами.
 */
export declare enum TransferStatusEnum {
    /** Ожидает обработки. */
    PENDING = "pending",
    /** Ожидает подтверждения списания. */
    WAITING_FOR_CAPTURE = "waiting_for_capture",
    /** Успешно завершено. */
    SUCCEEDED = "succeeded",
    /** Отменено. */
    CANCELED = "canceled"
}
/**
 * Операция распределения платежа — перечисление денег магазину.
 */
interface Settlement {
    /**
     * Тип операции. Всегда "payout".
     */
    type: 'payout';
    /**
     * Сумма вознаграждения продавца.
     */
    amount: Amount;
    /**
     * Идентификатор покупателя в вашей системе,
     * например электронная почта или номер телефона.
     * Не более 200 символов.
     * Необязательное поле.
     */
    merchant_customer_id?: string;
}
/**
 * Данные о сделке, в составе которой проходит платеж.
 */
interface Deal {
    /**
     * Идентификатор сделки.
     */
    id: string;
    /**
     * Данные о распределении денег (массив операций).
     */
    settlements: Settlement[];
}
/**
 * Данные о распределении денег — сколько и в какой магазин нужно перевести.
 */
export interface Transfer<T extends YookassaMetadata = YookassaMetadata> {
    /**
     * Идентификатор магазина, в пользу которого принимается оплата.
     */
    account_id: string;
    /**
     * Сумма, которую необходимо перечислить магазину.
     */
    amount: Amount;
    /**
     * Статус распределения денег между магазинами.
     */
    status: TransferStatusEnum;
    /**
     * Комиссия за проданные товары и услуги, удерживаемая с магазина в вашу пользу.
     * Необязательное поле.
     */
    platform_fee_amount?: Amount;
    /**
     * Описание транзакции (не более 128 символов),
     * которое продавец увидит в личном кабинете ЮKassa.
     * Например: «Заказ маркетплейса №72».
     * Необязательное поле.
     */
    description?: string;
    /**
     * Дополнительные данные для вашей системы,
     * передаются в виде набора пар «ключ-значение»,
     * максимум 16 ключей, имя ключа не более 32 символов,
     * значение ключа не более 512 символов.
     * Необязательное поле.
     */
    metadata?: T;
}
/**
 * Данные о прохождении аутентификации по 3‑D Secure.
 */
export interface ThreeDSecure {
    /**
     * Отображение пользователю формы для прохождения аутентификации по 3‑D Secure.
     * true — форма была показана пользователю,
     * false — платеж проходил без аутентификации по 3‑D Secure.
     */
    applied: boolean;
}
/**
 * Данные об авторизации платежа при оплате банковской картой.
 * Присутствуют только для способов оплаты: банковская карта, Mir Pay, SberPay, T-Pay.
 */
export interface AuthorizationDetails<T extends YookassaMetadata = YookassaMetadata> {
    /**
     * Retrieval Reference Number — идентификатор банковской транзакции.
     * Необязательное поле.
     */
    rrn?: string;
    /**
     * Код авторизации, выдается эмитентом и подтверждает проведение авторизации.
     * Необязательное поле.
     */
    auth_code?: string;
    /**
     * Данные о прохождении пользователем аутентификации по 3‑D Secure.
     */
    three_d_secure: ThreeDSecure;
    /**
     * Данные о распределении денег — сколько и в какой магазин нужно перевести.
     * Присутствует, если используется Сплитование платежей.
     * Необязательное поле.
     */
    transfers?: Transfer<T>[];
    /**
     * Данные о сделке, в составе которой проходит платеж.
     * Присутствует, если проводится Безопасная сделка.
     * Необязательное поле.
     */
    deal?: Deal;
    /**
     * Данные о выставленном счете, в рамках которого проведен платеж.
     * Необязательное поле.
     */
    invoice_details?: {
        /**
         * Идентификатор счета в ЮKassa.
         * Необязательное поле.
         */
        id?: string;
    };
}
/**
 * Тип, представляющий информацию о платеже.
 */
export interface CreatePaymentResponse<T extends YookassaMetadata = YookassaMetadata> {
    /**
     * Идентификатор платежа.
     */
    id: string;
    /**
     * Статус платежа.
     */
    status: PaymentStatusEnum;
    /**
     * Сумма платежа.
     */
    amount: Amount;
    /**
     * Сумма, полученная от платежа.
     * Необязательное поле.
     */
    income_amount?: Amount;
    /**
     * Описание платежа.
     * Необязательное поле.
     */
    description?: string;
    /**
     * Информация о получателе платежа.
     */
    recipient: {
        /**
         * Идентификатор аккаунта получателя.
         */
        account_id: string;
        /**
         * Идентификатор шлюза получателя.
         */
        gateway_id: string;
    };
    /**
     * Метод платежа.
     * Необязательное поле.
     */
    payment_method?: PaymentMethod<T>;
    /**
     * Время захвата платежа.
     * Необязательное поле.
     */
    captured_at?: string;
    /**
     * Время создания платежа.
     */
    created_at: string;
    /**
     * Время истечения срока действия платежа.
     * Необязательное поле.
     */
    expires_at?: string;
    /**
     * Подтверждение платежа.
     * Необязательное поле.
     */
    confirmation?: ConfirmationResponse;
    /**
     * Является ли платеж тестовым.
     */
    test: boolean;
    /**
     * Сумма возврата, если она есть.
     * Необязательное поле.
     */
    refunded_amount?: Amount;
    /**
     * Был ли платеж произведен.
     */
    paid: boolean;
    /**
     * Может ли платеж быть возвращен.
     */
    refundable: boolean;
    /**
     * Статус регистрации чека.
     * Необязательное поле.
     */
    receipt_registration?: ReceiptRegistrationEnum;
    /**
     * Дополнительные метаданные платежа.
     * Необязательное поле.
     */
    metadata?: T;
    /**
     * Информация об отмене платежа.
     * Необязательное поле.
     */
    cancellation_details?: CancellationDetails;
    /**
     * Данные об авторизации платежа при оплате банковской картой.
     * Присутствуют только для способов оплаты: банковская карта, Mir Pay, SberPay, T-Pay.
     * Необязательное поле.
     */
    authorization_details?: AuthorizationDetails<T>;
    /**
     * Данные о распределении денег — сколько и в какой магазин нужно перевести.
     * Необязательное поле.
     */
    transfers?: Transfer<T>;
    /**
     * Данные о сделке, в составе которой проходит платеж.
     * Необязательное поле.
     */
    deal?: Deal;
    /**
     * Идентификатор покупателя в вашей системе, например электронная почта или номер телефона.
     * Необязательное поле.
     */
    merchant_customer_id?: string;
}
export {};
