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:
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");