import React from 'react';
import { useTranslation } from 'react-i18next';
import {
Button,
Grid,
Link,
Typography,
TextField,
Tooltip,
useTheme,
Divider,
} from '@mui/material';
import { AccountBalanceWallet, ContentCopy } from '@mui/icons-material';
import { NewTabIcon } from '../Icons';
import QRCode from 'react-qr-code';
import { Order } from '../../models';
import { systemClient } from '../../services/System';
import currencyDict from '../../../static/assets/currencies.json';
import stepXofY from './stepXofY';
import { pn } from '../../utils';
interface LockInvoiceBoxProps {
order: Order;
concept: 'bond' | 'escrow';
}
export const LockInvoiceBox = ({ order, concept }: LockInvoiceBoxProps): JSX.Element => {
const { t } = useTranslation();
const theme = useTheme();
const currencyCode = currencyDict[order.currency.toString()];
const invoice = concept === 'bond' ? order.bond_invoice : order.escrow_invoice;
const amountSats = concept === 'bond' ? order.bond_satoshis : order.escrow_satoshis;
const helperText =
concept === 'bond'
? t(
'This is a hold invoice, it will freeze in your wallet. It will be charged only if you cancel or lose a dispute.',
)
: t(
'This is a hold invoice, it will freeze in your wallet. It will be released to the buyer once you confirm to have received the {{currencyCode}}.',
{ currencyCode },
);
const Title = function () {
let text = `Lock {{amountSats}} Sats to ${order.is_maker ? 'PUBLISH' : 'TAKE'} order`;
if (concept === 'escrow') {
text = 'Lock {{amountSats}} Sats as collateral';
}
return (
{t(text, {
amountSats: pn(amountSats),
})}
{` ${stepXofY(order)}`}
);
};
const CompatibleWalletsButton = function () {
return (
);
};
const depositHoursMinutes = function () {
const hours = parseInt(order.escrow_duration / 3600);
const minutes = parseInt((order.escrow_duration - hours * 3600) / 60);
const dict = { deposit_timer_hours: hours, deposit_timer_minutes: minutes };
return dict;
};
const ExpirationWarning = function () {
return (
{t(
'You risk losing your bond if you do not lock the collateral. Total time available is {{deposit_timer_hours}}h {{deposit_timer_minutes}}m.',
depositHoursMinutes(),
)}
);
};
return (
{concept === 'bond' ? : }
{
systemClient.copyToClipboard(invoice);
}}
/>
);
};
export default LockInvoiceBox;