This commit is contained in:
Florian Dold 2019-12-25 21:47:57 +01:00
parent 539b161a3f
commit 7523dcab95
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B

View File

@ -1,6 +1,6 @@
/*
This file is part of GNU Taler
(C) Taler Systems S.A.
(C) 2019 Taler Systems S.A.
GNU Taler is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
@ -62,6 +62,11 @@ import { InternalWalletState } from "./state";
import { getTimestampNow, timestampAddDuration } from "../util/time";
import { strcmp, canonicalJson } from "../util/helpers";
/**
* Logger.
*/
const logger = new Logger("pay.ts");
/**
* Result of selecting coins, contains the exchange, and selected
* coins with their denomination.
@ -93,17 +98,39 @@ export interface PayCoinSelection {
customerDepositFees: AmountJson;
}
/**
* Structure to describe a coin that is available to be
* used in a payment.
*/
export interface AvailableCoinInfo {
/**
* Public key of the coin.
*/
coinPub: string;
/**
* Coin's denomination public key.
*/
denomPub: string;
/**
* Amount still remaining (typically the full amount,
* as coins are always refreshed after use.)
*/
availableAmount: AmountJson;
/**
* Deposit fee for the coin.
*/
feeDeposit: AmountJson;
}
const logger = new Logger("pay.ts");
/**
* Compute the total cost of a payment to the customer.
*
* This includes the amount taken by the merchant, fees (wire/deposit) contributed
* by the customer, refreshing fees, fees for withdraw-after-refresh and "trimmings"
* of coins that are too small to spend.
*/
export async function getTotalPaymentCost(
ws: InternalWalletState,
@ -147,8 +174,6 @@ export async function getTotalPaymentCost(
* constraints.
*
* This function is only exported for the sake of unit tests.
*
* @param denoms all available denoms, used to compute refresh fees
*/
export function selectPayCoins(
acis: AvailableCoinInfo[],