UNPKG

@vtex/payment-provider

Version:
73 lines (72 loc) 4.96 kB
import type { Overwrite } from 'utility-types'; import type { ApprovedAuthorization, AuthorizationRequest, BankInvoiceAuthorization, BankInvoiceAuthorized, CancellationRequest, CancellationResponse, CardAuthorization, CreditCardAuthorized, FailedAuthorization, RedirectResponse, RefundRequest, RefundResponse, SettlementRequest, SettlementResponse, PendingAuthorization, AppData, BankInvoicePending, ConnectorMetadata } from './typings/api'; type OptionalKeys<T> = Exclude<{ [key in keyof T]: undefined extends T[key] ? key : never; }[keyof T], undefined>; type OptionalUndefined<T extends Record<string, unknown>> = Overwrite<T, { [key in keyof Pick<T, OptionalKeys<T>>]?: T[key]; }>; type ConnectorMetadataProperty = { connectorMetadata?: ConnectorMetadata[]; }; export type ApproveArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<ApprovedAuthorization, keyof AuthorizationRequest | 'status' | 'delayToCancel'>>; export type ApproveCardArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<CreditCardAuthorized, keyof CardAuthorization | 'status' | 'delayToCancel'>>; export type ApproveBankInvoiceArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<BankInvoiceAuthorized, keyof BankInvoiceAuthorization | 'status' | 'delayToCancel'>>; export type DenyArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<FailedAuthorization, keyof AuthorizationRequest | 'status'>>; export type PendingArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<PendingAuthorization, keyof AuthorizationRequest | 'status'>>; export type PendingBankInvoiceArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<BankInvoicePending, keyof AuthorizationRequest | 'status'>>; export type PaymentAppArgs = OptionalUndefined<Overwrite<ConnectorMetadataProperty & Omit<RedirectResponse, keyof AuthorizationRequest | 'status' | 'redirectUrl'>, { paymentAppData: AppData; }>>; export type RedirectUrlArgs = OptionalUndefined<Overwrite<ConnectorMetadataProperty & Omit<RedirectResponse, keyof AuthorizationRequest | 'status' | 'paymentAppData'>, { redirectUrl: string; }>>; export type ActionRequired = PaymentAppArgs | RedirectUrlArgs; export declare const Authorizations: { approve: ({ paymentId }: AuthorizationRequest, approveArgs: ApproveArgs) => ApprovedAuthorization; approveCard: ({ paymentId }: CardAuthorization, approvedCardArgs: ApproveCardArgs) => CreditCardAuthorized; approveBankInvoice: ({ paymentId }: BankInvoiceAuthorization, approvedBankInvoiceArgs: ApproveBankInvoiceArgs) => BankInvoiceAuthorized; deny: ({ paymentId }: AuthorizationRequest, denyArgs?: DenyArgs) => FailedAuthorization; pending: ({ paymentId }: AuthorizationRequest, pendingArgs: PendingArgs) => PendingAuthorization; pendingBankInvoice: ({ paymentId }: AuthorizationRequest, pendingArgs: PendingBankInvoiceArgs) => BankInvoicePending; redirect: ({ paymentId }: AuthorizationRequest, actionRequired: ActionRequired) => RedirectResponse | PendingAuthorization; }; export interface ApproveCancellationArgs { cancellationId: string; code?: CancellationResponse['code']; message?: string; connectorMetadata?: ConnectorMetadata[]; } export type ManualCancellationArgs = Omit<ApproveCancellationArgs, 'cancellationId'>; export type DenyCancellationArgs = ManualCancellationArgs; export declare const Cancellations: { approve: ({ paymentId }: CancellationRequest, cancellationArgs: ApproveCancellationArgs) => CancellationResponse; manual: ({ paymentId }: CancellationRequest, cancellationArgs?: ManualCancellationArgs) => CancellationResponse; deny: ({ paymentId }: CancellationRequest, cancellationArgs?: DenyCancellationArgs) => CancellationResponse; }; export interface ApproveRefundArgs { refundId: string; code?: RefundResponse['code']; message?: string; connectorMetadata?: ConnectorMetadata[]; } export type DenyRefundArgs = Omit<ApproveRefundArgs, 'refundId'>; export type ManualRefundArgs = DenyRefundArgs; export declare const Refunds: { approve: ({ paymentId, requestId, value }: RefundRequest, refundArgs: ApproveRefundArgs) => RefundResponse; manual: ({ paymentId, requestId }: RefundRequest, refundArgs?: ManualRefundArgs) => RefundResponse; deny: ({ paymentId, requestId }: RefundRequest, refundArgs?: DenyRefundArgs) => RefundResponse; }; export interface ApproveSettlementArgs { settleId: string; code?: SettlementResponse['code']; message?: string; connectorMetadata?: ConnectorMetadata[]; } export type DenySettlementArgs = Omit<ApproveSettlementArgs, 'settleId'>; export declare const getCallbackUrl: (request: AuthorizationRequest | string) => string; export declare const Settlements: { approve: ({ paymentId, requestId, value }: SettlementRequest, settleArgs: ApproveSettlementArgs) => SettlementResponse; deny: ({ paymentId, requestId }: SettlementRequest, settleArgs?: DenySettlementArgs) => SettlementResponse; }; export {};