taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 522d7a68b9fb873f2e254002a3c16d274b7584f5
parent 247a16abaee56a518bb41be83462ea0bd4eb3447
Author: Florian Dold <dold@taler.net>
Date:   Tue, 21 Jul 2026 02:25:33 +0200

util: decode coin_sig and filterByState, and annotate object codec types

Diffstat:
Mpackages/taler-util/src/types-taler-common.ts | 4++--
Mpackages/taler-util/src/types-taler-exchange.ts | 23++++++++++++-----------
Mpackages/taler-util/src/types-taler-wallet-transactions.ts | 1+
Mpackages/taler-util/src/types-taler-wallet.ts | 10+++++-----
4 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/packages/taler-util/src/types-taler-common.ts b/packages/taler-util/src/types-taler-common.ts @@ -332,7 +332,7 @@ export interface DenominationExpiredMessage { oper: string; } -export const codecForDenominationExpiredMessage = () => +export const codecForDenominationExpiredMessage = (): Codec<DenominationExpiredMessage> => buildCodecForObject<DenominationExpiredMessage>() .property("code", codecForNumber()) .property("exchange_sig", codecForEddsaSignature()) @@ -353,7 +353,7 @@ export interface CoinHistoryResponse { history: any[]; } -export const codecForCoinHistoryResponse = () => +export const codecForCoinHistoryResponse = (): Codec<CoinHistoryResponse> => buildCodecForObject<CoinHistoryResponse>() .property("balance", codecForAmountString()) .property("h_denom_pub", codecForString()) diff --git a/packages/taler-util/src/types-taler-exchange.ts b/packages/taler-util/src/types-taler-exchange.ts @@ -128,21 +128,21 @@ export namespace DenominationPubKey { } } -export const codecForRsaDenominationPubKey = () => +export const codecForRsaDenominationPubKey = (): Codec<RsaDenominationPubKey> => buildCodecForObject<RsaDenominationPubKey>() .property("cipher", codecForConstString(DenomKeyType.Rsa)) .property("rsa_public_key", codecForString()) .property("age_mask", codecForNumber()) .build("DenominationPubKey"); -export const codecForCsDenominationPubKey = () => +export const codecForCsDenominationPubKey = (): Codec<CsDenominationPubKey> => buildCodecForObject<CsDenominationPubKey>() .property("cipher", codecForConstString(DenomKeyType.ClauseSchnorr)) .property("cs_public_key", codecForString()) .property("age_mask", codecForNumber()) .build("CsDenominationPubKey"); -export const codecForDenominationPubKey = () => +export const codecForDenominationPubKey = (): Codec<DenominationPubKey> => buildCodecForUnion<DenominationPubKey>() .discriminateOn("cipher") .alternative(DenomKeyType.Rsa, codecForRsaDenominationPubKey()) @@ -1132,13 +1132,13 @@ export namespace DenomKeyType { } } -export const codecForRsaBlindedDenominationSignature = () => +export const codecForRsaBlindedDenominationSignature = (): Codec<RsaBlindedDenominationSignature> => buildCodecForObject<RsaBlindedDenominationSignature>() .property("cipher", codecForConstString(DenomKeyType.Rsa)) .property("blinded_rsa_signature", codecForString()) .build("RsaBlindedDenominationSignature"); -export const codecForCsBlindedDenominationSignature = () => +export const codecForCsBlindedDenominationSignature = (): Codec<CSBlindedDenominationSignature> => buildCodecForObject<CSBlindedDenominationSignature>() .property("cipher", codecForConstString(DenomKeyType.ClauseSchnorr)) .property("b", codecForNumber()) @@ -3445,7 +3445,7 @@ export interface PurseCreate { purse_expiration: Timestamp; } -export const codecForPurseConflict = () => +export const codecForPurseConflict = (): Codec<PurseConflict> => buildCodecForUnion<PurseConflict>() .discriminateOn("code") .alternative( @@ -3465,7 +3465,7 @@ export const codecForPurseConflict = () => codecForPurseContractConflict(), ) .build("PurseConflict"); -export const codecForPurseConflictPartial = () => +export const codecForPurseConflictPartial = (): Codec<PurseConflictPartial> => buildCodecForUnion<PurseConflictPartial>() .discriminateOn("code") .alternative( @@ -3481,13 +3481,13 @@ export const codecForPurseConflictPartial = () => codecForPurseContractConflict(), ) .build("PurseConflictPartial"); -export const codecForDepositDoubleSpendError = () => +export const codecForDepositDoubleSpendError = (): Codec<DepositDoubleSpendError> => buildCodecForObject<DepositDoubleSpendError>() .property("code", codecForNumber()) .property("hint", codecForString()) .property("coin_pub", codecForString()) .build("DepositDoubleSpendError"); -export const codecForPurseCreateConflict = () => +export const codecForPurseCreateConflict = (): Codec<PurseCreateConflict> => buildCodecForObject<PurseCreateConflict>() .property("code", codecForNumber()) .property("amount", codecForAmountString()) @@ -3497,14 +3497,15 @@ export const codecForPurseCreateConflict = () => .property("h_contract_terms", codecForString()) .property("merge_pub", codecForString()) .build("PurseCreateConflict"); -export const codecForPurseDepositConflict = () => +export const codecForPurseDepositConflict = (): Codec<PurseDepositConflict> => buildCodecForObject<PurseDepositConflict>() .property("code", codecForNumber()) .property("coin_pub", codecForString()) + .property("coin_sig", codecForString()) .property("partner_url", codecOptional(codecForString())) .property("amount", codecForAmountString()) .build("PurseDepositConflict"); -export const codecForPurseContractConflict = () => +export const codecForPurseContractConflict = (): Codec<PurseContractConflict> => buildCodecForObject<PurseContractConflict>() .property("code", codecForNumber()) .property("h_econtract", codecForString()) diff --git a/packages/taler-util/src/types-taler-wallet-transactions.ts b/packages/taler-util/src/types-taler-wallet-transactions.ts @@ -994,6 +994,7 @@ export const codecForTransactionsRequest = (): Codec<TransactionsRequest> => ), ) .property("includeRefreshes", codecOptional(codecForBoolean())) + .property("filterByState", codecOptional(codecForConstString("nonfinal"))) .build("TransactionsRequest"); // FIXME: do full validation here! diff --git a/packages/taler-util/src/types-taler-wallet.ts b/packages/taler-util/src/types-taler-wallet.ts @@ -300,7 +300,7 @@ export interface GetMaxDepositAmountRequest { restrictScope?: ScopeInfo; } -export const codecForGetMaxDepositAmountRequest = () => +export const codecForGetMaxDepositAmountRequest = (): Codec<GetMaxDepositAmountRequest> => buildCodecForObject<GetMaxDepositAmountRequest>() .property("currency", codecForString()) .property("depositPaytoUri", codecOptional(codecForString())) @@ -4312,7 +4312,7 @@ export interface GetQrCodesForPaytoRequest { paytoUri: string; } -export const codecForGetQrCodesForPaytoRequest = () => +export const codecForGetQrCodesForPaytoRequest = (): Codec<GetQrCodesForPaytoRequest> => buildCodecForObject<GetQrCodesForPaytoRequest>() .property("paytoUri", codecForString()) .build("GetQrCodesForPaytoRequest"); @@ -4325,7 +4325,7 @@ export interface GetBankingChoicesForPaytoRequest { paytoUri: string; } -export const codecForGetBankingChoicesForPaytoRequest = () => +export const codecForGetBankingChoicesForPaytoRequest = (): Codec<GetBankingChoicesForPaytoRequest> => buildCodecForObject<GetBankingChoicesForPaytoRequest>() .property("paytoUri", codecForString()) .build("GetBankingChoicesForPaytoRequest"); @@ -4335,7 +4335,7 @@ export interface ConvertIbanAccountFieldToPaytoRequest { currency: string; } -export const codecForConvertIbanAccountFieldToPaytoRequest = () => +export const codecForConvertIbanAccountFieldToPaytoRequest = (): Codec<ConvertIbanAccountFieldToPaytoRequest> => buildCodecForObject<ConvertIbanAccountFieldToPaytoRequest>() .property("value", codecForString()) .property("currency", codecForString()) @@ -4345,7 +4345,7 @@ export interface ConvertIbanPaytoToAccountFieldRequest { paytoUri: string; } -export const codecForConvertIbanPaytoToAccountFieldRequest = () => +export const codecForConvertIbanPaytoToAccountFieldRequest = (): Codec<ConvertIbanPaytoToAccountFieldRequest> => buildCodecForObject<ConvertIbanPaytoToAccountFieldRequest>() .property("paytoUri", codecForString()) .build("ConvertIbanPaytoToAccountFieldRequest");