export interface PaymentInitResult {
  processUrl: string;
  shopProcessId: bigint;
  pagoId: string;
}

export interface PaymentConfirmResult {
  aprobado: boolean;
  responseCode: string;
  responseDescription: string;
  authorizationNumber?: string;
  ticketNumber?: string;
}

export interface PaymentRefundResult {
  success: boolean;
  message: string;
}

export interface IPaymentGateway {
  initPayment(params: {
    empresaId: string;
    monto: number;
    moneda: string;
    descripcion: string;
    clienteId?: string;
    usuarioId?: string;
    origenModulo: string;
    origenId?: string;
  }): Promise<PaymentInitResult>;

  confirmPayment(shopProcessId: bigint, empresaId: string): Promise<PaymentConfirmResult>;

  refund(pagoId: string, empresaId: string, monto?: number): Promise<PaymentRefundResult>;
}
