import { AmountJson, parsePaytoUri, Amounts, segwitMinAmount, generateFakeSegwitAddress, PaytoUri, } from "@gnu-taler/taler-util"; import { Fragment, h, VNode } from "preact"; import { BankDetailsByPaytoType } from "../components/BankDetailsByPaytoType"; import { QR } from "../components/QR"; import { ButtonDestructive, Title, WarningBox } from "../components/styled"; import { useTranslationContext } from "../context/translation"; import { amountToString } from "../utils/index"; export interface Props { reservePub: string; paytoURI: PaytoUri | undefined; payto: string; exchangeBaseUrl: string; amount: AmountJson; onCancel: () => void; } export function ReserveCreated({ reservePub, paytoURI, payto, onCancel, exchangeBaseUrl, amount, }: Props): VNode { const { i18n } = useTranslationContext(); if (!paytoURI) { return (
could not parse payto uri from exchange {payto}
); } function TransferDetails(): VNode { if (!paytoURI) return ; if (paytoURI.isKnown && paytoURI.targetType === "bitcoin") { const min = segwitMinAmount(); return (

Bitcoin exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount. Reserve pub : {reservePub}

In bitcoincore wallet use 'Add Recipient' button to add two additional recipient and copy adresses and amounts

In Electrum wallet paste the following three lines in 'Pay to' field : Make sure the amount show{" "} {Amounts.stringifyValue(Amounts.sum([amount, min, min]).amount)}{" "} BTC, else you have to change the base unit to BTC

); } return (

Make sure to use the correct subject, otherwise the money will not arrive in this wallet.

); } return (
<i18n.Translate>Exchange is ready for withdrawal</i18n.Translate>

To complete the process you need to wire{` `} {amountToString(amount)} to the exchange bank account

Alternative, you can also scan this QR code or open{" "} this link if you have a banking app installed that supports RFC 8905

); }