diff --git a/packages/taler-wallet-cli/src/index.ts b/packages/taler-wallet-cli/src/index.ts index 254dadf93..fca6bf676 100644 --- a/packages/taler-wallet-cli/src/index.ts +++ b/packages/taler-wallet-cli/src/index.ts @@ -45,6 +45,7 @@ import { rsaBlind, LogLevel, setGlobalLogLevelFromString, + parsePaytoUri, } from "@gnu-taler/taler-util"; import { NodeHttpLib, @@ -742,6 +743,18 @@ advancedCli fs.writeFileSync(1, decodeCrock(enc.trim())); }); +advancedCli + .subcommand("genSegwit", "gen-segwit") + .requiredArgument("paytoUri", clk.STRING) + .requiredArgument("reservePub", clk.STRING) + .action(async (args) => { + const p = parsePaytoUri(args.genSegwit.paytoUri); + if (p?.isKnown && p?.targetType === "bitcoin") { + p.generateSegwitAddress(args.genSegwit.reservePub); + } + console.log(p); + }); + advancedCli .subcommand("withdrawManually", "withdraw-manually", { help: "Withdraw manually from an exchange.", diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts index 6d45599dc..66bfd6b91 100644 --- a/packages/taler-wallet-core/src/operations/withdraw.ts +++ b/packages/taler-wallet-core/src/operations/withdraw.ts @@ -1016,6 +1016,15 @@ export async function getExchangeWithdrawalInfo( instructedAmount, denoms, ); + + if (selectedDenoms.selectedDenoms.length === 0) { + throw Error( + `unable to withdraw from ${exchangeBaseUrl}, can't select denominations for instructed amount (${Amounts.stringify( + instructedAmount, + )}`, + ); + } + const exchangeWireAccounts: string[] = []; for (const account of exchangeDetails.wireInfo.accounts) { exchangeWireAccounts.push(account.payto_uri);