import type { PaymentAction, PaymentEffectEvent, PaymentFlowEvent, PaymentMethod, PaymentPayParams, PaymentProvider, PaymentReader, PaymentRefundParams, PaymentRequestClient, PaymentResult } from '../types'; export declare type PaymentFlowKind = 'sci' | 'spi' | 'walletpass'; export declare type PaymentOperation = 'pay' | 'refund'; /** Session 持有的最小 Flow 契约。 */ export interface PaymentFlow { pay(params: PaymentPayParams): void; refund(params: PaymentRefundParams): void; action(action: PaymentAction, inputValues?: Record): void; destroy(): void; } export interface PaymentFlowContext { sessionId: string; paymentMethod: PaymentMethod; paymentProvider: PaymentProvider; salesId: string; operation: PaymentOperation; number: string; requestUniqueIdempotencyToken: string; request: PaymentRequestClient; emit: (event: PaymentFlowEvent) => void; } export declare type SciProcessingEvent = Extract; export interface SciResponseContext { operation: PaymentOperation; response: PaymentResult; reader?: PaymentReader; } export interface SciResponseOutput { event?: SciProcessingEvent; effects?: PaymentEffectEvent[]; version?: string | number; } /** SCI 实例化时按 provider 注入该转换器。 */ export declare type SciResponseHandler = (context: SciResponseContext) => SciResponseOutput; export interface SciPaymentFlowOptions extends PaymentFlowContext { responseHandler: SciResponseHandler; } export declare type PaymentFlowFactory = (kind: PaymentFlowKind, context: PaymentFlowContext) => PaymentFlow; export declare const resolvePaymentFlowKind: (paymentMethod: PaymentMethod, paymentProvider: PaymentProvider) => PaymentFlowKind; /** 本期只接通 MX51 SCI;其他路线保持显式未实现。 */ export declare const createPaymentFlow: PaymentFlowFactory;