/**
 * @fileoverview React Native TurboModule спецификация для CloudPayments SDK
 * @description Содержит интерфейс TurboModule для нативного моста между JavaScript и нативным кодом
 * @author CloudPayments SDK Team
 * @since 1.0.0
 */
import type { TurboModule } from 'react-native';
import type { EPaymentMethodType } from './enums';
import type { IIntentResponse, IIntentApiPayResponse, IBankInfo, IPaymentFormResponse } from './responses';
import type { TIntentWaitStatus } from './unionTypes';
/**
 * Спецификация TurboModule для CloudPayments SDK
 *
 * @description Интерфейс React Native TurboModule, определяющий все нативные методы
 * CloudPayments SDK. Этот интерфейс используется для генерации типобезопасного
 * моста между JavaScript и нативным кодом (iOS/Android).
 *
 * @remarks
 * Этот интерфейс предназначен для внутреннего использования SDK и автоматической
 * генерации нативного кода. Разработчики приложений должны использовать
 * высокоуровневые сервисы PaymentService и CardService вместо прямого обращения
 * к TurboModule.
 *
 * @example Использование через PaymentService (рекомендуется)
 * ```typescript
 * import { PaymentService } from '@lmapp/react-native-cloudpayments';
 *
 * // Вместо прямого вызова TurboModule
 * // const result = await NativeCloudpaymentsSdk.presentPaymentForm(paymentData);
 *
 * // Используйте высокоуровневый API
 * const result = await PaymentService.presentPaymentForm(paymentData);
 * ```
 *
 * @example Прямое использование TurboModule (не рекомендуется)
 * ```typescript
 * import { NativeModules } from 'react-native';
 * import type { ICloudpaymentsSdkSpec } from '@lmapp/react-native-cloudpayments';
 *
 * const CloudpaymentsModule = NativeModules.CloudpaymentsSdk as ICloudpaymentsSdkSpec;
 *
 * // Прямой вызов нативного метода
 * const intent = await CloudpaymentsModule.createIntent(paymentData);
 * ```
 *
 * @see {@link https://reactnative.dev/docs/the-new-architecture/pillars-turbomodules} TurboModules документация
 * @internal
 * @since 1.0.0
 */
export interface ICloudpaymentsSdkSpec extends TurboModule {
    /**
     * Создание платежного намерения (Intent)
     *
     * @description Нативный метод для создания Intent в системе CloudPayments.
     * Принимает объект с данными платежа и возвращает информацию о созданном Intent.
     *
     * @param paymentData - Объект с данными платежа (будет сериализован из ICreateIntentPaymentData)
     * @returns Promise с информацией о созданном Intent
     *
     * @internal
     * @platform ios, android
     */
    createIntent(paymentData: Object): Promise<IIntentResponse>;
    /**
     * Оплата через Intent с использованием криптограммы карты
     *
     * @description Нативный метод для выполнения оплаты через существующий Intent
     * с использованием зашифрованных данных карты (криптограммы).
     *
     * @param paymentData - Объект с данными платежа
     * @param cardCryptogram - Зашифрованные данные карты
     * @param intentId - Идентификатор существующего Intent
     * @returns Promise с результатом API оплаты
     *
     * @internal
     * @platform ios, android
     */
    createIntentApiPay(paymentData: Object, cardCryptogram: string, intentId: string): Promise<IIntentApiPayResponse>;
    /**
     * Ожидание статуса Intent для альтернативных способов оплаты
     *
     * @description Нативный метод для запуска альтернативного способа оплаты
     * (TPay, СБП, SberPay) и ожидания завершения операции.
     *
     * @param paymentData - Объект с данными платежа
     * @param type - Тип способа оплаты
     * @returns Promise с HTTP статус кодом результата
     *
     * @internal
     * @platform ios, android
     */
    getIntentWaitStatus(paymentData: Object, type: EPaymentMethodType): Promise<TIntentWaitStatus>;
    /**
     * Инициализация CloudPayments SDK
     *
     * @description Нативный метод для инициализации SDK с Public ID мерчанта.
     * Должен быть вызван перед использованием других методов.
     *
     * @param publicId - Публичный идентификатор мерчанта
     * @returns Promise с результатом инициализации
     *
     * @internal
     * @platform ios, android
     */
    initialize(publicId: string): Promise<boolean>;
    /**
     * Получение публичного ключа для шифрования
     *
     * @description Нативный метод для получения актуального публичного ключа
     * CloudPayments для шифрования данных карты.
     *
     * @returns Promise со строкой публичного ключа в формате PEM
     *
     * @internal
     * @platform ios, android
     */
    getPublicKey(): Promise<string>;
    /**
     * Валидация номера банковской карты
     *
     * @description Нативный метод для проверки корректности номера карты
     * с использованием алгоритма Луна.
     *
     * @param cardNumber - Номер банковской карты
     * @returns Promise с результатом валидации
     *
     * @internal
     * @platform ios, android
     */
    isCardNumberValid(cardNumber: string): Promise<boolean>;
    /**
     * Валидация срока действия карты
     *
     * @description Нативный метод для проверки корректности срока действия карты.
     *
     * @param expDate - Срок действия в формате MM/YY или MM/YYYY
     * @returns Promise с результатом валидации
     *
     * @internal
     * @platform ios, android
     */
    isExpDateValid(expDate: string): Promise<boolean>;
    /**
     * Валидация CVV кода карты
     *
     * @description Нативный метод для проверки корректности CVV кода.
     *
     * @param cvv - CVV код карты
     * @param isCvvRequired - Обязательность CVV для данного типа карты
     * @returns Promise с результатом валидации
     *
     * @internal
     * @platform ios, android
     */
    isValidCvv(cvv: string, isCvvRequired: boolean): Promise<boolean>;
    /**
     * Определение типа карты по номеру
     *
     * @description Нативный метод для определения платежной системы
     * (Visa, MasterCard, МИР и т.д.) по номеру карты.
     *
     * @param cardNumber - Номер банковской карты
     * @returns Promise с названием платежной системы
     *
     * @internal
     * @platform ios, android
     */
    cardTypeFromCardNumber(cardNumber: string): Promise<string>;
    /**
     * Создание криптограммы карты
     *
     * @description Нативный метод для создания зашифрованной криптограммы
     * из данных карты с использованием публичного ключа CloudPayments.
     *
     * @param cardNumber - Номер карты
     * @param expDate - Срок действия карты
     * @param cvv - CVV код карты
     * @param merchantPublicID - Public ID мерчанта
     * @param publicKey - Публичный ключ для шифрования
     * @param keyVersion - Версия публичного ключа
     * @returns Promise с криптограммой карты
     *
     * @internal
     * @platform ios, android
     */
    makeCardCryptogramPacket(cardNumber: string, expDate: string, cvv: string, merchantPublicID: string, publicKey: string, keyVersion: number): Promise<string>;
    /**
     * Получение информации о банке-эмитенте
     *
     * @description Нативный метод для определения банка-эмитента карты
     * по BIN (первые 6-8 цифр номера карты).
     *
     * @param cardNumber - Номер банковской карты
     * @returns Promise с информацией о банке
     *
     * @internal
     * @platform ios, android
     */
    getBankInfo(cardNumber: string): Promise<IBankInfo>;
    /**
     * Отображение стандартной платежной формы
     *
     * @description Нативный метод для показа встроенной платежной формы
     * CloudPayments с поддержкой всех способов оплаты.
     *
     * @param paymentData - Объект с данными платежа и конфигурацией формы
     * @returns Promise с результатом платежа
     *
     * @internal
     * @platform ios, android
     */
    presentPaymentForm(paymentData: Object): Promise<IPaymentFormResponse>;
}
//# sourceMappingURL=turboModule.d.ts.map