export interface GatewayResult {
  success: boolean;
  providerRef: string;
  clientAction?: { type: string; url?: string };
}

export async function telebirrAdapter(
  _a: number,
  ref: string,
): Promise<GatewayResult> {
  await new Promise((r) => setTimeout(r, 200));
  return {
    success: true,
    providerRef: `TB-${ref}-${Date.now()}`,
    clientAction: {
      type: "REDIRECT",
      url: `https://telebirr.sandbox.com/pay/${ref}`,
    },
  };
}
export async function cbeBirrAdapter(
  _a: number,
  ref: string,
): Promise<GatewayResult> {
  await new Promise((r) => setTimeout(r, 150));
  return { success: true, providerRef: `CBE-${ref}-${Date.now()}` };
}
export async function eBirrAdapter(
  _a: number,
  ref: string,
): Promise<GatewayResult> {
  await new Promise((r) => setTimeout(r, 150));
  return { success: true, providerRef: `EB-${ref}-${Date.now()}` };
}
export async function cardAdapter(
  _a: number,
  ref: string,
): Promise<GatewayResult> {
  await new Promise((r) => setTimeout(r, 150));
  return {
    success: !ref.startsWith("FAIL"),
    providerRef: `CARD-${ref}-${Date.now()}`,
  };
}
export async function walletAdapter(
  amount: number,
  balance: number,
): Promise<GatewayResult> {
  return { success: balance >= amount, providerRef: `WALLET-${Date.now()}` };
}
