import Settings from '@pixelpay/sdk-core/lib/models/Settings';
import { APP_CONFIG, PIXELPAY_USE_SANDBOX } from './app';

export { PIXELPAY_USE_SANDBOX };
export { applyPixelPayTransactionSignature, createPixelPayTransactionSignature } from './pixelPaySignature';
export {
  extractCardVaultToken,
  isCardVaultSuccess,
  normalizePixelPayResponse,
} from './pixelPayCard';

/** En sandbox, order_amount=1 fuerza transacción exitosa (docs PixelPay). */
export const getPixelPayChargeAmount = (amount: number): number =>
  PIXELPAY_USE_SANDBOX ? 1 : amount;

/** Sandbox usa año 2 dígitos (ej. 28); producción acepta YYYY. */
export const formatCardExpireYear = (year: number | string): number => {
  const y = typeof year === 'string' ? parseInt(year, 10) : year;
  if (PIXELPAY_USE_SANDBOX) {
    return y >= 2000 ? y % 100 : y;
  }
  return y;
};

export const getPixelPayErrorMessage = (response: { message?: string; success?: boolean } | null | undefined) =>
  response?.message || 'Error desconocido de PixelPay';

/** Credenciales sandbox/prod. Tokenización no lleva x-client-signature. */
export const configurePixelPaySettings = (settings: Settings) => {
  if (PIXELPAY_USE_SANDBOX) {
    settings.setupSandbox();
    return;
  }
  settings.setupEndpoint(APP_CONFIG.pixelpayProd.endpoint);
  settings.setupCredentials(APP_CONFIG.pixelpayProd.key, APP_CONFIG.pixelpayProd.hash);
};
