summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-10-22 14:47:50 -0300
committerSebastian <sebasjm@gmail.com>2023-10-22 14:47:50 -0300
commit5e160a2d4d1d77c87600f28f806bc94c086267c7 (patch)
treeec8475a39d7aa4565b490e259d787b195fb98bb3
parent2005273d1286819e68d3ea7a3290f8c357be5e40 (diff)
downloadwallet-core-0.9.3-dev.34.tar.gz
wallet-core-0.9.3-dev.34.tar.bz2
wallet-core-0.9.3-dev.34.zip
update the amountString definitionv0.9.3-dev.34
-rw-r--r--packages/anastasis-core/src/policy-suggestion.test.ts6
-rw-r--r--packages/anastasis-core/src/reducer-types.ts2
-rw-r--r--packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.stories.tsx3
-rw-r--r--packages/anastasis-webui/src/pages/home/authMethod/AuthMethodQuestionSolve.stories.tsx3
-rw-r--r--packages/taler-harness/src/bench1.ts5
-rw-r--r--packages/taler-harness/src/bench2.ts9
-rw-r--r--packages/taler-harness/src/bench3.ts5
-rw-r--r--packages/taler-harness/src/harness/helpers.ts2
-rw-r--r--packages/taler-harness/src/index.ts9
-rw-r--r--packages/taler-harness/src/integrationtests/test-age-restrictions-merchant.ts13
-rw-r--r--packages/taler-harness/src/integrationtests/test-age-restrictions-mixed-merchant.ts11
-rw-r--r--packages/taler-harness/src/integrationtests/test-age-restrictions-peer.ts3
-rw-r--r--packages/taler-harness/src/integrationtests/test-deposit.ts3
-rw-r--r--packages/taler-harness/src/integrationtests/test-exchange-deposit.ts11
-rw-r--r--packages/taler-harness/src/integrationtests/test-exchange-purse.ts7
-rw-r--r--packages/taler-harness/src/integrationtests/test-forced-selection.ts20
-rw-r--r--packages/taler-harness/src/integrationtests/test-peer-repair.ts5
-rw-r--r--packages/taler-harness/src/integrationtests/test-peer-to-peer-pull.ts3
-rw-r--r--packages/taler-harness/src/integrationtests/test-peer-to-peer-push.ts7
-rw-r--r--packages/taler-harness/src/integrationtests/test-tipping.ts5
-rw-r--r--packages/taler-harness/src/integrationtests/test-wallet-dbless.ts13
-rw-r--r--packages/taler-harness/src/integrationtests/test-wallet-gendb.ts3
-rw-r--r--packages/taler-harness/src/integrationtests/test-wallettesting.ts16
-rw-r--r--packages/taler-harness/src/integrationtests/test-withdrawal-fakebank.ts4
-rw-r--r--packages/taler-harness/src/integrationtests/test-withdrawal-huge.ts3
-rw-r--r--packages/taler-harness/src/integrationtests/test-withdrawal-manual.ts3
-rw-r--r--packages/taler-util/src/amounts.test.ts29
-rw-r--r--packages/taler-util/src/amounts.ts6
-rw-r--r--packages/taler-util/src/clk.ts6
-rw-r--r--packages/taler-util/src/wallet-types.ts32
-rw-r--r--packages/taler-wallet-cli/src/index.ts23
-rw-r--r--packages/taler-wallet-core/src/operations/testing.ts4
-rw-r--r--packages/taler-wallet-core/src/operations/withdraw.test.ts12
-rw-r--r--packages/taler-wallet-core/src/util/coinSelection.test.ts22
-rw-r--r--packages/taler-wallet-core/src/util/denominations.test.ts2
-rw-r--r--packages/taler-wallet-core/src/wallet.ts11
-rw-r--r--packages/taler-wallet-webextension/src/components/Amount.stories.tsx5
-rw-r--r--packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx8
-rw-r--r--packages/taler-wallet-webextension/src/cta/Deposit/test.ts14
-rw-r--r--packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts4
-rw-r--r--packages/taler-wallet-webextension/src/cta/Payment/stories.tsx129
-rw-r--r--packages/taler-wallet-webextension/src/cta/Payment/test.ts43
-rw-r--r--packages/taler-wallet-webextension/src/cta/Reward/test.ts18
-rw-r--r--packages/taler-wallet-webextension/src/cta/TransferCreate/index.ts4
-rw-r--r--packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts3
-rw-r--r--packages/taler-wallet-webextension/src/cta/Withdraw/test.ts17
-rw-r--r--packages/taler-wallet-webextension/src/popup/Balance.stories.tsx86
-rw-r--r--packages/taler-wallet-webextension/src/wallet/AddBackupProvider/stories.tsx5
-rw-r--r--packages/taler-wallet-webextension/src/wallet/Application.tsx7
-rw-r--r--packages/taler-wallet-webextension/src/wallet/Backup.stories.tsx23
-rw-r--r--packages/taler-wallet-webextension/src/wallet/DepositPage/test.ts39
-rw-r--r--packages/taler-wallet-webextension/src/wallet/History.stories.tsx147
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ProviderDetail.stories.tsx23
-rw-r--r--packages/taler-wallet-webextension/src/wallet/Transaction.stories.tsx57
-rw-r--r--packages/taler-wallet-webextension/src/wallet/Transaction.tsx3
55 files changed, 497 insertions, 459 deletions
diff --git a/packages/anastasis-core/src/policy-suggestion.test.ts b/packages/anastasis-core/src/policy-suggestion.test.ts
index 6370825da..fd42b708f 100644
--- a/packages/anastasis-core/src/policy-suggestion.test.ts
+++ b/packages/anastasis-core/src/policy-suggestion.test.ts
@@ -1,4 +1,4 @@
-import { j2s } from "@gnu-taler/taler-util";
+import { AmountString, j2s } from "@gnu-taler/taler-util";
import test from "ava";
import { ProviderInfo, suggestPolicies } from "./policy-suggestion.js";
@@ -23,13 +23,13 @@ test("policy suggestion", async (t) => {
const providers: ProviderInfo[] = [
{
methodCost: {
- sms: "KUDOS:1",
+ sms: "KUDOS:1" as AmountString,
},
url: "prov1",
},
{
methodCost: {
- question: "KUDOS:1",
+ question: "KUDOS:1" as AmountString,
},
url: "prov2",
},
diff --git a/packages/anastasis-core/src/reducer-types.ts b/packages/anastasis-core/src/reducer-types.ts
index 4b87d3ae6..ad88f40ed 100644
--- a/packages/anastasis-core/src/reducer-types.ts
+++ b/packages/anastasis-core/src/reducer-types.ts
@@ -295,7 +295,7 @@ export enum RecoveryStates {
export interface MethodSpec {
type: string;
- usage_fee: string;
+ usage_fee: AmountString;
}
export type AuthenticationProviderStatusNotContacted = {
diff --git a/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.stories.tsx b/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.stories.tsx
index 1d35c0e91..84df615f3 100644
--- a/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.stories.tsx
+++ b/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.stories.tsx
@@ -27,6 +27,7 @@ import {
import { reducerStatesExample } from "../../utils/index.js";
import { ChallengeOverviewScreen as TestedComponent } from "./ChallengeOverviewScreen.js";
import * as tests from "@gnu-taler/web-util/testing";
+import { AmountString } from "@gnu-taler/taler-util";
export default {
title: "Challenge overview",
@@ -256,7 +257,7 @@ export const OnePolicyWithAllTheChallengesInDifferentState =
"uuid-8": { state: ChallengeFeedbackStatus.RateLimitExceeded.toString() },
"uuid-9": {
state: ChallengeFeedbackStatus.IbanInstructions.toString(),
- challenge_amount: "EUR:1",
+ challenge_amount: "EUR:1" as AmountString,
target_iban: "DE12345789000",
target_business_name: "Data Loss Incorporated",
wire_transfer_subject: "Anastasis 987654321",
diff --git a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodQuestionSolve.stories.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodQuestionSolve.stories.tsx
index fe2cfbebb..dbb17ddab 100644
--- a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodQuestionSolve.stories.tsx
+++ b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodQuestionSolve.stories.tsx
@@ -26,6 +26,7 @@ import {
import { reducerStatesExample } from "../../../utils/index.js";
import { authMethods as TestedComponent, KnownAuthMethods } from "./index.js";
import * as tests from "@gnu-taler/web-util/testing";
+import { AmountString } from "@gnu-taler/taler-util";
export default {
title: "Auth method: Question solve",
@@ -212,7 +213,7 @@ export const IbanInstructionsFeedback = tests.createExample(
challenge_feedback: {
"ASDASDSAD!1": {
state: ChallengeFeedbackStatus.IbanInstructions,
- challenge_amount: "EUR:1",
+ challenge_amount: "EUR:1" as AmountString,
target_iban: "DE12345789000",
target_business_name: "Data Loss Incorporated",
wire_transfer_subject: "Anastasis 987654321",
diff --git a/packages/taler-harness/src/bench1.ts b/packages/taler-harness/src/bench1.ts
index efe162320..b78fadf0b 100644
--- a/packages/taler-harness/src/bench1.ts
+++ b/packages/taler-harness/src/bench1.ts
@@ -18,6 +18,7 @@
* Imports.
*/
import {
+ AmountString,
buildCodecForObject,
codecForBoolean,
codecForNumber,
@@ -97,7 +98,7 @@ export async function runBench1(configJson: any): Promise<void> {
let start = Date.now();
await wallet.client.call(WalletApiOperation.WithdrawTestBalance, {
- amount: b1conf.currency + ":" + withdrawAmount,
+ amount: b1conf.currency + ":" + withdrawAmount as AmountString,
corebankApiBaseUrl: b1conf.bank,
exchangeBaseUrl: b1conf.exchange,
});
@@ -116,7 +117,7 @@ export async function runBench1(configJson: any): Promise<void> {
start = Date.now();
await wallet.client.call(WalletApiOperation.CreateDepositGroup, {
- amount: b1conf.currency + ":10",
+ amount: b1conf.currency + ":10" as AmountString,
depositPaytoUri: b1conf.payto,
});
diff --git a/packages/taler-harness/src/bench2.ts b/packages/taler-harness/src/bench2.ts
index 53db6f6c1..87bc2ff7f 100644
--- a/packages/taler-harness/src/bench2.ts
+++ b/packages/taler-harness/src/bench2.ts
@@ -18,6 +18,7 @@
* Imports.
*/
import {
+ AmountString,
buildCodecForObject,
codecForNumber,
codecForString,
@@ -85,7 +86,7 @@ export async function runBench2(configJson: any): Promise<void> {
console.log("reserve found");
- const d1 = findDenomOrThrow(exchangeInfo, `${curr}:8`, {
+ const d1 = findDenomOrThrow(exchangeInfo, `${curr}:8` as AmountString, {
denomselAllowLate: Wallet.defaultConfig.testing.denomselAllowLate,
});
@@ -105,7 +106,7 @@ export async function runBench2(configJson: any): Promise<void> {
console.log("depositing coin");
await depositCoin({
- amount: `${curr}:4`,
+ amount: `${curr}:4` as AmountString,
coin: coin,
cryptoApi,
exchangeBaseUrl: benchConf.exchange,
@@ -114,10 +115,10 @@ export async function runBench2(configJson: any): Promise<void> {
});
const refreshDenoms = [
- findDenomOrThrow(exchangeInfo, `${curr}:1`, {
+ findDenomOrThrow(exchangeInfo, `${curr}:1` as AmountString, {
denomselAllowLate: Wallet.defaultConfig.testing.denomselAllowLate,
}),
- findDenomOrThrow(exchangeInfo, `${curr}:1`, {
+ findDenomOrThrow(exchangeInfo, `${curr}:1` as AmountString, {
denomselAllowLate: Wallet.defaultConfig.testing.denomselAllowLate,
}),
];
diff --git a/packages/taler-harness/src/bench3.ts b/packages/taler-harness/src/bench3.ts
index bc345aa9e..c810f6804 100644
--- a/packages/taler-harness/src/bench3.ts
+++ b/packages/taler-harness/src/bench3.ts
@@ -18,6 +18,7 @@
* Imports.
*/
import {
+ AmountString,
buildCodecForObject,
codecForNumber,
codecForString,
@@ -108,7 +109,7 @@ export async function runBench3(configJson: any): Promise<void> {
let start = Date.now();
await wallet.client.call(WalletApiOperation.WithdrawTestBalance, {
- amount: b3conf.currency + ":" + withdrawAmount,
+ amount: b3conf.currency + ":" + withdrawAmount as AmountString,
corebankApiBaseUrl: b3conf.bank,
exchangeBaseUrl: b3conf.exchange,
});
@@ -129,7 +130,7 @@ export async function runBench3(configJson: any): Promise<void> {
let payto = b3conf.paytoTemplate.replace("${id}", merchID.toString());
await wallet.client.call(WalletApiOperation.CreateDepositGroup, {
- amount: b3conf.currency + ":10",
+ amount: b3conf.currency + ":10" as AmountString,
depositPaytoUri: payto,
});
diff --git a/packages/taler-harness/src/harness/helpers.ts b/packages/taler-harness/src/harness/helpers.ts
index 8c1612457..adf43f6d0 100644
--- a/packages/taler-harness/src/harness/helpers.ts
+++ b/packages/taler-harness/src/harness/helpers.ts
@@ -554,7 +554,7 @@ export async function withdrawViaBankV2(
walletClient: WalletClient;
bank: BankService;
exchange: ExchangeServiceInterface;
- amount: AmountString;
+ amount: AmountString | string;
restrictAge?: number;
},
): Promise<WithdrawViaBankResult> {
diff --git a/packages/taler-harness/src/index.ts b/packages/taler-harness/src/index.ts
index 076f71355..09b953a22 100644
--- a/packages/taler-harness/src/index.ts
+++ b/packages/taler-harness/src/index.ts
@@ -33,6 +33,7 @@ import {
MerchantInstanceConfig,
Duration,
generateIban,
+ AmountString,
} from "@gnu-taler/taler-util";
import { clk } from "@gnu-taler/taler-util/clk";
import {
@@ -225,7 +226,7 @@ deploymentCli
.requiredOption("bankAccount", ["--bank-account"], clk.STRING)
.requiredOption("bankPassword", ["--bank-password"], clk.STRING)
.requiredOption("wireMethod", ["--wire-method"], clk.STRING)
- .requiredOption("amount", ["--amount"], clk.STRING)
+ .requiredOption("amount", ["--amount"], clk.AMOUNT)
.action(async (args) => {
const amount = args.tipTopup.amount;
@@ -323,7 +324,7 @@ deploymentCli
const exchangeBaseUrl = "https://exchange.demo.taler.net/";
const exchangeInfo = await downloadExchangeInfo(exchangeBaseUrl, http);
await topupReserveWithDemobank({
- amount: "KUDOS:10",
+ amount: "KUDOS:10" as AmountString,
corebankApiBaseUrl: "https://bank.demo.taler.net/",
exchangeInfo,
http,
@@ -351,7 +352,7 @@ deploymentCli
const exchangeBaseUrl = "https://exchange.test.taler.net/";
const exchangeInfo = await downloadExchangeInfo(exchangeBaseUrl, http);
await topupReserveWithDemobank({
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
corebankApiBaseUrl: "https://bank.test.taler.net/",
exchangeInfo,
http,
@@ -380,7 +381,7 @@ deploymentCli
const exchangeBaseUrl = "http://localhost:8081/";
const exchangeInfo = await downloadExchangeInfo(exchangeBaseUrl, http);
await topupReserveWithDemobank({
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
corebankApiBaseUrl: "http://localhost:8082/taler-bank-access/",
exchangeInfo,
http,
diff --git a/packages/taler-harness/src/integrationtests/test-age-restrictions-merchant.ts b/packages/taler-harness/src/integrationtests/test-age-restrictions-merchant.ts
index 5653e22e2..bd4318498 100644
--- a/packages/taler-harness/src/integrationtests/test-age-restrictions-merchant.ts
+++ b/packages/taler-harness/src/integrationtests/test-age-restrictions-merchant.ts
@@ -30,6 +30,7 @@ import {
TalerCorebankApiClient,
MerchantApiClient,
WireGatewayApiClient,
+ AmountString,
} from "@gnu-taler/taler-util";
/**
@@ -78,7 +79,7 @@ export async function runAgeRestrictionsMerchantTest(t: GlobalTestState) {
walletClient: walletClientZero,
bank,
exchange,
- amount: "TESTKUDOS:20",
+ amount: "TESTKUDOS:20" as AmountString,
restrictAge: 13,
});
await wres.withdrawalFinishedCond;
@@ -108,7 +109,7 @@ export async function runAgeRestrictionsMerchantTest(t: GlobalTestState) {
walletClient,
bank,
exchange,
- amount: "TESTKUDOS:20",
+ amount: "TESTKUDOS:20" as AmountString,
restrictAge: 13,
});
await wres.withdrawalFinishedCond;
@@ -134,7 +135,7 @@ export async function runAgeRestrictionsMerchantTest(t: GlobalTestState) {
walletClient,
bank,
exchange,
- amount: "TESTKUDOS:20",
+ amount: "TESTKUDOS:20" as AmountString,
restrictAge: 13,
});
await wres.withdrawalFinishedCond;
@@ -159,7 +160,7 @@ export async function runAgeRestrictionsMerchantTest(t: GlobalTestState) {
walletClient,
bank,
exchange,
- amount: "TESTKUDOS:20",
+ amount: "TESTKUDOS:20" as AmountString,
});
await wres.withdrawalFinishedCond;
@@ -183,7 +184,7 @@ export async function runAgeRestrictionsMerchantTest(t: GlobalTestState) {
const mbu = await bankClient.createRandomBankUser();
const tipReserveResp = await merchantClient.createTippingReserve({
exchange_url: exchange.baseUrl,
- initial_balance: "TESTKUDOS:10",
+ initial_balance: "TESTKUDOS:10" as AmountString,
wire_method: getWireMethodForTest(),
});
@@ -211,7 +212,7 @@ export async function runAgeRestrictionsMerchantTest(t: GlobalTestState) {
await exchange.runWirewatchOnce();
const tip = await merchantClient.giveTip({
- amount: "TESTKUDOS:5",
+ amount: "TESTKUDOS:5" as AmountString,
justification: "why not?",
next_url: "https://example.com/after-tip",
});
diff --git a/packages/taler-harness/src/integrationtests/test-age-restrictions-mixed-merchant.ts b/packages/taler-harness/src/integrationtests/test-age-restrictions-mixed-merchant.ts
index af90ef1c5..244de1972 100644
--- a/packages/taler-harness/src/integrationtests/test-age-restrictions-mixed-merchant.ts
+++ b/packages/taler-harness/src/integrationtests/test-age-restrictions-mixed-merchant.ts
@@ -26,6 +26,7 @@ import {
makeTestPaymentV2,
withdrawViaBankV2,
} from "../harness/helpers.js";
+import { AmountString } from "@gnu-taler/taler-util";
/**
* Run test for basic, bank-integrated withdrawal and payment.
@@ -62,7 +63,7 @@ export async function runAgeRestrictionsMixedMerchantTest(t: GlobalTestState) {
walletClient,
bank,
exchange,
- amount: "TESTKUDOS:20",
+ amount: "TESTKUDOS:20" as AmountString,
restrictAge: 13,
});
@@ -70,7 +71,7 @@ export async function runAgeRestrictionsMixedMerchantTest(t: GlobalTestState) {
const order = {
summary: "Buy me!",
- amount: "TESTKUDOS:5",
+ amount: "TESTKUDOS:5" as AmountString,
fulfillment_url: "taler://fulfillment-success/thx",
minimum_age: 9,
};
@@ -87,7 +88,7 @@ export async function runAgeRestrictionsMixedMerchantTest(t: GlobalTestState) {
walletClient: walletTwo,
bank,
exchange,
- amount: "TESTKUDOS:20",
+ amount: "TESTKUDOS:20" as AmountString,
restrictAge: 13,
});
@@ -96,7 +97,7 @@ export async function runAgeRestrictionsMixedMerchantTest(t: GlobalTestState) {
const order = {
summary: "Buy me!",
- amount: "TESTKUDOS:5",
+ amount: "TESTKUDOS:5" as AmountString,
fulfillment_url: "taler://fulfillment-success/thx",
};
@@ -109,7 +110,7 @@ export async function runAgeRestrictionsMixedMerchantTest(t: GlobalTestState) {
walletClient: walletThree,
bank,
exchange,
- amount: "TESTKUDOS:20",
+ amount: "TESTKUDOS:20" as AmountString,
});
diff --git a/packages/taler-harness/src/integrationtests/test-age-restrictions-peer.ts b/packages/taler-harness/src/integrationtests/test-age-restrictions-peer.ts
index 45a4391cb..7506d48b3 100644
--- a/packages/taler-harness/src/integrationtests/test-age-restrictions-peer.ts
+++ b/packages/taler-harness/src/integrationtests/test-age-restrictions-peer.ts
@@ -19,6 +19,7 @@
*/
import {
AbsoluteTime,
+ AmountString,
Duration,
NotificationType,
TransactionMajorState,
@@ -82,7 +83,7 @@ export async function runAgeRestrictionsPeerTest(t: GlobalTestState) {
{
partialContractTerms: {
summary: "Hello, World",
- amount: "TESTKUDOS:1",
+ amount: "TESTKUDOS:1" as AmountString,
purse_expiration,
},
},
diff --git a/packages/taler-harness/src/integrationtests/test-deposit.ts b/packages/taler-harness/src/integrationtests/test-deposit.ts
index d4bfa3da5..1f50377f2 100644
--- a/packages/taler-harness/src/integrationtests/test-deposit.ts
+++ b/packages/taler-harness/src/integrationtests/test-deposit.ts
@@ -18,6 +18,7 @@
* Imports.
*/
import {
+ AmountString,
NotificationType,
TransactionMajorState,
TransactionMinorState,
@@ -74,7 +75,7 @@ export async function runDepositTest(t: GlobalTestState) {
const depositGroupResult = await walletClient.client.call(
WalletApiOperation.CreateDepositGroup,
{
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
depositPaytoUri: generateRandomPayto("foo"),
transactionId: depositTxId,
},
diff --git a/packages/taler-harness/src/integrationtests/test-exchange-deposit.ts b/packages/taler-harness/src/integrationtests/test-exchange-deposit.ts
index 8ad7daa63..8e1726aba 100644
--- a/packages/taler-harness/src/integrationtests/test-exchange-deposit.ts
+++ b/packages/taler-harness/src/integrationtests/test-exchange-deposit.ts
@@ -18,6 +18,7 @@
* Imports.
*/
import {
+ AmountString,
encodeCrock,
getRandomBytes,
j2s,
@@ -65,7 +66,7 @@ export async function runExchangeDepositTest(t: GlobalTestState) {
await topupReserveWithDemobank({
http,
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
corebankApiBaseUrl: bank.corebankApiBaseUrl,
exchangeInfo,
reservePub: reserveKeyPair.pub,
@@ -75,7 +76,7 @@ export async function runExchangeDepositTest(t: GlobalTestState) {
await checkReserve(http, exchange.baseUrl, reserveKeyPair.pub);
- const d1 = findDenomOrThrow(exchangeInfo, "TESTKUDOS:8", {
+ const d1 = findDenomOrThrow(exchangeInfo, "TESTKUDOS:8" as AmountString, {
denomselAllowLate: Wallet.defaultConfig.testing.denomselAllowLate,
});
@@ -98,7 +99,7 @@ export async function runExchangeDepositTest(t: GlobalTestState) {
contractTermsHash,
merchantPub,
wireSalt,
- amount: "TESTKUDOS:4",
+ amount: "TESTKUDOS:4" as AmountString,
coin: coin,
cryptoApi,
exchangeBaseUrl: exchange.baseUrl,
@@ -110,7 +111,7 @@ export async function runExchangeDepositTest(t: GlobalTestState) {
contractTermsHash,
merchantPub,
wireSalt,
- amount: "TESTKUDOS:4",
+ amount: "TESTKUDOS:4" as AmountString,
coin: coin,
cryptoApi,
exchangeBaseUrl: exchange.baseUrl,
@@ -123,7 +124,7 @@ export async function runExchangeDepositTest(t: GlobalTestState) {
contractTermsHash,
merchantPub,
wireSalt,
- amount: "TESTKUDOS:3.5",
+ amount: "TESTKUDOS:3.5" as AmountString,
coin: coin,
cryptoApi,
exchangeBaseUrl: exchange.baseUrl,
diff --git a/packages/taler-harness/src/integrationtests/test-exchange-purse.ts b/packages/taler-harness/src/integrationtests/test-exchange-purse.ts
index 33a09ed16..c3815e1de 100644
--- a/packages/taler-harness/src/integrationtests/test-exchange-purse.ts
+++ b/packages/taler-harness/src/integrationtests/test-exchange-purse.ts
@@ -19,6 +19,7 @@
*/
import {
AbsoluteTime,
+ AmountString,
ContractTermsUtil,
decodeCrock,
Duration,
@@ -76,7 +77,7 @@ export async function runExchangePurseTest(t: GlobalTestState) {
});
await topupReserveWithDemobank({
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
http,
reservePub: reserveKeyPair.pub,
corebankApiBaseUrl: bank.corebankApiBaseUrl,
@@ -91,7 +92,7 @@ export async function runExchangePurseTest(t: GlobalTestState) {
await checkReserve(http, exchange.baseUrl, reserveKeyPair.pub);
- const d1 = findDenomOrThrow(exchangeInfo, "TESTKUDOS:8", {
+ const d1 = findDenomOrThrow(exchangeInfo, "TESTKUDOS:8" as AmountString, {
denomselAllowLate: Wallet.defaultConfig.testing.denomselAllowLate,
});
@@ -106,7 +107,7 @@ export async function runExchangePurseTest(t: GlobalTestState) {
exchangeBaseUrl: exchange.baseUrl,
});
- const amount = "TESTKUDOS:5";
+ const amount = "TESTKUDOS:5" as AmountString;
const purseFee = "TESTKUDOS:0";
const mergeTimestamp = TalerPreciseTimestamp.now();
diff --git a/packages/taler-harness/src/integrationtests/test-forced-selection.ts b/packages/taler-harness/src/integrationtests/test-forced-selection.ts
index 917ad2025..752810703 100644
--- a/packages/taler-harness/src/integrationtests/test-forced-selection.ts
+++ b/packages/taler-harness/src/integrationtests/test-forced-selection.ts
@@ -17,7 +17,7 @@
/**
* Imports.
*/
-import { j2s } from "@gnu-taler/taler-util";
+import { AmountString, j2s } from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { GlobalTestState } from "../harness/harness.js";
import { createSimpleTestkudosEnvironmentV2 } from "../harness/helpers.js";
@@ -37,12 +37,12 @@ export async function runForcedSelectionTest(t: GlobalTestState) {
await walletClient.call(WalletApiOperation.WithdrawTestBalance, {
exchangeBaseUrl: exchange.baseUrl,
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
corebankApiBaseUrl: bank.corebankApiBaseUrl,
forcedDenomSel: {
denoms: [
{
- value: "TESTKUDOS:2",
+ value: "TESTKUDOS:2" as AmountString,
count: 3,
},
],
@@ -56,22 +56,22 @@ export async function runForcedSelectionTest(t: GlobalTestState) {
t.assertDeepEqual(coinDump.coins.length, 3);
const payResp = await walletClient.call(WalletApiOperation.TestPay, {
- amount: "TESTKUDOS:3",
+ amount: "TESTKUDOS:3" as AmountString,
merchantBaseUrl: merchant.makeInstanceBaseUrl(),
summary: "bla",
forcedCoinSel: {
coins: [
{
- value: "TESTKUDOS:2",
- contribution: "TESTKUDOS:1",
+ value: "TESTKUDOS:2" as AmountString,
+ contribution: "TESTKUDOS:1" as AmountString,
},
{
- value: "TESTKUDOS:2",
- contribution: "TESTKUDOS:1",
+ value: "TESTKUDOS:2" as AmountString,
+ contribution: "TESTKUDOS:1" as AmountString,
},
{
- value: "TESTKUDOS:2",
- contribution: "TESTKUDOS:1",
+ value: "TESTKUDOS:2" as AmountString,
+ contribution: "TESTKUDOS:1" as AmountString,
},
],
},
diff --git a/packages/taler-harness/src/integrationtests/test-peer-repair.ts b/packages/taler-harness/src/integrationtests/test-peer-repair.ts
index d457ce1e5..977316174 100644
--- a/packages/taler-harness/src/integrationtests/test-peer-repair.ts
+++ b/packages/taler-harness/src/integrationtests/test-peer-repair.ts
@@ -19,6 +19,7 @@
*/
import {
AbsoluteTime,
+ AmountString,
Duration,
NotificationType,
TransactionMajorState,
@@ -92,7 +93,7 @@ export async function runPeerRepairTest(t: GlobalTestState) {
exchangeBaseUrl: exchange.baseUrl,
partialContractTerms: {
summary: "Hello World",
- amount: "TESTKUDOS:3",
+ amount: "TESTKUDOS:3" as AmountString,
purse_expiration,
},
},
@@ -160,7 +161,7 @@ export async function runPeerRepairTest(t: GlobalTestState) {
exchangeBaseUrl: exchange.baseUrl,
partialContractTerms: {
summary: "Hello World",
- amount: "TESTKUDOS:3",
+ amount: "TESTKUDOS:3" as AmountString,
purse_expiration,
},
},
diff --git a/packages/taler-harness/src/integrationtests/test-peer-to-peer-pull.ts b/packages/taler-harness/src/integrationtests/test-peer-to-peer-pull.ts
index 6d9f44fb5..7ed716bc1 100644
--- a/packages/taler-harness/src/integrationtests/test-peer-to-peer-pull.ts
+++ b/packages/taler-harness/src/integrationtests/test-peer-to-peer-pull.ts
@@ -19,6 +19,7 @@
*/
import {
AbsoluteTime,
+ AmountString,
Duration,
j2s,
NotificationType,
@@ -86,7 +87,7 @@ export async function runPeerToPeerPullTest(t: GlobalTestState) {
exchangeBaseUrl: exchange.baseUrl,
partialContractTerms: {
summary: "Hello World",
- amount: "TESTKUDOS:5",
+ amount: "TESTKUDOS:5" as AmountString,
purse_expiration: purseExpiration,
},
},
diff --git a/packages/taler-harness/src/integrationtests/test-peer-to-peer-push.ts b/packages/taler-harness/src/integrationtests/test-peer-to-peer-push.ts
index 018fa2020..44c7bf399 100644
--- a/packages/taler-harness/src/integrationtests/test-peer-to-peer-push.ts
+++ b/packages/taler-harness/src/integrationtests/test-peer-to-peer-push.ts
@@ -19,6 +19,7 @@
*/
import {
AbsoluteTime,
+ AmountString,
Duration,
NotificationType,
TransactionMajorState,
@@ -80,7 +81,7 @@ export async function runPeerToPeerPushTest(t: GlobalTestState) {
{
partialContractTerms: {
summary: "Hello World 😁😇",
- amount: "TESTKUDOS:5",
+ amount: "TESTKUDOS:5" as AmountString,
purse_expiration,
},
},
@@ -96,7 +97,7 @@ export async function runPeerToPeerPushTest(t: GlobalTestState) {
{
partialContractTerms: {
summary: "Hello World 🥺",
- amount: "TESTKUDOS:5",
+ amount: "TESTKUDOS:5" as AmountString,
purse_expiration,
},
},
@@ -148,7 +149,7 @@ export async function runPeerToPeerPushTest(t: GlobalTestState) {
await w1.walletClient.call(WalletApiOperation.InitiatePeerPushDebit, {
partialContractTerms: {
summary: "(this will fail)",
- amount: "TESTKUDOS:15",
+ amount: "TESTKUDOS:15" as AmountString,
purse_expiration,
},
});
diff --git a/packages/taler-harness/src/integrationtests/test-tipping.ts b/packages/taler-harness/src/integrationtests/test-tipping.ts
index 12cdbae53..16859f98c 100644
--- a/packages/taler-harness/src/integrationtests/test-tipping.ts
+++ b/packages/taler-harness/src/integrationtests/test-tipping.ts
@@ -22,6 +22,7 @@ import {
MerchantApiClient,
TransactionMajorState,
WireGatewayApiClient,
+ AmountString,
} from "@gnu-taler/taler-util";
import {
WalletApiOperation,
@@ -47,7 +48,7 @@ export async function runTippingTest(t: GlobalTestState) {
const tipReserveResp = await merchantClient.createTippingReserve({
exchange_url: exchange.baseUrl,
- initial_balance: "TESTKUDOS:10",
+ initial_balance: "TESTKUDOS:10" as AmountString,
wire_method: getWireMethodForTest(),
});
@@ -90,7 +91,7 @@ export async function runTippingTest(t: GlobalTestState) {
);
const tip = await merchantClient.giveTip({
- amount: "TESTKUDOS:5",
+ amount: "TESTKUDOS:5" as AmountString,
justification: "why not?",
next_url: "https://example.com/after-tip",
});
diff --git a/packages/taler-harness/src/integrationtests/test-wallet-dbless.ts b/packages/taler-harness/src/integrationtests/test-wallet-dbless.ts
index 5e6539654..32534f2c8 100644
--- a/packages/taler-harness/src/integrationtests/test-wallet-dbless.ts
+++ b/packages/taler-harness/src/integrationtests/test-wallet-dbless.ts
@@ -18,6 +18,7 @@
* Imports.
*/
import {
+ AmountString,
encodeCrock,
getRandomBytes,
j2s,
@@ -69,7 +70,7 @@ export async function runWalletDblessTest(t: GlobalTestState) {
});
await topupReserveWithDemobank({
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
http,
reservePub: reserveKeyPair.pub,
corebankApiBaseUrl: bank.corebankApiBaseUrl,
@@ -84,7 +85,7 @@ export async function runWalletDblessTest(t: GlobalTestState) {
await checkReserve(http, exchange.baseUrl, reserveKeyPair.pub);
- const d1 = findDenomOrThrow(exchangeInfo, "TESTKUDOS:8", {
+ const d1 = findDenomOrThrow(exchangeInfo, "TESTKUDOS:8" as AmountString, {
denomselAllowLate: Wallet.defaultConfig.testing.denomselAllowLate,
});
@@ -107,7 +108,7 @@ export async function runWalletDblessTest(t: GlobalTestState) {
contractTermsHash,
merchantPub,
wireSalt,
- amount: "TESTKUDOS:4",
+ amount: "TESTKUDOS:4" as AmountString,
coin: coin,
cryptoApi,
exchangeBaseUrl: exchange.baseUrl,
@@ -119,7 +120,7 @@ export async function runWalletDblessTest(t: GlobalTestState) {
contractTermsHash,
merchantPub,
wireSalt,
- amount: "TESTKUDOS:4",
+ amount: "TESTKUDOS:4" as AmountString,
coin: coin,
cryptoApi,
exchangeBaseUrl: exchange.baseUrl,
@@ -127,10 +128,10 @@ export async function runWalletDblessTest(t: GlobalTestState) {
});
const refreshDenoms = [
- findDenomOrThrow(exchangeInfo, "TESTKUDOS:1", {
+ findDenomOrThrow(exchangeInfo, "TESTKUDOS:1" as AmountString, {
denomselAllowLate: Wallet.defaultConfig.testing.denomselAllowLate,
}),
- findDenomOrThrow(exchangeInfo, "TESTKUDOS:1", {
+ findDenomOrThrow(exchangeInfo, "TESTKUDOS:1" as AmountString, {
denomselAllowLate: Wallet.defaultConfig.testing.denomselAllowLate,
}),
];
diff --git a/packages/taler-harness/src/integrationtests/test-wallet-gendb.ts b/packages/taler-harness/src/integrationtests/test-wallet-gendb.ts
index ff6ed9959..9e3b60899 100644
--- a/packages/taler-harness/src/integrationtests/test-wallet-gendb.ts
+++ b/packages/taler-harness/src/integrationtests/test-wallet-gendb.ts
@@ -26,6 +26,7 @@ import {
} from "../harness/helpers.js";
import {
AbsoluteTime,
+ AmountString,
Duration,
NotificationType,
TransactionMajorState,
@@ -77,7 +78,7 @@ export async function runWalletGenDbTest(t: GlobalTestState) {
exchangeBaseUrl: exchange.baseUrl,
partialContractTerms: {
summary: "Hello World",
- amount: "TESTKUDOS:5",
+ amount: "TESTKUDOS:5" as AmountString,
purse_expiration: purseExpiration,
},
},
diff --git a/packages/taler-harness/src/integrationtests/test-wallettesting.ts b/packages/taler-harness/src/integrationtests/test-wallettesting.ts
index e5191aa5b..69637b875 100644
--- a/packages/taler-harness/src/integrationtests/test-wallettesting.ts
+++ b/packages/taler-harness/src/integrationtests/test-wallettesting.ts
@@ -22,7 +22,7 @@
/**
* Imports.
*/
-import { Amounts, CoinStatus } from "@gnu-taler/taler-util";
+import { AmountString, Amounts, CoinStatus } from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { CoinConfig, defaultCoinConfig } from "../harness/denomStructures.js";
import {
@@ -118,8 +118,8 @@ export async function runWallettestingTest(t: GlobalTestState) {
const { wallet, bank, exchange, merchant } = await createMyEnvironment(t);
await wallet.client.call(WalletApiOperation.RunIntegrationTest, {
- amountToSpend: "TESTKUDOS:5",
- amountToWithdraw: "TESTKUDOS:10",
+ amountToSpend: "TESTKUDOS:5" as AmountString,
+ amountToWithdraw: "TESTKUDOS:10" as AmountString,
corebankApiBaseUrl: bank.corebankApiBaseUrl,
exchangeBaseUrl: exchange.baseUrl,
merchantAuthToken: merchantAuthToken,
@@ -142,7 +142,7 @@ export async function runWallettestingTest(t: GlobalTestState) {
wallet.deleteDatabase();
await wallet.client.call(WalletApiOperation.WithdrawTestBalance, {
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
corebankApiBaseUrl: bank.corebankApiBaseUrl,
exchangeBaseUrl: exchange.baseUrl,
});
@@ -150,7 +150,7 @@ export async function runWallettestingTest(t: GlobalTestState) {
await wallet.runUntilDone();
await wallet.client.call(WalletApiOperation.TestPay, {
- amount: "TESTKUDOS:5",
+ amount: "TESTKUDOS:5" as AmountString,
merchantAuthToken: merchantAuthToken,
merchantBaseUrl: merchant.makeInstanceBaseUrl(),
summary: "foo",
@@ -167,7 +167,7 @@ export async function runWallettestingTest(t: GlobalTestState) {
wallet.deleteDatabase();
await wallet.client.call(WalletApiOperation.WithdrawTestBalance, {
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
corebankApiBaseUrl: bank.corebankApiBaseUrl,
exchangeBaseUrl: exchange.baseUrl,
});
@@ -203,7 +203,7 @@ export async function runWallettestingTest(t: GlobalTestState) {
// to pay.
await t.assertThrowsAsync(async () => {
await wallet.client.call(WalletApiOperation.TestPay, {
- amount: "TESTKUDOS:5",
+ amount: "TESTKUDOS:5" as AmountString,
merchantAuthToken: merchantAuthToken,
merchantBaseUrl: merchant.makeInstanceBaseUrl(),
summary: "foo",
@@ -218,7 +218,7 @@ export async function runWallettestingTest(t: GlobalTestState) {
});
await wallet.client.call(WalletApiOperation.TestPay, {
- amount: "TESTKUDOS:5",
+ amount: "TESTKUDOS:5" as AmountString,
merchantAuthToken: merchantAuthToken,
merchantBaseUrl: merchant.makeInstanceBaseUrl(),
summary: "foo",
diff --git a/packages/taler-harness/src/integrationtests/test-withdrawal-fakebank.ts b/packages/taler-harness/src/integrationtests/test-withdrawal-fakebank.ts
index e26d9f964..afce2f776 100644
--- a/packages/taler-harness/src/integrationtests/test-withdrawal-fakebank.ts
+++ b/packages/taler-harness/src/integrationtests/test-withdrawal-fakebank.ts
@@ -26,7 +26,7 @@ import {
} from "../harness/harness.js";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { CoinConfig, defaultCoinConfig } from "../harness/denomStructures.js";
-import { URL } from "@gnu-taler/taler-util";
+import { AmountString, URL } from "@gnu-taler/taler-util";
/**
* Run test for basic, bank-integrated withdrawal.
@@ -84,7 +84,7 @@ export async function runWithdrawalFakebankTest(t: GlobalTestState) {
await wallet.client.call(WalletApiOperation.WithdrawTestBalance, {
corebankApiBaseUrl: bank.corebankApiBaseUrl,
exchangeBaseUrl: exchange.baseUrl,
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
});
await exchange.runWirewatchOnce();
diff --git a/packages/taler-harness/src/integrationtests/test-withdrawal-huge.ts b/packages/taler-harness/src/integrationtests/test-withdrawal-huge.ts
index 893d870e5..0ad60bcdd 100644
--- a/packages/taler-harness/src/integrationtests/test-withdrawal-huge.ts
+++ b/packages/taler-harness/src/integrationtests/test-withdrawal-huge.ts
@@ -28,6 +28,7 @@ import {
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { CoinConfig, defaultCoinConfig } from "../harness/denomStructures.js";
import {
+ AmountString,
NotificationType,
TransactionMajorState,
URL,
@@ -101,7 +102,7 @@ export async function runWithdrawalHugeTest(t: GlobalTestState) {
// Results in about 1K coins withdrawn
await wallet.client.call(WalletApiOperation.WithdrawTestBalance, {
exchangeBaseUrl: exchange.baseUrl,
- amount: "TESTKUDOS:10000",
+ amount: "TESTKUDOS:10000" as AmountString,
corebankApiBaseUrl: bank.baseUrl,
});
diff --git a/packages/taler-harness/src/integrationtests/test-withdrawal-manual.ts b/packages/taler-harness/src/integrationtests/test-withdrawal-manual.ts
index fa483aa28..8ab029acc 100644
--- a/packages/taler-harness/src/integrationtests/test-withdrawal-manual.ts
+++ b/packages/taler-harness/src/integrationtests/test-withdrawal-manual.ts
@@ -23,6 +23,7 @@ import {
Logger,
WireGatewayApiClient,
j2s,
+ AmountString,
} from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { GlobalTestState } from "../harness/harness.js";
@@ -60,7 +61,7 @@ export async function runWithdrawalManualTest(t: GlobalTestState) {
WalletApiOperation.AcceptManualWithdrawal,
{
exchangeBaseUrl: exchange.baseUrl,
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
},
);
diff --git a/packages/taler-util/src/amounts.test.ts b/packages/taler-util/src/amounts.test.ts
index 644b8bdb4..e592d965c 100644
--- a/packages/taler-util/src/amounts.test.ts
+++ b/packages/taler-util/src/amounts.test.ts
@@ -17,6 +17,7 @@
import test from "ava";
import { Amounts, AmountJson, amountMaxValue } from "./amounts.js";
+import { AmountString } from "./taler-types.js";
const jAmt = (
value: number,
@@ -120,31 +121,31 @@ test("amount parsing", (t) => {
});
test("amount stringification", (t) => {
- t.is(Amounts.stringify(jAmt(0, 0, "TESTKUDOS")), "TESTKUDOS:0");
- t.is(Amounts.stringify(jAmt(4, 94000000, "TESTKUDOS")), "TESTKUDOS:4.94");
- t.is(Amounts.stringify(jAmt(0, 10000000, "TESTKUDOS")), "TESTKUDOS:0.1");
- t.is(Amounts.stringify(jAmt(0, 1, "TESTKUDOS")), "TESTKUDOS:0.00000001");
- t.is(Amounts.stringify(jAmt(5, 0, "TESTKUDOS")), "TESTKUDOS:5");
+ t.is(Amounts.stringify(jAmt(0, 0, "TESTKUDOS")), "TESTKUDOS:0" as AmountString);
+ t.is(Amounts.stringify(jAmt(4, 94000000, "TESTKUDOS")), "TESTKUDOS:4.94" as AmountString);
+ t.is(Amounts.stringify(jAmt(0, 10000000, "TESTKUDOS")), "TESTKUDOS:0.1" as AmountString);
+ t.is(Amounts.stringify(jAmt(0, 1, "TESTKUDOS")), "TESTKUDOS:0.00000001" as AmountString);
+ t.is(Amounts.stringify(jAmt(5, 0, "TESTKUDOS")), "TESTKUDOS:5" as AmountString);
// denormalized
- t.is(Amounts.stringify(jAmt(1, 100000000, "TESTKUDOS")), "TESTKUDOS:2");
+ t.is(Amounts.stringify(jAmt(1, 100000000, "TESTKUDOS")), "TESTKUDOS:2" as AmountString);
t.pass();
});
test("amount multiplication", (t) => {
- t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 0).amount), "EUR:0");
- t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 1).amount), "EUR:1.11");
- t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 2).amount), "EUR:2.22");
- t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 3).amount), "EUR:3.33");
- t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 4).amount), "EUR:4.44");
- t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 5).amount), "EUR:5.55");
+ t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 0).amount), "EUR:0" as AmountString);
+ t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 1).amount), "EUR:1.11" as AmountString);
+ t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 2).amount), "EUR:2.22" as AmountString);
+ t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 3).amount), "EUR:3.33" as AmountString);
+ t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 4).amount), "EUR:4.44" as AmountString);
+ t.is(Amounts.stringify(Amounts.mult(sAmt("EUR:1.11"), 5).amount), "EUR:5.55" as AmountString);
});
test("amount division", (t) => {
t.is(Amounts.divmod("EUR:5", "EUR:1").quotient, 5);
- t.is(Amounts.stringify(Amounts.divmod("EUR:5", "EUR:1").remainder), "EUR:0");
+ t.is(Amounts.stringify(Amounts.divmod("EUR:5", "EUR:1").remainder), "EUR:0" as AmountString);
t.is(Amounts.divmod("EUR:5", "EUR:2").quotient, 2);
- t.is(Amounts.stringify(Amounts.divmod("EUR:5", "EUR:2").remainder), "EUR:1");
+ t.is(Amounts.stringify(Amounts.divmod("EUR:5", "EUR:2").remainder), "EUR:1" as AmountString);
});
diff --git a/packages/taler-util/src/amounts.ts b/packages/taler-util/src/amounts.ts
index ee35a6bbe..082a8168e 100644
--- a/packages/taler-util/src/amounts.ts
+++ b/packages/taler-util/src/amounts.ts
@@ -74,7 +74,7 @@ export const codecForAmountJson = (): Codec<AmountJson> =>
.property("fraction", codecForNumber())
.build("AmountJson");
-export const codecForAmountString = (): Codec<AmountString> => codecForAmountString();
+export const codecForAmountString = (): Codec<AmountString> => codecForString() as Codec<AmountString>;
/**
* Result of a possibly overflowing operation.
@@ -469,11 +469,11 @@ export class Amounts {
* Convert to standard human-readable string representation that's
* also used in JSON formats.
*/
- static stringify(a: AmountLike): string {
+ static stringify(a: AmountLike): AmountString {
a = Amounts.jsonifyAmount(a);
const s = this.stringifyValue(a);
- return `${a.currency}:${s}`;
+ return `${a.currency}:${s}` as AmountString;
}
static isSameCurrency(a1: AmountLike, a2: AmountLike): boolean {
diff --git a/packages/taler-util/src/clk.ts b/packages/taler-util/src/clk.ts
index 7bcd19b04..f9f260f83 100644
--- a/packages/taler-util/src/clk.ts
+++ b/packages/taler-util/src/clk.ts
@@ -23,12 +23,14 @@ import {
readlinePrompt,
pathBasename,
} from "#compat-impl";
+import { AmountString } from "./taler-types.js";
export namespace clk {
- class Converter<T> {}
+ class Converter<T> { }
export const INT = new Converter<number>();
export const STRING: Converter<string> = new Converter<string>();
+ export const AMOUNT: Converter<AmountString> = new Converter<AmountString>();
export interface OptionArgs<T> {
help?: string;
@@ -119,7 +121,7 @@ export namespace clk {
private argKey: string,
private name: string | null,
private scArgs: SubcommandArgs,
- ) {}
+ ) { }
action(f: ActionFn<TG>): void {
if (this.myAction) {
diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts
index 11567b624..7503a4665 100644
--- a/packages/taler-util/src/wallet-types.ts
+++ b/packages/taler-util/src/wallet-types.ts
@@ -559,7 +559,7 @@ export interface CoinDumpJson {
spend_allocation:
| {
id: string;
- amount: string;
+ amount: AmountString;
}
| undefined;
/**
@@ -890,8 +890,8 @@ export interface PreparePayResultPaymentPossible {
proposalId: string;
contractTerms: MerchantContractTerms;
contractTermsHash: string;
- amountRaw: string;
- amountEffective: string;
+ amountRaw: AmountString;
+ amountEffective: AmountString;
talerUri: string;
}
@@ -903,7 +903,7 @@ export interface PreparePayResultInsufficientBalance {
*/
proposalId: string;
contractTerms: MerchantContractTerms;
- amountRaw: string;
+ amountRaw: AmountString;
talerUri: string;
balanceDetails: PayMerchantInsufficientBalanceDetails;
}
@@ -913,8 +913,8 @@ export interface PreparePayResultAlreadyConfirmed {
transactionId: TransactionIdStr;
contractTerms: MerchantContractTerms;
paid: boolean;
- amountRaw: string;
- amountEffective: string | undefined;
+ amountRaw: AmountString;
+ amountEffective: AmountString | undefined;
contractTermsHash: string;
/**
* @deprecated use transactionId
@@ -1553,7 +1553,7 @@ export interface GetExchangeTosResult {
export interface TestPayArgs {
merchantBaseUrl: string;
merchantAuthToken?: string;
- amount: string;
+ amount: AmountString;
summary: string;
forcedCoinSel?: ForcedCoinSel;
}
@@ -1562,7 +1562,7 @@ export const codecForTestPayArgs = (): Codec<TestPayArgs> =>
buildCodecForObject<TestPayArgs>()
.property("merchantBaseUrl", codecForString())
.property("merchantAuthToken", codecOptional(codecForString()))
- .property("amount", codecForString())
+ .property("amount", codecForAmountString())
.property("summary", codecForString())
.property("forcedCoinSel", codecForAny())
.build("TestPayArgs");
@@ -1572,8 +1572,8 @@ export interface IntegrationTestArgs {
corebankApiBaseUrl: string;
merchantBaseUrl: string;
merchantAuthToken?: string;
- amountToWithdraw: string;
- amountToSpend: string;
+ amountToWithdraw: AmountString;
+ amountToSpend: AmountString;
}
export const codecForIntegrationTestArgs = (): Codec<IntegrationTestArgs> =>
@@ -1647,7 +1647,7 @@ export const codecForGetExchangeTosRequest = (): Codec<GetExchangeTosRequest> =>
export interface AcceptManualWithdrawalRequest {
exchangeBaseUrl: string;
- amount: string;
+ amount: AmountString;
restrictAge?: number;
}
@@ -1655,13 +1655,13 @@ export const codecForAcceptManualWithdrawalRequet =
(): Codec<AcceptManualWithdrawalRequest> =>
buildCodecForObject<AcceptManualWithdrawalRequest>()
.property("exchangeBaseUrl", codecForString())
- .property("amount", codecForString())
+ .property("amount", codecForAmountString())
.property("restrictAge", codecOptional(codecForNumber()))
.build("AcceptManualWithdrawalRequest");
export interface GetWithdrawalDetailsForAmountRequest {
exchangeBaseUrl: string;
- amount: string;
+ amount: AmountString;
restrictAge?: number;
}
@@ -1685,7 +1685,7 @@ export const codecForGetWithdrawalDetailsForAmountRequest =
(): Codec<GetWithdrawalDetailsForAmountRequest> =>
buildCodecForObject<GetWithdrawalDetailsForAmountRequest>()
.property("exchangeBaseUrl", codecForString())
- .property("amount", codecForString())
+ .property("amount", codecForAmountString())
.property("restrictAge", codecOptional(codecForNumber()))
.build("GetWithdrawalDetailsForAmountRequest");
@@ -1873,7 +1873,7 @@ export interface CoreApiResponseError {
}
export interface WithdrawTestBalanceRequest {
- amount: string;
+ amount: AmountString;
/**
* Corebank API base URL.
*/
@@ -1947,7 +1947,7 @@ export interface RecoveryLoadRequest {
export const codecForWithdrawTestBalance =
(): Codec<WithdrawTestBalanceRequest> =>
buildCodecForObject<WithdrawTestBalanceRequest>()
- .property("amount", codecForString())
+ .property("amount", codecForAmountString())
.property("exchangeBaseUrl", codecForString())
.property("forcedDenomSel", codecForAny())
.property("corebankApiBaseUrl", codecForString())
diff --git a/packages/taler-wallet-cli/src/index.ts b/packages/taler-wallet-cli/src/index.ts
index f3b205211..ee6b93381 100644
--- a/packages/taler-wallet-cli/src/index.ts
+++ b/packages/taler-wallet-cli/src/index.ts
@@ -21,6 +21,7 @@ import {
AbsoluteTime,
addPaytoQueryParams,
AgeRestriction,
+ AmountString,
codecForList,
codecForString,
CoreApiResponse,
@@ -592,7 +593,7 @@ withdrawCli
withdrawCli
.subcommand("withdrawCheckAmount", "check-amount")
.requiredArgument("exchange", clk.STRING)
- .requiredArgument("amount", clk.STRING)
+ .requiredArgument("amount", clk.AMOUNT)
.maybeOption("restrictAge", ["--restrict-age"], clk.INT)
.action(async (args) => {
const restrictAge = args.withdrawCheckAmount.restrictAge;
@@ -728,7 +729,7 @@ withdrawCli
.requiredOption("exchange", ["--exchange"], clk.STRING, {
help: "Base URL of the exchange.",
})
- .requiredOption("amount", ["--amount"], clk.STRING, {
+ .requiredOption("amount", ["--amount"], clk.AMOUNT, {
help: "Amount to withdraw",
})
.maybeOption("restrictAge", ["--restrict-age"], clk.INT)
@@ -960,7 +961,7 @@ const depositCli = walletCli.subcommand("depositArgs", "deposit", {
depositCli
.subcommand("createDepositArgs", "create")
- .requiredArgument("amount", clk.STRING)
+ .requiredArgument("amount", clk.AMOUNT)
.requiredArgument("targetPayto", clk.STRING)
.action(async (args) => {
await withLocalWallet(args, async (wallet) => {
@@ -984,7 +985,7 @@ peerCli
.subcommand("checkPayPush", "check-push-debit", {
help: "Check fees for starting a peer-push debit transaction.",
})
- .requiredArgument("amount", clk.STRING, {
+ .requiredArgument("amount", clk.AMOUNT, {
help: "Amount to pay",
})
.action(async (args) => {
@@ -1003,7 +1004,7 @@ peerCli
.subcommand("checkPayPull", "check-pull-credit", {
help: "Check fees for a starting peer-pull credit transaction.",
})
- .requiredArgument("amount", clk.STRING, {
+ .requiredArgument("amount", clk.AMOUNT, {
help: "Amount to request",
})
.action(async (args) => {
@@ -1067,7 +1068,7 @@ peerCli
.subcommand("initiatePayPull", "initiate-pull-credit", {
help: "Initiate a peer-pull payment.",
})
- .requiredArgument("amount", clk.STRING, {
+ .requiredArgument("amount", clk.AMOUNT, {
help: "Amount to request",
})
.maybeOption("summary", ["--summary"], clk.STRING, {
@@ -1125,7 +1126,7 @@ peerCli
.subcommand("payPush", "initiate-push-debit", {
help: "Initiate a peer-push payment.",
})
- .requiredArgument("amount", clk.STRING, {
+ .requiredArgument("amount", clk.AMOUNT, {
help: "Amount to pay",
})
.maybeOption("summary", ["--summary"], clk.STRING, {
@@ -1239,7 +1240,7 @@ advancedCli
help: "Initialize the wallet (with DB) and exit.",
})
.action(async (args) => {
- await withWallet(args, async () => {});
+ await withWallet(args, async () => { });
});
advancedCli
@@ -1278,8 +1279,8 @@ advancedCli
const wallet = res.wallet;
await wallet.client.call(WalletApiOperation.InitWallet, {});
await wallet.client.call(WalletApiOperation.RunIntegrationTest, {
- amountToSpend: "TESTKUDOS:1",
- amountToWithdraw: "TESTKUDOS:3",
+ amountToSpend: "TESTKUDOS:1" as AmountString,
+ amountToWithdraw: "TESTKUDOS:3" as AmountString,
corebankApiBaseUrl: "http://localhost:8082/taler-bank-access/",
exchangeBaseUrl: "http://localhost:8081/",
merchantBaseUrl: "http://localhost:8083/",
@@ -1506,7 +1507,7 @@ testCli
testCli.subcommand("withdrawKudos", "withdraw-kudos").action(async (args) => {
await withWallet(args, async (wallet) => {
await wallet.client.call(WalletApiOperation.WithdrawTestBalance, {
- amount: "KUDOS:50",
+ amount: "KUDOS:50" as AmountString,
corebankApiBaseUrl:
"https://bank.demo.taler.net/",
exchangeBaseUrl: "https://exchange.demo.taler.net/",
diff --git a/packages/taler-wallet-core/src/operations/testing.ts b/packages/taler-wallet-core/src/operations/testing.ts
index f5bed13dd..3fff9ccaa 100644
--- a/packages/taler-wallet-core/src/operations/testing.ts
+++ b/packages/taler-wallet-core/src/operations/testing.ts
@@ -680,7 +680,7 @@ export async function runIntegrationTest2(
const peerPushInit = await initiatePeerPushDebit(ws, {
partialContractTerms: {
- amount: `${currency}:1`,
+ amount: `${currency}:1` as AmountString,
summary: "Payment Peer Push Test",
purse_expiration: AbsoluteTime.toProtocolTimestamp(
AbsoluteTime.addDuration(
@@ -703,7 +703,7 @@ export async function runIntegrationTest2(
const peerPullInit = await initiatePeerPullPayment(ws, {
partialContractTerms: {
- amount: `${currency}:1`,
+ amount: `${currency}:1` as AmountString,
summary: "Payment Peer Pull Test",
purse_expiration: AbsoluteTime.toProtocolTimestamp(
AbsoluteTime.addDuration(
diff --git a/packages/taler-wallet-core/src/operations/withdraw.test.ts b/packages/taler-wallet-core/src/operations/withdraw.test.ts
index cb8aa5e81..97a80ec26 100644
--- a/packages/taler-wallet-core/src/operations/withdraw.test.ts
+++ b/packages/taler-wallet-core/src/operations/withdraw.test.ts
@@ -14,7 +14,7 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { Amounts, DenomKeyType } from "@gnu-taler/taler-util";
+import { AmountString, Amounts, DenomKeyType } from "@gnu-taler/taler-util";
import test from "ava";
import {
DenominationRecord,
@@ -82,7 +82,7 @@ test("withdrawal selection bug repro", (t) => {
}),
verificationStatus: DenominationVerificationStatus.Unverified,
currency: "KUDOS",
- value: "KUDOS:1000",
+ value: "KUDOS:1000" as AmountString,
listIssueDate: timestampProtocolToDb({ t_s: 0 }),
},
{
@@ -136,7 +136,7 @@ test("withdrawal selection bug repro", (t) => {
t_s: 1585229388,
}),
verificationStatus: DenominationVerificationStatus.Unverified,
- value: "KUDOS:10",
+ value: "KUDOS:10" as AmountString,
currency: "KUDOS",
listIssueDate: timestampProtocolToDb({ t_s: 0 }),
},
@@ -190,7 +190,7 @@ test("withdrawal selection bug repro", (t) => {
t_s: 1585229388,
}),
verificationStatus: DenominationVerificationStatus.Unverified,
- value: "KUDOS:5",
+ value: "KUDOS:5" as AmountString,
currency: "KUDOS",
listIssueDate: timestampProtocolToDb({ t_s: 0 }),
},
@@ -245,7 +245,7 @@ test("withdrawal selection bug repro", (t) => {
t_s: 1585229388,
}),
verificationStatus: DenominationVerificationStatus.Unverified,
- value: "KUDOS:1",
+ value: "KUDOS:1" as AmountString,
currency: "KUDOS",
listIssueDate: timestampProtocolToDb({ t_s: 0 }),
},
@@ -357,7 +357,7 @@ test("withdrawal selection bug repro", (t) => {
t_s: 1585229388,
}),
verificationStatus: DenominationVerificationStatus.Unverified,
- value: "KUDOS:2",
+ value: "KUDOS:2" as AmountString,
currency: "KUDOS",
listIssueDate: timestampProtocolToDb({ t_s: 0 }),
},
diff --git a/packages/taler-wallet-core/src/util/coinSelection.test.ts b/packages/taler-wallet-core/src/util/coinSelection.test.ts
index 81a656f8a..69c25a2fa 100644
--- a/packages/taler-wallet-core/src/util/coinSelection.test.ts
+++ b/packages/taler-wallet-core/src/util/coinSelection.test.ts
@@ -48,9 +48,9 @@ test("p2p: should select the coin", (t) => {
const coins = testing_greedySelectPeer(
createCandidates([
{
- amount: "LOCAL:10",
+ amount: "LOCAL:10" as AmountString,
numAvailable: 5,
- depositFee: "LOCAL:0.1",
+ depositFee: "LOCAL:0.1" as AmountString,
fromExchange: "http://exchange.localhost/",
},
]),
@@ -86,9 +86,9 @@ test("p2p: should select 3 coins", (t) => {
const coins = testing_greedySelectPeer(
createCandidates([
{
- amount: "LOCAL:10",
+ amount: "LOCAL:10" as AmountString,
numAvailable: 5,
- depositFee: "LOCAL:0.1",
+ depositFee: "LOCAL:0.1" as AmountString,
fromExchange: "http://exchange.localhost/",
},
]),
@@ -126,9 +126,9 @@ test("p2p: can't select since the instructed amount is too high", (t) => {
const coins = testing_greedySelectPeer(
createCandidates([
{
- amount: "LOCAL:10",
+ amount: "LOCAL:10" as AmountString,
numAvailable: 5,
- depositFee: "LOCAL:0.1",
+ depositFee: "LOCAL:0.1" as AmountString,
fromExchange: "http://exchange.localhost/",
},
]),
@@ -176,9 +176,9 @@ test("pay: select one coin to pay with fee", (t) => {
},
createCandidates([
{
- amount: "LOCAL:10",
+ amount: "LOCAL:10" as AmountString,
numAvailable: 5,
- depositFee: "LOCAL:0.1",
+ depositFee: "LOCAL:0.1" as AmountString,
fromExchange: "http://exchange.localhost/",
},
]),
@@ -224,9 +224,9 @@ function createCandidates(
denomPubHash: `hash${idx}`,
value: r.amount,
feeDeposit: r.depositFee,
- feeRefresh: "LOCAL:0",
- feeRefund: "LOCAL:0",
- feeWithdraw: "LOCAL:0",
+ feeRefresh: "LOCAL:0" as AmountString,
+ feeRefund: "LOCAL:0" as AmountString,
+ feeWithdraw: "LOCAL:0" as AmountString,
stampExpireDeposit: inTheDistantFuture,
stampExpireLegal: inTheDistantFuture,
stampExpireWithdraw: inTheDistantFuture,
diff --git a/packages/taler-wallet-core/src/util/denominations.test.ts b/packages/taler-wallet-core/src/util/denominations.test.ts
index 25dbda081..98af5d1a4 100644
--- a/packages/taler-wallet-core/src/util/denominations.test.ts
+++ b/packages/taler-wallet-core/src/util/denominations.test.ts
@@ -39,7 +39,7 @@ import test, { ExecutionContext } from "ava";
* Create some constants to be used as reference in the tests
*/
const VALUES: AmountString[] = Array.from({ length: 10 }).map(
- (undef, t) => `USD:${t}`,
+ (undef, t) => `USD:${t}` as AmountString,
);
const TIMESTAMPS = Array.from({ length: 20 }).map((undef, t_s) => ({ t_s }));
const ABS_TIME = TIMESTAMPS.map((m) => AbsoluteTime.fromProtocolTimestamp(m));
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
index 6600aa799..fe77fecc1 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -132,6 +132,7 @@ import {
codecForListExchangesForScopedCurrencyRequest,
ListExchangesForScopedCurrencyRequest,
ExchangesShortListResponse,
+ AmountString,
} from "@gnu-taler/taler-util";
import type { HttpRequestLibrary } from "@gnu-taler/taler-util/http";
import { readSuccessResponseJsonOrThrow } from "@gnu-taler/taler-util/http";
@@ -931,9 +932,9 @@ async function dumpCoins(ws: InternalWalletState): Promise<CoinDumpJson> {
ageCommitmentProof: c.ageCommitmentProof,
spend_allocation: c.spendAllocation
? {
- amount: c.spendAllocation.amount,
- id: c.spendAllocation.id,
- }
+ amount: c.spendAllocation.amount,
+ id: c.spendAllocation.id,
+ }
: undefined,
});
}
@@ -1076,7 +1077,7 @@ async function dispatchRequestInternal<Op extends WalletApiOperation>(
}
case WalletApiOperation.WithdrawTestkudos: {
await withdrawTestBalance(ws, {
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
corebankApiBaseUrl: "https://bank.test.taler.net/",
exchangeBaseUrl: "https://exchange.test.taler.net/",
});
@@ -1278,7 +1279,7 @@ async function dispatchRequestInternal<Op extends WalletApiOperation>(
typeof url.templateParams.amount === "string"
) {
templateDetails.amount =
- req.templateParams.amount ?? url.templateParams.amount;
+ (req.templateParams.amount ?? url.templateParams.amount) as AmountString | undefined;
}
if (
url.templateParams.summary !== undefined &&
diff --git a/packages/taler-wallet-webextension/src/components/Amount.stories.tsx b/packages/taler-wallet-webextension/src/components/Amount.stories.tsx
index 095c9be24..fa28088eb 100644
--- a/packages/taler-wallet-webextension/src/components/Amount.stories.tsx
+++ b/packages/taler-wallet-webextension/src/components/Amount.stories.tsx
@@ -22,6 +22,7 @@
import { styled } from "@linaria/react";
import { Fragment, h, VNode } from "preact";
import { Amount } from "./Amount.js";
+import { AmountString } from "@gnu-taler/taler-util";
export default {
title: "amount",
@@ -39,7 +40,7 @@ const Table = styled.table`
function ProductTable(
prods: string[],
- AmountRender: (p: { value: string; index: number }) => VNode = Amount,
+ AmountRender: (p: { value: AmountString; index: number }) => VNode = Amount,
): VNode {
return (
<Table>
@@ -52,7 +53,7 @@ function ProductTable(
<tr key={i}>
<td>p{i}</td>
<td>
- <AmountRender value={value} index={i} />
+ <AmountRender value={value as AmountString} index={i} />
{/* <Amount value={value} fracSize={fracSize} /> */}
</td>
</tr>
diff --git a/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx b/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx
index 1b1802b8c..555b300c2 100644
--- a/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx
+++ b/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx
@@ -25,14 +25,14 @@ import {
LoadingView,
ShowView,
} from "./ShowFullContractTermPopup.js";
-import { WalletContractData } from "@gnu-taler/taler-util";
+import { AmountString, WalletContractData } from "@gnu-taler/taler-util";
export default {
title: "ShowFullContractTermPopup",
};
const cd: WalletContractData = {
- amount: "ARS:2",
+ amount: "ARS:2" as AmountString,
contractTermsHash:
"92X0KSJPZ8XS2XECCGFWTCGW8XMFCXTT2S6WHZDP6H9Y3TSKMTHY94WXEWDERTNN5XWCYGW4VN5CF2D4846HXTW7P06J4CZMHCWKC9G",
fulfillmentUrl: "",
@@ -42,7 +42,7 @@ const cd: WalletContractData = {
"0YA1WETV15R6K8QKS79QA3QMT16010F42Q49VSKYQ71HVQKAG0A4ZJCA4YTKHE9EA5SP156TJSKZEJJJ87305N6PS80PC48RNKYZE08",
orderId: "2022.220-0281XKKB8W7YE",
summary: "w",
- maxWireFee: "ARS:1",
+ maxWireFee: "ARS:1" as AmountString,
payDeadline: {
t_s: 1660002673,
},
@@ -62,7 +62,7 @@ const cd: WalletContractData = {
wireMethod: "x-taler-bank",
wireInfoHash:
"QDT28374ZHYJ59WQFZ3TW1D5WKJVDYHQT86VHED3TNMB15ANJSKXDYPPNX01348KDYCX6T4WXA5A8FJJ8YWNEB1JW726C1JPKHM89DR",
- maxDepositFee: "ARS:1",
+ maxDepositFee: "ARS:1" as AmountString,
merchant: {
name: "Default",
address: {
diff --git a/packages/taler-wallet-webextension/src/cta/Deposit/test.ts b/packages/taler-wallet-webextension/src/cta/Deposit/test.ts
index 144bdccf4..100929918 100644
--- a/packages/taler-wallet-webextension/src/cta/Deposit/test.ts
+++ b/packages/taler-wallet-webextension/src/cta/Deposit/test.ts
@@ -19,7 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { Amounts } from "@gnu-taler/taler-util";
+import { AmountString, Amounts } from "@gnu-taler/taler-util";
import { expect } from "chai";
import { createWalletApiMock } from "../../test-utils.js";
import { useComponentState } from "./state.js";
@@ -72,19 +72,19 @@ describe("Deposit CTA states", () => {
WalletApiOperation.PrepareDeposit,
undefined,
{
- effectiveDepositAmount: "EUR:1",
- totalDepositCost: "EUR:1.2",
+ effectiveDepositAmount: "EUR:1" as AmountString,
+ totalDepositCost: "EUR:1.2" as AmountString,
fees: {
- coin: "EUR:0",
- refresh: "EUR:0.2",
- wire: "EUR:0",
+ coin: "EUR:0" as AmountString,
+ refresh: "EUR:0.2" as AmountString,
+ wire: "EUR:0" as AmountString,
},
},
);
const props = {
talerDepositUri: "payto://refund/asdasdas",
- amountStr: "EUR:1",
+ amountStr: "EUR:1" as AmountString,
cancel: async () => {
null;
},
diff --git a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts
index b8aaed3f2..fd3fb52f8 100644
--- a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts
+++ b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts
@@ -14,7 +14,7 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { AmountJson } from "@gnu-taler/taler-util";
+import { AmountJson, AmountString } from "@gnu-taler/taler-util";
import { ErrorAlertView } from "../../components/CurrentAlerts.js";
import { Loading } from "../../components/Loading.js";
import { ErrorAlert } from "../../context/alert.js";
@@ -27,7 +27,7 @@ import { useComponentState } from "./state.js";
import { ReadyView } from "./views.js";
export interface Props {
- amount: string;
+ amount: AmountString;
onClose: () => Promise<void>;
onSuccess: (tx: string) => Promise<void>;
}
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx b/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx
index f030fa219..eee5fb684 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx
+++ b/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx
@@ -20,6 +20,7 @@
*/
import {
+ AmountString,
Amounts,
MerchantContractTerms as ContractTerms,
PreparePayResultType,
@@ -52,13 +53,13 @@ export const NoEnoughBalanceAvailable = tests.createExample(BaseView, {
transactionId: " " as TransactionIdStr,
status: PreparePayResultType.InsufficientBalance,
balanceDetails: {
- amountRequested: "USD:10",
- balanceAvailable: "USD:9",
- balanceMaterial: "USD:9",
- balanceAgeAcceptable: "USD:9",
- balanceMerchantAcceptable: "USD:9",
- balanceMerchantDepositable: "USD:9",
- feeGapEstimate: "USD:1",
+ amountRequested: "USD:10" as AmountString,
+ balanceAvailable: "USD:9" as AmountString,
+ balanceMaterial: "USD:9" as AmountString,
+ balanceAgeAcceptable: "USD:9" as AmountString,
+ balanceMerchantAcceptable: "USD:9" as AmountString,
+ balanceMerchantDepositable: "USD:9" as AmountString,
+ feeGapEstimate: "USD:1" as AmountString,
},
talerUri: "taler://pay/..",
@@ -73,7 +74,7 @@ export const NoEnoughBalanceAvailable = tests.createExample(BaseView, {
summary: "some beers",
amount: "USD:10",
} as Partial<ContractTerms> as any,
- amountRaw: "USD:10",
+ amountRaw: "USD:10" as AmountString,
},
});
@@ -92,13 +93,13 @@ export const NoEnoughBalanceMaterial = tests.createExample(BaseView, {
transactionId: " " as TransactionIdStr,
status: PreparePayResultType.InsufficientBalance,
balanceDetails: {
- amountRequested: "USD:10",
- balanceAvailable: "USD:10",
- balanceMaterial: "USD:9",
- balanceAgeAcceptable: "USD:9",
- balanceMerchantAcceptable: "USD:9",
- balanceMerchantDepositable: "USD:0",
- feeGapEstimate: "USD:1",
+ amountRequested: "USD:10" as AmountString,
+ balanceAvailable: "USD:10" as AmountString,
+ balanceMaterial: "USD:9" as AmountString,
+ balanceAgeAcceptable: "USD:9" as AmountString,
+ balanceMerchantAcceptable: "USD:9" as AmountString,
+ balanceMerchantDepositable: "USD:0" as AmountString,
+ feeGapEstimate: "USD:1" as AmountString,
},
talerUri: "taler://pay/..",
@@ -111,9 +112,9 @@ export const NoEnoughBalanceMaterial = tests.createExample(BaseView, {
email: "contact@merchant.taler",
},
summary: "some beers",
- amount: "USD:10",
+ amount: "USD:10" as AmountString,
} as Partial<ContractTerms> as any,
- amountRaw: "USD:10",
+ amountRaw: "USD:10" as AmountString,
},
});
@@ -132,13 +133,13 @@ export const NoEnoughBalanceAgeAcceptable = tests.createExample(BaseView, {
transactionId: " " as TransactionIdStr,
status: PreparePayResultType.InsufficientBalance,
balanceDetails: {
- amountRequested: "USD:10",
- balanceAvailable: "USD:10",
- balanceMaterial: "USD:10",
- balanceAgeAcceptable: "USD:9",
- balanceMerchantAcceptable: "USD:9",
- balanceMerchantDepositable: "USD:9",
- feeGapEstimate: "USD:1",
+ amountRequested: "USD:10" as AmountString,
+ balanceAvailable: "USD:10" as AmountString,
+ balanceMaterial: "USD:10" as AmountString,
+ balanceAgeAcceptable: "USD:9" as AmountString,
+ balanceMerchantAcceptable: "USD:9" as AmountString,
+ balanceMerchantDepositable: "USD:9" as AmountString,
+ feeGapEstimate: "USD:1" as AmountString,
},
talerUri: "taler://pay/..",
@@ -154,7 +155,7 @@ export const NoEnoughBalanceAgeAcceptable = tests.createExample(BaseView, {
summary: "some beers",
amount: "USD:10",
} as Partial<ContractTerms> as any,
- amountRaw: "USD:10",
+ amountRaw: "USD:10" as AmountString,
},
});
@@ -173,13 +174,13 @@ export const NoEnoughBalanceMerchantAcceptable = tests.createExample(BaseView, {
transactionId: " " as TransactionIdStr,
status: PreparePayResultType.InsufficientBalance,
balanceDetails: {
- amountRequested: "USD:10",
- balanceAvailable: "USD:10",
- balanceMaterial: "USD:10",
- balanceAgeAcceptable: "USD:10",
- balanceMerchantAcceptable: "USD:9",
- balanceMerchantDepositable: "USD:9",
- feeGapEstimate: "USD:1",
+ amountRequested: "USD:10" as AmountString,
+ balanceAvailable: "USD:10" as AmountString,
+ balanceMaterial: "USD:10" as AmountString,
+ balanceAgeAcceptable: "USD:10" as AmountString,
+ balanceMerchantAcceptable: "USD:9" as AmountString,
+ balanceMerchantDepositable: "USD:9" as AmountString,
+ feeGapEstimate: "USD:1" as AmountString,
},
talerUri: "taler://pay/..",
@@ -192,9 +193,9 @@ export const NoEnoughBalanceMerchantAcceptable = tests.createExample(BaseView, {
email: "contact@merchant.taler",
},
summary: "some beers",
- amount: "USD:10",
+ amount: "USD:10" as AmountString,
} as Partial<ContractTerms> as any,
- amountRaw: "USD:10",
+ amountRaw: "USD:10" as AmountString,
},
});
@@ -215,13 +216,13 @@ export const NoEnoughBalanceMerchantDepositable = tests.createExample(
transactionId: " " as TransactionIdStr,
status: PreparePayResultType.InsufficientBalance,
balanceDetails: {
- amountRequested: "USD:10",
- balanceAvailable: "USD:10",
- balanceMaterial: "USD:10",
- balanceAgeAcceptable: "USD:10",
- balanceMerchantAcceptable: "USD:10",
- balanceMerchantDepositable: "USD:9",
- feeGapEstimate: "USD:1",
+ amountRequested: "USD:10" as AmountString,
+ balanceAvailable: "USD:10" as AmountString,
+ balanceMaterial: "USD:10" as AmountString,
+ balanceAgeAcceptable: "USD:10" as AmountString,
+ balanceMerchantAcceptable: "USD:10" as AmountString,
+ balanceMerchantDepositable: "USD:9" as AmountString,
+ feeGapEstimate: "USD:1" as AmountString,
},
talerUri: "taler://pay/..",
@@ -234,9 +235,9 @@ export const NoEnoughBalanceMerchantDepositable = tests.createExample(
email: "contact@merchant.taler",
},
summary: "some beers",
- amount: "USD:10",
+ amount: "USD:10" as AmountString,
} as Partial<ContractTerms> as any,
- amountRaw: "USD:10",
+ amountRaw: "USD:10" as AmountString,
},
},
);
@@ -256,13 +257,13 @@ export const NoEnoughBalanceFeeGap = tests.createExample(BaseView, {
transactionId: " " as TransactionIdStr,
status: PreparePayResultType.InsufficientBalance,
balanceDetails: {
- amountRequested: "USD:10",
- balanceAvailable: "USD:10",
- balanceMaterial: "USD:10",
- balanceAgeAcceptable: "USD:10",
- balanceMerchantAcceptable: "USD:10",
- balanceMerchantDepositable: "USD:10",
- feeGapEstimate: "USD:1",
+ amountRequested: "USD:10" as AmountString,
+ balanceAvailable: "USD:10" as AmountString,
+ balanceMaterial: "USD:10" as AmountString,
+ balanceAgeAcceptable: "USD:10" as AmountString,
+ balanceMerchantAcceptable: "USD:10" as AmountString,
+ balanceMerchantDepositable: "USD:10" as AmountString,
+ feeGapEstimate: "USD:1" as AmountString,
},
talerUri: "taler://pay/..",
@@ -276,9 +277,9 @@ export const NoEnoughBalanceFeeGap = tests.createExample(BaseView, {
},
minimum_age: 18,
summary: "some beers",
- amount: "USD:10",
+ amount: "USD:10" as AmountString,
} as Partial<ContractTerms> as any,
- amountRaw: "USD:10",
+ amountRaw: "USD:10" as AmountString,
},
});
@@ -300,8 +301,8 @@ export const PaymentPossible = tests.createExample(BaseView, {
transactionId: " " as TransactionIdStr,
status: PreparePayResultType.PaymentPossible,
talerUri: "taler://pay/..",
- amountEffective: "USD:10",
- amountRaw: "USD:10",
+ amountEffective: "USD:10" as AmountString,
+ amountRaw: "USD:10" as AmountString,
contractTerms: {
nonce: "123213123",
@@ -314,7 +315,7 @@ export const PaymentPossible = tests.createExample(BaseView, {
pay_deadline: {
t_s: new Date().getTime() / 1000 + 60 * 60 * 3,
},
- amount: "USD:10",
+ amount: "USD:10" as AmountString,
summary: "some beers",
} as Partial<ContractTerms> as any,
contractTermsHash: "123456",
@@ -340,8 +341,8 @@ export const PaymentPossibleWithFee = tests.createExample(BaseView, {
transactionId: " " as TransactionIdStr,
status: PreparePayResultType.PaymentPossible,
talerUri: "taler://pay/..",
- amountEffective: "USD:10.20",
- amountRaw: "USD:10",
+ amountEffective: "USD:10.20" as AmountString,
+ amountRaw: "USD:10" as AmountString,
contractTerms: {
nonce: "123213123",
@@ -351,7 +352,7 @@ export const PaymentPossibleWithFee = tests.createExample(BaseView, {
website: "https://www.themerchant.taler",
email: "contact@merchant.taler",
},
- amount: "USD:10",
+ amount: "USD:10" as AmountString,
summary: "some beers",
} as Partial<ContractTerms> as any,
contractTermsHash: "123456",
@@ -377,8 +378,8 @@ export const TicketWithAProductList = tests.createExample(BaseView, {
transactionId: " " as TransactionIdStr,
status: PreparePayResultType.PaymentPossible,
talerUri: "taler://pay/..",
- amountEffective: "USD:10.20",
- amountRaw: "USD:10",
+ amountEffective: "USD:10.20" as AmountString,
+ amountRaw: "USD:10" as AmountString,
contractTerms: {
nonce: "123213123",
@@ -433,8 +434,8 @@ export const TicketWithShipping = tests.createExample(BaseView, {
transactionId: " " as TransactionIdStr,
status: PreparePayResultType.PaymentPossible,
talerUri: "taler://pay/..",
- amountEffective: "USD:10.20",
- amountRaw: "USD:10",
+ amountEffective: "USD:10.20" as AmountString,
+ amountRaw: "USD:10" as AmountString,
contractTerms: {
nonce: "123213123",
@@ -481,8 +482,8 @@ export const AlreadyConfirmedByOther = tests.createExample(BaseView, {
transactionId: " " as TransactionIdStr,
status: PreparePayResultType.AlreadyConfirmed,
talerUri: "taler://pay/..",
- amountEffective: "USD:10",
- amountRaw: "USD:10",
+ amountEffective: "USD:10" as AmountString,
+ amountRaw: "USD:10" as AmountString,
contractTerms: {
merchant: {
name: "the merchant",
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/test.ts b/packages/taler-wallet-webextension/src/cta/Payment/test.ts
index e2935fc4e..213382efc 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/test.ts
+++ b/packages/taler-wallet-webextension/src/cta/Payment/test.ts
@@ -20,6 +20,7 @@
*/
import {
+ AmountString,
Amounts,
ConfirmPayResult,
ConfirmPayResultType,
@@ -139,10 +140,10 @@ describe("Payment CTA states", () => {
{
balances: [
{
- available: "USD:5",
+ available: "USD:5" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "USD",
@@ -199,10 +200,10 @@ describe("Payment CTA states", () => {
{
balances: [
{
- available: "USD:15",
+ available: "USD:15" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "USD",
@@ -262,10 +263,10 @@ describe("Payment CTA states", () => {
{
balances: [
{
- available: "USD:15",
+ available: "USD:15" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "USD",
@@ -323,10 +324,10 @@ describe("Payment CTA states", () => {
{
balances: [
{
- available: "USD:15",
+ available: "USD:15" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "USD",
@@ -392,10 +393,10 @@ describe("Payment CTA states", () => {
{
balances: [
{
- available: "USD:15",
+ available: "USD:15" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "USD",
@@ -480,10 +481,10 @@ describe("Payment CTA states", () => {
{
balances: [
{
- available: "USD:10",
+ available: "USD:10" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "USD",
@@ -511,10 +512,10 @@ describe("Payment CTA states", () => {
{
balances: [
{
- available: "USD:15",
+ available: "USD:15" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "USD",
diff --git a/packages/taler-wallet-webextension/src/cta/Reward/test.ts b/packages/taler-wallet-webextension/src/cta/Reward/test.ts
index 6d7bad0c8..0e378f366 100644
--- a/packages/taler-wallet-webextension/src/cta/Reward/test.ts
+++ b/packages/taler-wallet-webextension/src/cta/Reward/test.ts
@@ -19,7 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { Amounts } from "@gnu-taler/taler-util";
+import { AmountString, Amounts } from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { expect } from "chai";
import * as tests from "@gnu-taler/web-util/testing";
@@ -66,13 +66,13 @@ describe("Tip CTA states", () => {
accepted: false,
exchangeBaseUrl: "exchange url",
merchantBaseUrl: "merchant url",
- rewardAmountEffective: "EUR:1",
+ rewardAmountEffective: "EUR:1" as AmountString,
walletRewardId: "tip_id",
transactionId: "txn:tip:ABC1234",
expirationTimestamp: {
t_s: 1,
},
- rewardAmountRaw: "",
+ rewardAmountRaw: "EUR:0" as AmountString,
});
const props: Props = {
@@ -110,13 +110,13 @@ describe("Tip CTA states", () => {
accepted: true,
exchangeBaseUrl: "exchange url",
merchantBaseUrl: "merchant url",
- rewardAmountEffective: "EUR:1",
+ rewardAmountEffective: "EUR:1" as AmountString,
walletRewardId: "tip_id",
transactionId: "txn:tip:ABC1234",
expirationTimestamp: {
t_s: 1,
},
- rewardAmountRaw: "",
+ rewardAmountRaw: "EUR:0" as AmountString,
},
);
},
@@ -140,14 +140,14 @@ describe("Tip CTA states", () => {
handler.addWalletCallResponse(WalletApiOperation.PrepareReward, undefined, {
exchangeBaseUrl: "exchange url",
merchantBaseUrl: "merchant url",
- rewardAmountEffective: "EUR:1",
+ rewardAmountEffective: "EUR:1" as AmountString,
walletRewardId: "tip_id",
transactionId: "txn:tip:ABC1234",
accepted: false,
expirationTimestamp: {
t_s: 1,
},
- rewardAmountRaw: "",
+ rewardAmountRaw: "EUR:0" as AmountString,
});
const props: Props = {
@@ -188,13 +188,13 @@ describe("Tip CTA states", () => {
accepted: true,
exchangeBaseUrl: "exchange url",
merchantBaseUrl: "merchant url",
- rewardAmountEffective: "EUR:1",
+ rewardAmountEffective: "EUR:1" as AmountString,
walletRewardId: "tip_id",
transactionId: "txn:tip:ABC1234",
expirationTimestamp: {
t_s: 1,
},
- rewardAmountRaw: "",
+ rewardAmountRaw: "EUR:0" as AmountString,
});
const props: Props = {
diff --git a/packages/taler-wallet-webextension/src/cta/TransferCreate/index.ts b/packages/taler-wallet-webextension/src/cta/TransferCreate/index.ts
index 654b03b7f..794d2ad1c 100644
--- a/packages/taler-wallet-webextension/src/cta/TransferCreate/index.ts
+++ b/packages/taler-wallet-webextension/src/cta/TransferCreate/index.ts
@@ -14,7 +14,7 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { AmountJson, TalerErrorDetail } from "@gnu-taler/taler-util";
+import { AmountJson, AmountString, TalerErrorDetail } from "@gnu-taler/taler-util";
import { ErrorAlertView } from "../../components/CurrentAlerts.js";
import { Loading } from "../../components/Loading.js";
import { ErrorAlert } from "../../context/alert.js";
@@ -24,7 +24,7 @@ import { useComponentState } from "./state.js";
import { ReadyView } from "./views.js";
export interface Props {
- amount: string;
+ amount: AmountString;
onClose: () => Promise<void>;
onSuccess: (tx: string) => Promise<void>;
}
diff --git a/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts b/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts
index 77333e15c..297e8a56b 100644
--- a/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts
@@ -15,6 +15,7 @@
*/
import {
+ AmountString,
Amounts,
TalerError,
TalerErrorCode,
@@ -141,7 +142,7 @@ export function useComponentState({
async function checkPeerPushDebitAndCheckMax(
api: WxApiType,
- amountState: string,
+ amountState: AmountString,
) {
// FIXME : https://bugs.gnunet.org/view.php?id=7872
try {
diff --git a/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts b/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts
index ab3b2e316..e5eaa3c14 100644
--- a/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts
+++ b/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts
@@ -20,6 +20,7 @@
*/
import {
+ AmountString,
Amounts,
ExchangeEntryStatus,
ExchangeListItem,
@@ -109,7 +110,7 @@ describe("Withdraw CTA states", () => {
WalletApiOperation.GetWithdrawalDetailsForUri,
undefined,
{
- amount: "EUR:2",
+ amount: "EUR:2" as AmountString,
possibleExchanges: [],
},
);
@@ -145,7 +146,7 @@ describe("Withdraw CTA states", () => {
WalletApiOperation.GetWithdrawalDetailsForUri,
undefined,
{
- amount: "ARS:2",
+ amount: "ARS:2" as AmountString,
possibleExchanges: exchanges,
defaultExchangeBaseUrl: exchanges[0].exchangeBaseUrl,
},
@@ -154,8 +155,8 @@ describe("Withdraw CTA states", () => {
WalletApiOperation.GetWithdrawalDetailsForAmount,
undefined,
{
- amountRaw: "ARS:2",
- amountEffective: "ARS:2",
+ amountRaw: "ARS:2" as AmountString,
+ amountEffective: "ARS:2" as AmountString,
paytoUris: ["payto://"],
tosAccepted: true,
ageRestrictionOptions: [],
@@ -209,7 +210,7 @@ describe("Withdraw CTA states", () => {
WalletApiOperation.GetWithdrawalDetailsForUri,
undefined,
{
- amount: "ARS:2",
+ amount: "ARS:2" as AmountString,
possibleExchanges: exchangeWithNewTos,
defaultExchangeBaseUrl: exchangeWithNewTos[0].exchangeBaseUrl,
},
@@ -218,8 +219,8 @@ describe("Withdraw CTA states", () => {
WalletApiOperation.GetWithdrawalDetailsForAmount,
undefined,
{
- amountRaw: "ARS:2",
- amountEffective: "ARS:2",
+ amountRaw: "ARS:2" as AmountString,
+ amountEffective: "ARS:2" as AmountString,
paytoUris: ["payto://"],
tosAccepted: false,
ageRestrictionOptions: [],
@@ -231,7 +232,7 @@ describe("Withdraw CTA states", () => {
WalletApiOperation.GetWithdrawalDetailsForUri,
undefined,
{
- amount: "ARS:2",
+ amount: "ARS:2" as AmountString,
possibleExchanges: exchanges,
defaultExchangeBaseUrl: exchanges[0].exchangeBaseUrl,
},
diff --git a/packages/taler-wallet-webextension/src/popup/Balance.stories.tsx b/packages/taler-wallet-webextension/src/popup/Balance.stories.tsx
index d2c074d32..dd8142b68 100644
--- a/packages/taler-wallet-webextension/src/popup/Balance.stories.tsx
+++ b/packages/taler-wallet-webextension/src/popup/Balance.stories.tsx
@@ -19,7 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { ScopeType } from "@gnu-taler/taler-util";
+import { AmountString, ScopeType } from "@gnu-taler/taler-util";
import * as tests from "@gnu-taler/web-util/testing";
import { BalanceView as TestedComponent } from "./BalancePage.js";
@@ -35,10 +35,10 @@ export const EmptyBalance = tests.createExample(TestedComponent, {
export const SomeCoins = tests.createExample(TestedComponent, {
balances: [
{
- available: "USD:10.5",
+ available: "USD:10.5" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -54,10 +54,10 @@ export const SomeCoins = tests.createExample(TestedComponent, {
export const SomeCoinsInTreeCurrencies = tests.createExample(TestedComponent, {
balances: [
{
- available: "EUR:1",
+ available: "EUR:1" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -66,10 +66,10 @@ export const SomeCoinsInTreeCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "TESTKUDOS:2000",
+ available: "TESTKUDOS:2000" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -78,10 +78,10 @@ export const SomeCoinsInTreeCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "JPY:4",
+ available: "JPY:4" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "EUR:15",
- pendingOutgoing: "EUR:0",
+ pendingIncoming: "EUR:15" as AmountString,
+ pendingOutgoing: "EUR:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -97,10 +97,10 @@ export const SomeCoinsInTreeCurrencies = tests.createExample(TestedComponent, {
export const NoCoinsInTreeCurrencies = tests.createExample(TestedComponent, {
balances: [
{
- available: "EUR:3",
+ available: "EUR:3" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -109,10 +109,10 @@ export const NoCoinsInTreeCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "USD:2",
+ available: "USD:2" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -121,10 +121,10 @@ export const NoCoinsInTreeCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "ARS:1",
+ available: "ARS:1" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "EUR:15",
- pendingOutgoing: "EUR:0",
+ pendingIncoming: "EUR:15" as AmountString,
+ pendingOutgoing: "EUR:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -140,10 +140,10 @@ export const NoCoinsInTreeCurrencies = tests.createExample(TestedComponent, {
export const SomeCoinsInFiveCurrencies = tests.createExample(TestedComponent, {
balances: [
{
- available: "USD:0",
+ available: "USD:0" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -152,10 +152,10 @@ export const SomeCoinsInFiveCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "ARS:13451",
+ available: "ARS:13451" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -164,10 +164,10 @@ export const SomeCoinsInFiveCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "EUR:202.02",
+ available: "EUR:202.02" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "EUR:0",
- pendingOutgoing: "EUR:0",
+ pendingIncoming: "EUR:0" as AmountString,
+ pendingOutgoing: "EUR:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -176,10 +176,10 @@ export const SomeCoinsInFiveCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "JPY:0",
+ available: "JPY:0" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "EUR:0",
- pendingOutgoing: "EUR:0",
+ pendingIncoming: "EUR:0" as AmountString,
+ pendingOutgoing: "EUR:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -188,10 +188,10 @@ export const SomeCoinsInFiveCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "JPY:51223233",
+ available: "JPY:51223233" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "EUR:0",
- pendingOutgoing: "EUR:0",
+ pendingIncoming: "EUR:0" as AmountString,
+ pendingOutgoing: "EUR:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -200,10 +200,10 @@ export const SomeCoinsInFiveCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "DEMOKUDOS:6",
+ available: "DEMOKUDOS:6" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
@@ -212,10 +212,10 @@ export const SomeCoinsInFiveCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "TESTKUDOS:6",
+ available: "TESTKUDOS:6" as AmountString,
hasPendingTransactions: false,
- pendingIncoming: "USD:5",
- pendingOutgoing: "USD:0",
+ pendingIncoming: "USD:5" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
requiresUserInput: false,
scopeInfo: {
currency: "TESTKUDOS",
diff --git a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/stories.tsx b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/stories.tsx
index 736de11f4..7ac92c6c9 100644
--- a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/stories.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/stories.tsx
@@ -21,6 +21,7 @@
import * as tests from "@gnu-taler/web-util/testing";
import { ConfirmProviderView, SelectProviderView } from "./views.js";
+import { AmountString } from "@gnu-taler/taler-util";
export default {
title: "add backup provider",
@@ -29,7 +30,7 @@ export default {
export const DemoService = tests.createExample(ConfirmProviderView, {
url: "https://sync.demo.taler.net/",
provider: {
- annual_fee: "KUDOS:0.1",
+ annual_fee: "KUDOS:0.1" as AmountString,
storage_limit_in_megabytes: 20,
version: "1",
},
@@ -43,7 +44,7 @@ export const DemoService = tests.createExample(ConfirmProviderView, {
export const FreeService = tests.createExample(ConfirmProviderView, {
url: "https://sync.taler:9667/",
provider: {
- annual_fee: "ARS:0",
+ annual_fee: "ARS:0" as AmountString,
storage_limit_in_megabytes: 20,
version: "1",
},
diff --git a/packages/taler-wallet-webextension/src/wallet/Application.tsx b/packages/taler-wallet-webextension/src/wallet/Application.tsx
index 18291a25a..4c4ba1855 100644
--- a/packages/taler-wallet-webextension/src/wallet/Application.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Application.tsx
@@ -21,6 +21,7 @@
*/
import {
+ Amounts,
TalerUri,
TranslatedString,
stringifyTalerUri,
@@ -426,7 +427,7 @@ export function Application(): VNode {
}) => (
<CallToActionTemplate title={i18n.str`Digital cash deposit`}>
<DepositPageCTA
- amountStr={amount}
+ amountStr={Amounts.stringify(Amounts.parseOrThrow(amount))}
talerDepositUri={decodeURIComponent(talerUri)}
cancel={() => redirectTo(Pages.balance)}
onSuccess={(tid: string) =>
@@ -441,7 +442,7 @@ export function Application(): VNode {
component={({ amount }: { amount: string }) => (
<CallToActionTemplate title={i18n.str`Digital cash invoice`}>
<InvoiceCreatePage
- amount={amount}
+ amount={Amounts.stringify(Amounts.parseOrThrow(amount))}
onClose={() => redirectTo(Pages.balance)}
onSuccess={(tid: string) =>
redirectTo(Pages.balanceTransaction({ tid }))
@@ -455,7 +456,7 @@ export function Application(): VNode {
component={({ amount }: { amount: string }) => (
<CallToActionTemplate title={i18n.str`Digital cash transfer`}>
<TransferCreatePage
- amount={amount}
+ amount={Amounts.stringify(Amounts.parseOrThrow(amount))}
onClose={() => redirectTo(Pages.balance)}
onSuccess={(tid: string) =>
redirectTo(Pages.balanceTransaction({ tid }))
diff --git a/packages/taler-wallet-webextension/src/wallet/Backup.stories.tsx b/packages/taler-wallet-webextension/src/wallet/Backup.stories.tsx
index 59bcd5ce9..ae160a30c 100644
--- a/packages/taler-wallet-webextension/src/wallet/Backup.stories.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Backup.stories.tsx
@@ -28,6 +28,7 @@ import {
import * as tests from "@gnu-taler/web-util/testing";
import {
AbsoluteTime,
+ AmountString,
TalerPreciseTimestamp,
TalerProtocolTimestamp,
} from "@gnu-taler/taler-util";
@@ -52,7 +53,7 @@ export const LotOfProviders = tests.createExample(TestedComponent, {
paidUntil: AbsoluteTime.fromMilliseconds(1656599921000),
},
terms: {
- annualFee: "ARS:1",
+ annualFee: "ARS:1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -73,7 +74,7 @@ export const LotOfProviders = tests.createExample(TestedComponent, {
),
},
terms: {
- annualFee: "ARS:1",
+ annualFee: "ARS:1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -88,7 +89,7 @@ export const LotOfProviders = tests.createExample(TestedComponent, {
talerUri: "taler://",
},
terms: {
- annualFee: "KUDOS:0.1",
+ annualFee: "KUDOS:0.1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -100,10 +101,10 @@ export const LotOfProviders = tests.createExample(TestedComponent, {
paymentProposalIds: [],
paymentStatus: {
type: ProviderPaymentType.InsufficientBalance,
- amount: "KUDOS:10",
+ amount: "KUDOS:10" as AmountString,
},
terms: {
- annualFee: "KUDOS:0.1",
+ annualFee: "KUDOS:0.1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -116,19 +117,19 @@ export const LotOfProviders = tests.createExample(TestedComponent, {
paymentStatus: {
type: ProviderPaymentType.TermsChanged,
newTerms: {
- annualFee: "USD:2",
+ annualFee: "USD:2" as AmountString,
storageLimitInMegabytes: 8,
supportedProtocolVersion: "2",
},
oldTerms: {
- annualFee: "USD:1",
+ annualFee: "USD:1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "1",
},
paidUntil: AbsoluteTime.never(),
},
terms: {
- annualFee: "KUDOS:0.1",
+ annualFee: "KUDOS:0.1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -142,7 +143,7 @@ export const LotOfProviders = tests.createExample(TestedComponent, {
type: ProviderPaymentType.Unpaid,
},
terms: {
- annualFee: "KUDOS:0.1",
+ annualFee: "KUDOS:0.1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -156,7 +157,7 @@ export const LotOfProviders = tests.createExample(TestedComponent, {
type: ProviderPaymentType.Unpaid,
},
terms: {
- annualFee: "KUDOS:0.1",
+ annualFee: "KUDOS:0.1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -180,7 +181,7 @@ export const OneProvider = tests.createExample(TestedComponent, {
paidUntil: AbsoluteTime.fromMilliseconds(1656599921000),
},
terms: {
- annualFee: "ARS:1",
+ annualFee: "ARS:1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
diff --git a/packages/taler-wallet-webextension/src/wallet/DepositPage/test.ts b/packages/taler-wallet-webextension/src/wallet/DepositPage/test.ts
index 4d09d2549..5384fe4c5 100644
--- a/packages/taler-wallet-webextension/src/wallet/DepositPage/test.ts
+++ b/packages/taler-wallet-webextension/src/wallet/DepositPage/test.ts
@@ -21,6 +21,7 @@
import {
Amounts,
+ AmountString,
DepositGroupFees,
parsePaytoUri,
PrepareDepositResponse,
@@ -38,8 +39,8 @@ import { useComponentState } from "./state.js";
const currency = "EUR";
const amount = `${currency}:0`;
const withoutFee = (): PrepareDepositResponse => ({
- effectiveDepositAmount: `${currency}:5`,
- totalDepositCost: `${currency}:5`,
+ effectiveDepositAmount: `${currency}:5` as AmountString,
+ totalDepositCost: `${currency}:5` as AmountString,
fees: {
coin: Amounts.stringify(`${currency}:0`),
wire: Amounts.stringify(`${currency}:0`),
@@ -48,8 +49,8 @@ const withoutFee = (): PrepareDepositResponse => ({
});
const withSomeFee = (): PrepareDepositResponse => ({
- effectiveDepositAmount: `${currency}:5`,
- totalDepositCost: `${currency}:5`,
+ effectiveDepositAmount: `${currency}:5` as AmountString,
+ totalDepositCost: `${currency}:5` as AmountString,
fees: {
coin: Amounts.stringify(`${currency}:1`),
wire: Amounts.stringify(`${currency}:1`),
@@ -65,10 +66,10 @@ describe("DepositPage states", () => {
handler.addWalletCallResponse(WalletApiOperation.GetBalances, undefined, {
balances: [
{
- available: `${currency}:0`,
+ available: `${currency}:0` as AmountString,
hasPendingTransactions: false,
- pendingIncoming: `${currency}:0`,
- pendingOutgoing: `${currency}:0`,
+ pendingIncoming: `${currency}:0` as AmountString,
+ pendingOutgoing: `${currency}:0` as AmountString,
requiresUserInput: false,
scopeInfo: {
currency,
@@ -111,10 +112,10 @@ describe("DepositPage states", () => {
handler.addWalletCallResponse(WalletApiOperation.GetBalances, undefined, {
balances: [
{
- available: `${currency}:1`,
+ available: `${currency}:1` as AmountString,
hasPendingTransactions: false,
- pendingIncoming: `${currency}:0`,
- pendingOutgoing: `${currency}:0`,
+ pendingIncoming: `${currency}:0` as AmountString,
+ pendingOutgoing: `${currency}:0` as AmountString,
requiresUserInput: false,
scopeInfo: {
currency,
@@ -170,10 +171,10 @@ describe("DepositPage states", () => {
handler.addWalletCallResponse(WalletApiOperation.GetBalances, undefined, {
balances: [
{
- available: `${currency}:1`,
+ available: `${currency}:1` as AmountString,
hasPendingTransactions: false,
- pendingIncoming: `${currency}:0`,
- pendingOutgoing: `${currency}:0`,
+ pendingIncoming: `${currency}:0` as AmountString,
+ pendingOutgoing: `${currency}:0` as AmountString,
requiresUserInput: false,
scopeInfo: {
currency,
@@ -229,10 +230,10 @@ describe("DepositPage states", () => {
handler.addWalletCallResponse(WalletApiOperation.GetBalances, undefined, {
balances: [
{
- available: `${currency}:5`,
+ available: `${currency}:5` as AmountString,
hasPendingTransactions: false,
- pendingIncoming: `${currency}:0`,
- pendingOutgoing: `${currency}:0`,
+ pendingIncoming: `${currency}:0` as AmountString,
+ pendingOutgoing: `${currency}:0` as AmountString,
requiresUserInput: false,
scopeInfo: {
currency,
@@ -318,10 +319,10 @@ describe("DepositPage states", () => {
handler.addWalletCallResponse(WalletApiOperation.GetBalances, undefined, {
balances: [
{
- available: `${currency}:10`,
+ available: `${currency}:10` as AmountString,
hasPendingTransactions: false,
- pendingIncoming: `${currency}:0`,
- pendingOutgoing: `${currency}:0`,
+ pendingIncoming: `${currency}:0` as AmountString,
+ pendingOutgoing: `${currency}:0` as AmountString,
requiresUserInput: false,
scopeInfo: {
currency,
diff --git a/packages/taler-wallet-webextension/src/wallet/History.stories.tsx b/packages/taler-wallet-webextension/src/wallet/History.stories.tsx
index 1ddb24b02..9bf39b8ae 100644
--- a/packages/taler-wallet-webextension/src/wallet/History.stories.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/History.stories.tsx
@@ -20,6 +20,7 @@
*/
import {
+ AmountString,
PaymentStatus,
RefreshReason,
ScopeType,
@@ -49,17 +50,17 @@ export default {
let count = 0;
const commonTransaction = (): TransactionCommon =>
- ({
- amountRaw: "USD:10",
- amountEffective: "USD:9",
- txState: {
- major: TransactionMajorState.Done,
- },
- timestamp: TalerProtocolTimestamp.fromSeconds(
- new Date().getTime() / 1000 - count++ * 60 * 60 * 7,
- ),
- transactionId: String(count),
- } as TransactionCommon);
+({
+ amountRaw: "USD:10",
+ amountEffective: "USD:9",
+ txState: {
+ major: TransactionMajorState.Done,
+ },
+ timestamp: TalerProtocolTimestamp.fromSeconds(
+ new Date().getTime() / 1000 - count++ * 60 * 60 * 7,
+ ),
+ transactionId: String(count),
+} as TransactionCommon);
const exampleData = {
withdraw: {
@@ -76,7 +77,7 @@ const exampleData = {
} as TransactionWithdrawal,
payment: {
...commonTransaction(),
- amountEffective: "USD:11",
+ amountEffective: "USD:11" as AmountString,
type: TransactionType.Payment,
posConfirmation: undefined,
info: {
@@ -91,8 +92,8 @@ const exampleData = {
},
refunds: [],
refundPending: undefined,
- totalRefundEffective: "USD:0",
- totalRefundRaw: "USD:0",
+ totalRefundEffective: "USD:0" as AmountString,
+ totalRefundRaw: "USD:0" as AmountString,
proposalId: "1EMJJH8EP1NX3XF7733NCYS2DBEJW4Q2KA5KEB37MCQJQ8Q5HMC0",
status: PaymentStatus.Accepted,
refundQueryActive: false,
@@ -106,8 +107,8 @@ const exampleData = {
refresh: {
...commonTransaction(),
type: TransactionType.Refresh,
- refreshInputAmount: "USD:1",
- refreshOutputAmount: "USD:0.5",
+ refreshInputAmount: "USD:1" as AmountString,
+ refreshOutputAmount: "USD:0.5" as AmountString,
exchangeBaseUrl: "http://exchange.taler",
refreshReason: RefreshReason.PayMerchant,
} as TransactionRefresh,
@@ -178,9 +179,9 @@ export const SomeBalanceWithNoTransactions = tests.createExample(
transactions: [],
balances: [
{
- available: "TESTKUDOS:10",
- pendingIncoming: "TESTKUDOS:0",
- pendingOutgoing: "TESTKUDOS:0",
+ available: "TESTKUDOS:10" as AmountString,
+ pendingIncoming: "TESTKUDOS:0" as AmountString,
+ pendingOutgoing: "TESTKUDOS:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -197,9 +198,9 @@ export const OneSimpleTransaction = tests.createExample(TestedComponent, {
transactions: [exampleData.withdraw],
balances: [
{
- available: "USD:10",
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ available: "USD:10" as AmountString,
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -217,9 +218,9 @@ export const TwoTransactionsAndZeroBalance = tests.createExample(
transactions: [exampleData.withdraw, exampleData.deposit],
balances: [
{
- available: "USD:0",
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ available: "USD:0" as AmountString,
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -243,9 +244,9 @@ export const OneTransactionPending = tests.createExample(TestedComponent, {
],
balances: [
{
- available: "USD:10",
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ available: "USD:10" as AmountString,
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -277,9 +278,9 @@ export const SomeTransactions = tests.createExample(TestedComponent, {
],
balances: [
{
- available: "USD:10",
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ available: "USD:10" as AmountString,
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -370,9 +371,9 @@ export const SomeTransactionsInDifferentStates = tests.createExample(
],
balances: [
{
- available: "USD:10",
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ available: "USD:10" as AmountString,
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -400,9 +401,9 @@ export const SomeTransactionsWithTwoCurrencies = tests.createExample(
],
balances: [
{
- available: "USD:0",
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ available: "USD:0" as AmountString,
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -412,9 +413,9 @@ export const SomeTransactionsWithTwoCurrencies = tests.createExample(
},
},
{
- available: "TESTKUDOS:10",
- pendingIncoming: "TESTKUDOS:0",
- pendingOutgoing: "TESTKUDOS:0",
+ available: "TESTKUDOS:10" as AmountString,
+ pendingIncoming: "TESTKUDOS:0" as AmountString,
+ pendingOutgoing: "TESTKUDOS:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -431,9 +432,9 @@ export const FiveOfficialCurrencies = tests.createExample(TestedComponent, {
transactions: [exampleData.withdraw],
balances: [
{
- available: "USD:1000",
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ available: "USD:1000" as AmountString,
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -443,9 +444,9 @@ export const FiveOfficialCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "EUR:881",
- pendingIncoming: "TESTKUDOS:0",
- pendingOutgoing: "TESTKUDOS:0",
+ available: "EUR:881" as AmountString,
+ pendingIncoming: "TESTKUDOS:0" as AmountString,
+ pendingOutgoing: "TESTKUDOS:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -455,9 +456,9 @@ export const FiveOfficialCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "COL:4043000.5",
- pendingIncoming: "TESTKUDOS:0",
- pendingOutgoing: "TESTKUDOS:0",
+ available: "COL:4043000.5" as AmountString,
+ pendingIncoming: "TESTKUDOS:0" as AmountString,
+ pendingOutgoing: "TESTKUDOS:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -467,9 +468,9 @@ export const FiveOfficialCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "JPY:11564450.6",
- pendingIncoming: "TESTKUDOS:0",
- pendingOutgoing: "TESTKUDOS:0",
+ available: "JPY:11564450.6" as AmountString,
+ pendingIncoming: "TESTKUDOS:0" as AmountString,
+ pendingOutgoing: "TESTKUDOS:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -479,9 +480,9 @@ export const FiveOfficialCurrencies = tests.createExample(TestedComponent, {
},
},
{
- available: "GBP:736",
- pendingIncoming: "TESTKUDOS:0",
- pendingOutgoing: "TESTKUDOS:0",
+ available: "GBP:736" as AmountString,
+ pendingIncoming: "TESTKUDOS:0" as AmountString,
+ pendingOutgoing: "TESTKUDOS:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -499,9 +500,9 @@ export const FiveOfficialCurrenciesWithHighValue = tests.createExample(
transactions: [exampleData.withdraw],
balances: [
{
- available: "USD:881001321230000",
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ available: "USD:881001321230000" as AmountString,
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -511,9 +512,9 @@ export const FiveOfficialCurrenciesWithHighValue = tests.createExample(
},
},
{
- available: "EUR:10",
- pendingIncoming: "TESTKUDOS:0",
- pendingOutgoing: "TESTKUDOS:0",
+ available: "EUR:10" as AmountString,
+ pendingIncoming: "TESTKUDOS:0" as AmountString,
+ pendingOutgoing: "TESTKUDOS:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -523,9 +524,9 @@ export const FiveOfficialCurrenciesWithHighValue = tests.createExample(
},
},
{
- available: "COL:443000123123000.5123123",
- pendingIncoming: "TESTKUDOS:0",
- pendingOutgoing: "TESTKUDOS:0",
+ available: "COL:443000123123000.5123123" as AmountString,
+ pendingIncoming: "TESTKUDOS:0" as AmountString,
+ pendingOutgoing: "TESTKUDOS:0" as AmountString,
hasPendingTransactions: false,
scopeInfo: {
currency: "Ásd",
@@ -535,9 +536,9 @@ export const FiveOfficialCurrenciesWithHighValue = tests.createExample(
requiresUserInput: false,
},
{
- available: "JPY:1564450000000.6123123",
- pendingIncoming: "TESTKUDOS:0",
- pendingOutgoing: "TESTKUDOS:0",
+ available: "JPY:1564450000000.6123123" as AmountString,
+ pendingIncoming: "TESTKUDOS:0" as AmountString,
+ pendingOutgoing: "TESTKUDOS:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -547,9 +548,9 @@ export const FiveOfficialCurrenciesWithHighValue = tests.createExample(
},
},
{
- available: "GBP:736001231231200.23123",
- pendingIncoming: "TESTKUDOS:0",
- pendingOutgoing: "TESTKUDOS:0",
+ available: "GBP:736001231231200.23123" as AmountString,
+ pendingIncoming: "TESTKUDOS:0" as AmountString,
+ pendingOutgoing: "TESTKUDOS:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
@@ -571,9 +572,9 @@ export const PeerToPeer = tests.createExample(TestedComponent, {
],
balances: [
{
- available: "USD:10",
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
+ available: "USD:10" as AmountString,
+ pendingIncoming: "USD:0" as AmountString,
+ pendingOutgoing: "USD:0" as AmountString,
hasPendingTransactions: false,
requiresUserInput: false,
scopeInfo: {
diff --git a/packages/taler-wallet-webextension/src/wallet/ProviderDetail.stories.tsx b/packages/taler-wallet-webextension/src/wallet/ProviderDetail.stories.tsx
index fbaa0b0ea..f81a86b9d 100644
--- a/packages/taler-wallet-webextension/src/wallet/ProviderDetail.stories.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/ProviderDetail.stories.tsx
@@ -21,6 +21,7 @@
import {
AbsoluteTime,
+ AmountString,
TalerPreciseTimestamp,
TalerProtocolTimestamp,
} from "@gnu-taler/taler-util";
@@ -53,7 +54,7 @@ export const Active = tests.createExample(TestedComponent, {
paidUntil: AbsoluteTime.fromMilliseconds(1656599921000),
},
terms: {
- annualFee: "EUR:1",
+ annualFee: "EUR:1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -84,7 +85,7 @@ export const ActiveErrorSync = tests.createExample(TestedComponent, {
message: "message",
},
terms: {
- annualFee: "EUR:1",
+ annualFee: "EUR:1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -111,7 +112,7 @@ export const ActiveBackupProblemUnreadable = tests.createExample(
type: "backup-unreadable",
},
terms: {
- annualFee: "EUR:1",
+ annualFee: "EUR:1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -140,7 +141,7 @@ export const ActiveBackupProblemDevice = tests.createExample(TestedComponent, {
backupTimestamp: AbsoluteTime.fromMilliseconds(1656599921000),
},
terms: {
- annualFee: "EUR:1",
+ annualFee: "EUR:1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -157,7 +158,7 @@ export const InactiveUnpaid = tests.createExample(TestedComponent, {
type: ProviderPaymentType.Unpaid,
},
terms: {
- annualFee: "EUR:0.1",
+ annualFee: "EUR:0.1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -174,10 +175,10 @@ export const InactiveInsufficientBalance = tests.createExample(
paymentProposalIds: [],
paymentStatus: {
type: ProviderPaymentType.InsufficientBalance,
- amount: "EUR:123",
+ amount: "EUR:123" as AmountString,
},
terms: {
- annualFee: "EUR:0.1",
+ annualFee: "EUR:0.1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -196,7 +197,7 @@ export const InactivePending = tests.createExample(TestedComponent, {
talerUri: "taler://pay/sad",
},
terms: {
- annualFee: "EUR:0.1",
+ annualFee: "EUR:0.1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
@@ -213,18 +214,18 @@ export const ActiveTermsChanged = tests.createExample(TestedComponent, {
type: ProviderPaymentType.TermsChanged,
paidUntil: AbsoluteTime.fromMilliseconds(1656599921000),
newTerms: {
- annualFee: "EUR:10",
+ annualFee: "EUR:10" as AmountString,
storageLimitInMegabytes: 8,
supportedProtocolVersion: "0.0",
},
oldTerms: {
- annualFee: "EUR:0.1",
+ annualFee: "EUR:0.1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
},
terms: {
- annualFee: "EUR:0.1",
+ annualFee: "EUR:0.1" as AmountString,
storageLimitInMegabytes: 16,
supportedProtocolVersion: "0.0",
},
diff --git a/packages/taler-wallet-webextension/src/wallet/Transaction.stories.tsx b/packages/taler-wallet-webextension/src/wallet/Transaction.stories.tsx
index f1ae84ed3..09f7c4dc1 100644
--- a/packages/taler-wallet-webextension/src/wallet/Transaction.stories.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Transaction.stories.tsx
@@ -21,6 +21,7 @@
import {
AbsoluteTime,
+ AmountString,
PaymentStatus,
RefreshReason,
TalerPreciseTimestamp,
@@ -60,8 +61,8 @@ export default {
const commonTransaction: TransactionCommon = {
error: undefined,
- amountRaw: "KUDOS:11",
- amountEffective: "KUDOS:9.2",
+ amountRaw: "KUDOS:11" as AmountString,
+ amountEffective: "KUDOS:9.2" as AmountString,
txState: {
major: TransactionMajorState.Done,
},
@@ -91,7 +92,7 @@ const exampleData = {
} as TransactionWithdrawal,
payment: {
...commonTransaction,
- amountEffective: "KUDOS:12",
+ amountEffective: "KUDOS:12" as AmountString,
type: TransactionType.Payment,
posConfirmation: undefined,
info: {
@@ -113,8 +114,8 @@ const exampleData = {
},
refunds: [],
refundPending: undefined,
- totalRefundEffective: "KUDOS:0",
- totalRefundRaw: "KUDOS:0",
+ totalRefundEffective: "KUDOS:0" as AmountString,
+ totalRefundRaw: "KUDOS:0" as AmountString,
proposalId: "1EMJJH8EP1NX3XF7733NCYS2DBEJW4Q2KA5KEB37MCQJQ8Q5HMC0",
status: PaymentStatus.Accepted,
refundQueryActive: false,
@@ -131,8 +132,8 @@ const exampleData = {
refresh: {
...commonTransaction,
type: TransactionType.Refresh,
- refreshInputAmount: "KUDOS:1",
- refreshOutputAmount: "KUDOS:0.5",
+ refreshInputAmount: "KUDOS:1" as AmountString,
+ refreshOutputAmount: "KUDOS:0.5" as AmountString,
exchangeBaseUrl: "http://exchange.taler",
refreshReason: RefreshReason.Manual,
} as TransactionRefresh,
@@ -358,14 +359,14 @@ export const PaymentError = tests.createExample(TestedComponent, {
export const PaymentWithRefund = tests.createExample(TestedComponent, {
transaction: {
...exampleData.payment,
- amountRaw: "KUDOS:12",
- totalRefundEffective: "KUDOS:1",
- totalRefundRaw: "KUDOS:1",
+ amountRaw: "KUDOS:12" as AmountString,
+ totalRefundEffective: "KUDOS:1" as AmountString,
+ totalRefundRaw: "KUDOS:1" as AmountString,
refunds: [
{
transactionId: "1123123",
- amountRaw: "KUDOS:1",
- amountEffective: "KUDOS:1",
+ amountRaw: "KUDOS:1" as AmountString,
+ amountEffective: "KUDOS:1" as AmountString,
timestamp: TalerProtocolTimestamp.fromSeconds(1546546544),
},
],
@@ -375,7 +376,7 @@ export const PaymentWithRefund = tests.createExample(TestedComponent, {
export const PaymentWithDeliveryDate = tests.createExample(TestedComponent, {
transaction: {
...exampleData.payment,
- amountRaw: "KUDOS:12",
+ amountRaw: "KUDOS:12" as AmountString,
info: {
...exampleData.payment.info,
// delivery_date: {
@@ -388,7 +389,7 @@ export const PaymentWithDeliveryDate = tests.createExample(TestedComponent, {
export const PaymentWithDeliveryAddr = tests.createExample(TestedComponent, {
transaction: {
...exampleData.payment,
- amountRaw: "KUDOS:12",
+ amountRaw: "KUDOS:12" as AmountString,
info: {
...exampleData.payment.info,
// delivery_location: {
@@ -404,7 +405,7 @@ export const PaymentWithDeliveryAddr = tests.createExample(TestedComponent, {
export const PaymentWithDeliveryFull = tests.createExample(TestedComponent, {
transaction: {
...exampleData.payment,
- amountRaw: "KUDOS:12",
+ amountRaw: "KUDOS:12" as AmountString,
info: {
...exampleData.payment.info,
// delivery_date: {
@@ -423,35 +424,35 @@ export const PaymentWithDeliveryFull = tests.createExample(TestedComponent, {
export const PaymentWithRefundPending = tests.createExample(TestedComponent, {
transaction: {
...exampleData.payment,
- amountRaw: "KUDOS:12",
- refundPending: "KUDOS:3",
- totalRefundEffective: "KUDOS:1",
- totalRefundRaw: "KUDOS:1",
+ amountRaw: "KUDOS:12" as AmountString,
+ refundPending: "KUDOS:3" as AmountString,
+ totalRefundEffective: "KUDOS:1" as AmountString,
+ totalRefundRaw: "KUDOS:1" as AmountString,
},
});
export const PaymentWithFeeAndRefund = tests.createExample(TestedComponent, {
transaction: {
...exampleData.payment,
- amountRaw: "KUDOS:11",
- totalRefundEffective: "KUDOS:1",
- totalRefundRaw: "KUDOS:1",
+ amountRaw: "KUDOS:11" as AmountString,
+ totalRefundEffective: "KUDOS:1" as AmountString,
+ totalRefundRaw: "KUDOS:1" as AmountString,
},
});
export const PaymentWithFeeAndRefundFee = tests.createExample(TestedComponent, {
transaction: {
...exampleData.payment,
- amountRaw: "KUDOS:11",
- totalRefundEffective: "KUDOS:1",
- totalRefundRaw: "KUDOS:2",
+ amountRaw: "KUDOS:11" as AmountString,
+ totalRefundEffective: "KUDOS:1" as AmountString,
+ totalRefundRaw: "KUDOS:2" as AmountString,
},
});
export const PaymentWithoutFee = tests.createExample(TestedComponent, {
transaction: {
...exampleData.payment,
- amountRaw: "KUDOS:12",
+ amountRaw: "KUDOS:12" as AmountString,
},
});
@@ -537,8 +538,8 @@ export const DepositTalerBank = tests.createExample(TestedComponent, {
export const DepositBitcoin = tests.createExample(TestedComponent, {
transaction: {
...exampleData.deposit,
- amountRaw: "BITCOINBTC:0.0000011",
- amountEffective: "BITCOINBTC:0.00000092",
+ amountRaw: "BITCOINBTC:0.0000011" as AmountString,
+ amountEffective: "BITCOINBTC:0.00000092" as AmountString,
targetPaytoUri:
"payto://bitcoin/bcrt1q6ps8qs6v8tkqrnru4xqqqa6rfwcx5ufpdfqht4?amount=BTC:0.1&subject=0ZSX8SH0M30KHX8K3Y1DAMVGDQV82XEF9DG1HC4QMQ3QWYT4AF00",
},
diff --git a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
index 3b76558ce..422695367 100644
--- a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
@@ -18,6 +18,7 @@ import {
AbsoluteTime,
AmountJson,
Amounts,
+ AmountString,
Location,
MerchantInfo,
NotificationType,
@@ -1655,7 +1656,7 @@ function RefundDetails({ amount }: { amount: AmountWithFee }): VNode {
type AmountAmountByWireTransferByWire = {
id: string;
- amount: string;
+ amount: AmountString;
}[];
function calculateAmountByWireTransfer(