wxApi.deleteTransaction(tid).then(_ => history.go(-1))}
    onRetry={() => wxApi.retryTransaction(tid).then(_ => history.go(-1))}
    onBack={() => { route(Pages.history) }} />;
}
export interface WalletTransactionProps {
  transaction: Transaction,
  onDelete: () => void,
  onRetry: () => void,
  onBack: () => void,
}
export function TransactionView({ transaction, onDelete, onRetry, onBack }: WalletTransactionProps) {
  function Status() {
    if (transaction.error) {
      return (failed)
    }
    if (transaction.pending) {
      return (pending...)
    }
    return null
  }
  function TransactionTemplate({ children }: { children: VNode[] }) {
    return 
      
      
    
  }
  function amountToString(text: AmountLike) {
    const aj = Amounts.jsonifyAmount(text)
    const amount = Amounts.stringifyValue(aj)
    return `${amount} ${aj.currency}`
  }
  if (transaction.type === TransactionType.Withdrawal) {
    const fee = Amounts.sub(
      Amounts.parseOrThrow(transaction.amountRaw),
      Amounts.parseOrThrow(transaction.amountEffective),
    ).amount
    return 
      Withdrawal 
      {transaction.timestamp.t_ms === 'never' ? 'never': format(transaction.timestamp.t_ms, 'dd MMMM yyyy, HH:mm')}
      
      
      
      
      
    
  }
  const showLargePic = () => {
  }
  if (transaction.type === TransactionType.Payment) {
    const fee = Amounts.sub(
      Amounts.parseOrThrow(transaction.amountEffective),
      Amounts.parseOrThrow(transaction.amountRaw),
    ).amount
    return 
      Payment 
      {transaction.timestamp.t_ms === 'never' ? 'never': format(transaction.timestamp.t_ms, 'dd MMMM yyyy, HH:mm')}
      
      
      
      
      
      
      
      
        {transaction.info.products && transaction.info.products.length > 0 &&
          
            {transaction.info.products.map(p => 
              
                
              
              
                {p.quantity && p.quantity > 0 && 
x {p.quantity} {p.unit}}
                
{p.description}
               
            )}
          
        }
      
 
    
  }
  if (transaction.type === TransactionType.Deposit) {
    const fee = Amounts.sub(
      Amounts.parseOrThrow(transaction.amountRaw),
      Amounts.parseOrThrow(transaction.amountEffective),
    ).amount
    return 
      Deposit 
      {transaction.timestamp.t_ms === 'never' ? 'never': format(transaction.timestamp.t_ms, 'dd MMMM yyyy, HH:mm')}
      
      
      
      
    
  }
  if (transaction.type === TransactionType.Refresh) {
    const fee = Amounts.sub(
      Amounts.parseOrThrow(transaction.amountRaw),
      Amounts.parseOrThrow(transaction.amountEffective),
    ).amount
    return 
      Refresh 
      {transaction.timestamp.t_ms === 'never' ? 'never': format(transaction.timestamp.t_ms, 'dd MMMM yyyy, HH:mm')}
      
      
      
      
    
  }
  if (transaction.type === TransactionType.Tip) {
    const fee = Amounts.sub(
      Amounts.parseOrThrow(transaction.amountRaw),
      Amounts.parseOrThrow(transaction.amountEffective),
    ).amount
    return 
      Tip 
      {transaction.timestamp.t_ms === 'never' ? 'never': format(transaction.timestamp.t_ms, 'dd MMMM yyyy, HH:mm')}
      
      
      
      
    
  }
  if (transaction.type === TransactionType.Refund) {
    const fee = Amounts.sub(
      Amounts.parseOrThrow(transaction.amountRaw),
      Amounts.parseOrThrow(transaction.amountEffective),
    ).amount
    return 
      Refund 
      {transaction.timestamp.t_ms === 'never' ? 'never': format(transaction.timestamp.t_ms, 'dd MMMM yyyy, HH:mm')}
      
      
      
      
      
      
      
      
        {transaction.info.summary}
      
      
        {transaction.info.products && transaction.info.products.length > 0 &&
          
            {transaction.info.products.map(p => 
              
                
              
              
                {p.quantity && p.quantity > 0 && 
x {p.quantity} {p.unit}}
                
{p.description}
               
            )}
          
        }
      
 
    
  }
  return 
}