/**
 * @fileoverview Интерфейсы событий CloudPayments SDK
 * @description Содержит типы данных для событий платежной формы и пользовательских взаимодействий
 * @author CloudPayments SDK Team
 * @since 1.0.0
 */
import type { EPaymentFormAction, EPaymentFormErrorCode, EPaymentMethodType } from './enums';
/**
 * Базовое событие CloudPayments
 *
 * @description Базовый интерфейс для всех событий CloudPayments SDK.
 * Содержит поле action для определения типа события.
 *
 * @since 1.0.0
 */
export interface ICloudPaymentsBaseEvent {
    /**
     * Тип действия события
     * @description Определяет конкретный тип события внутри категории.
     */
    action: string;
}
/**
 * Событие платежной формы
 *
 * @description Событие жизненного цикла платежной формы, связанное с отображением
 * и скрытием UI элементов, а также выполнением транзакций.
 *
 * @example Обработка событий платежной формы
 * ```typescript
 * import { eventEmitter, EPaymentFormEventName } from '@lmapp/react-native-cloudpayments';
 *
 * eventEmitter.addListener(EPaymentFormEventName.PAYMENT_FORM, (event: IPaymentFormEvent) => {
 *   switch (event.action) {
 *     case 'willDisplay':
 *       console.log('Форма готовится к показу');
 *       setIsLoading(true);
 *       break;
 *     case 'didDisplay':
 *       console.log('Форма отображена');
 *       setIsLoading(false);
 *       break;
 *     case 'willHide':
 *       console.log('Форма готовится к скрытию');
 *       break;
 *     case 'didHide':
 *       console.log('Форма скрыта');
 *       setPaymentFormVisible(false);
 *       break;
 *     case 'transaction':
 *       if (event.statusCode) {
 *         console.log('Платеж успешен:', event.transactionId);
 *       } else {
 *         console.log('Ошибка платежа:', event.message);
 *       }
 *       break;
 *   }
 * });
 * ```
 *
 * @since 1.0.0
 */
export interface IPaymentFormEvent extends ICloudPaymentsBaseEvent {
    /**
     * Действие платежной формы
     * @description Тип события из жизненного цикла платежной формы.
     */
    action: 'willDisplay' | 'didDisplay' | 'willHide' | 'didHide' | 'transaction';
    /**
     * Код статуса (для транзакций)
     * @description Присутствует только для action='transaction'.
     * true - успешная транзакция, false - ошибка.
     */
    statusCode?: boolean;
    /**
     * Идентификатор транзакции (для успешных транзакций)
     * @description ID созданной транзакции в системе CloudPayments.
     * Присутствует только при успешном завершении платежа.
     */
    transactionId?: number;
    /**
     * Сообщение (для ошибок транзакций)
     * @description Текстовое описание ошибки.
     * Присутствует при неудачном завершении платежа.
     */
    message?: string;
    /**
     * Код ошибки (для ошибок транзакций)
     * @description Стандартизированный код ошибки.
     */
    errorCode?: EPaymentFormErrorCode;
}
/**
 * Событие платежа
 *
 * @description Событие для операций с платежами (создание, обработка).
 *
 * @since 1.0.0
 */
export interface IPaymentEvent extends ICloudPaymentsBaseEvent {
    /**
     * Действие платежа
     * @description Тип операции с платежом.
     */
    action: string;
    /**
     * Дополнительные данные
     * @description Произвольные данные, связанные с операцией.
     */
    [key: string]: any;
}
/**
 * Событие карты
 *
 * @description Событие для операций с картами (валидация, получение информации).
 *
 * @since 1.0.0
 */
export interface ICardEvent extends ICloudPaymentsBaseEvent {
    /**
     * Действие с картой
     * @description Тип операции с картой.
     */
    action: string;
    /**
     * Дополнительные данные
     * @description Произвольные данные, связанные с операцией.
     */
    [key: string]: any;
}
/**
 * Событие 3DS
 *
 * @description Событие для операций 3D Secure аутентификации.
 *
 * @since 1.0.0
 */
export interface IThreeDSEvent extends ICloudPaymentsBaseEvent {
    /**
     * Действие 3DS
     * @description Тип операции 3D Secure.
     */
    action: string;
    /**
     * Дополнительные данные
     * @description Произвольные данные, связанные с операцией.
     */
    [key: string]: any;
}
/**
 * @deprecated Используйте IPaymentFormEvent с action='willDisplay'|'didDisplay'|'willHide'|'didHide'
 */
export interface IPaymentFormUIEvent {
    action: EPaymentFormAction.WILL_DISPLAY | EPaymentFormAction.DID_DISPLAY | EPaymentFormAction.WILL_HIDE | EPaymentFormAction.DID_HIDE;
}
/**
 * @deprecated Используйте IPaymentFormEvent с action='transaction'
 */
export interface IPaymentFormTransactionEvent {
    action: EPaymentFormAction.TRANSACTION;
    status: boolean;
    transactionId?: number;
    message?: string;
}
/**
 * @deprecated Используйте IPaymentFormEvent с action='transaction' и statusCode=true
 */
export interface IPaymentSuccessEventData {
    transactionId: number;
    message?: string;
}
/**
 * @deprecated Используйте IPaymentFormEvent с action='transaction' и statusCode=false
 */
export interface IPaymentFailedEventData {
    message: string;
    code?: EPaymentFormErrorCode;
}
/**
 * @deprecated Будет удалено в следующих версиях
 */
export interface IPaymentProgressEventData {
    stage: string;
    progress?: number;
}
/**
 * @deprecated Будет удалено в следующих версиях
 */
export interface IPaymentMethodSelectedEventData {
    method: EPaymentMethodType;
    details?: Record<string, any>;
}
//# sourceMappingURL=events.d.ts.map