taler-typescript-core

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

commit 5b7c49b9b95926032e26ae557fb5e99c6f2018bf
parent c1df0923939585653e64aec14fb48e18579da1b5
Author: Florian Dold <florian@dold.me>
Date:   Sun,  2 Aug 2026 15:54:07 +0200

util: parse rule_name in ZeroLimitedOperation

Diffstat:
Mpackages/taler-util/src/types-taler-exchange.ts | 76+++++++++++++++++++++++++++++++++++++++++++++-------------------------------
1 file changed, 45 insertions(+), 31 deletions(-)

diff --git a/packages/taler-util/src/types-taler-exchange.ts b/packages/taler-util/src/types-taler-exchange.ts @@ -1074,19 +1074,21 @@ const codecForDenomGroupCs = (): Codec<DenomGroupCs> => .property("denoms", codecForList(codecForCsDenom())) .build("TalerExchangeApi.DenomGroupCs"); -const codecForDenomGroupRsaAgeRestricted = (): Codec<DenomGroupRsaAgeRestricted> => - propsForDenomGroupCommon(buildCodecForObject<DenomGroupRsaAgeRestricted>()) - .property("cipher", codecForConstString("RSA+age_restricted")) - .property("age_mask", codecForNumber()) - .property("denoms", codecForList(codecForRsaDenom())) - .build("TalerExchangeApi.DenomGroupRsaAgeRestricted"); - -const codecForDenomGroupCsAgeRestricted = (): Codec<DenomGroupCsAgeRestricted> => - propsForDenomGroupCommon(buildCodecForObject<DenomGroupCsAgeRestricted>()) - .property("cipher", codecForConstString("CS+age_restricted")) - .property("age_mask", codecForNumber()) - .property("denoms", codecForList(codecForCsDenom())) - .build("TalerExchangeApi.DenomGroupCsAgeRestricted"); +const codecForDenomGroupRsaAgeRestricted = + (): Codec<DenomGroupRsaAgeRestricted> => + propsForDenomGroupCommon(buildCodecForObject<DenomGroupRsaAgeRestricted>()) + .property("cipher", codecForConstString("RSA+age_restricted")) + .property("age_mask", codecForNumber()) + .property("denoms", codecForList(codecForRsaDenom())) + .build("TalerExchangeApi.DenomGroupRsaAgeRestricted"); + +const codecForDenomGroupCsAgeRestricted = + (): Codec<DenomGroupCsAgeRestricted> => + propsForDenomGroupCommon(buildCodecForObject<DenomGroupCsAgeRestricted>()) + .property("cipher", codecForConstString("CS+age_restricted")) + .property("age_mask", codecForNumber()) + .property("denoms", codecForList(codecForCsDenom())) + .build("TalerExchangeApi.DenomGroupCsAgeRestricted"); export const codecForNgDenominations = (): Codec<DenomGroup> => buildCodecForUnion<DenomGroup>() @@ -1155,18 +1157,20 @@ export namespace DenomKeyType { } } -export const codecForRsaBlindedDenominationSignature = (): Codec<RsaBlindedDenominationSignature> => - buildCodecForObject<RsaBlindedDenominationSignature>() - .property("cipher", codecForConstString(DenomKeyType.Rsa)) - .property("blinded_rsa_signature", codecForString()) - .build("RsaBlindedDenominationSignature"); +export const codecForRsaBlindedDenominationSignature = + (): Codec<RsaBlindedDenominationSignature> => + buildCodecForObject<RsaBlindedDenominationSignature>() + .property("cipher", codecForConstString(DenomKeyType.Rsa)) + .property("blinded_rsa_signature", codecForString()) + .build("RsaBlindedDenominationSignature"); -export const codecForCsBlindedDenominationSignature = (): Codec<CSBlindedDenominationSignature> => - buildCodecForObject<CSBlindedDenominationSignature>() - .property("cipher", codecForConstString(DenomKeyType.ClauseSchnorr)) - .property("b", codecForNumber()) - .property("s", codecForString()) - .build("CSBlindedDenominationSignature"); +export const codecForCsBlindedDenominationSignature = + (): Codec<CSBlindedDenominationSignature> => + buildCodecForObject<CSBlindedDenominationSignature>() + .property("cipher", codecForConstString(DenomKeyType.ClauseSchnorr)) + .property("b", codecForNumber()) + .property("s", codecForString()) + .build("CSBlindedDenominationSignature"); export const codecForBlindedDenominationSignature = (): Codec<BlindedDenominationSignature> => @@ -2460,6 +2464,11 @@ export interface ZeroLimitedOperation { // (reserve) "CLOSE", "AGGREGATE", // "TRANSACTION" or "REFUND". operation_type: LimitOperationType; + + /** + * Internal name of the rule for this limit. + */ + rule_name?: string; } interface ExtensionManifest { @@ -2620,7 +2629,10 @@ export const codecForExchangeKeysResponse = (): Codec<ExchangeKeysResponse> => "zero_limits", codecOptional(codecForList(codecForZeroLimitedOperation())), ) - .property("hard_limits", codecOptional(codecForList(codecForAccountLimit()))) + .property( + "hard_limits", + codecOptional(codecForList(codecForAccountLimit())), + ) .property("denominations", codecForList(codecForNgDenominations())) .property("exchange_pub", codecForEddsaPublicKey()) .property("exchange_sig", codecForEddsaSignature()) @@ -2915,6 +2927,7 @@ export const codecForAccountLimit = (): Codec<AccountLimit> => export const codecForZeroLimitedOperation = (): Codec<ZeroLimitedOperation> => buildCodecForObject<ZeroLimitedOperation>() .property("operation_type", codecForOperationType) + .property("rule_name", codecOptional(codecForString())) .build("TalerExchangeApi.ZeroLimitedOperation"); export const codecForKycCheckPublicInformation = @@ -3510,12 +3523,13 @@ export const codecForPurseConflictPartial = (): Codec<PurseConflictPartial> => codecForPurseContractConflict(), ) .build("PurseConflictPartial"); -export const codecForDepositDoubleSpendError = (): Codec<DepositDoubleSpendError> => - buildCodecForObject<DepositDoubleSpendError>() - .property("code", codecForNumber()) - .property("hint", codecForString()) - .property("coin_pub", codecForString()) - .build("DepositDoubleSpendError"); +export const codecForDepositDoubleSpendError = + (): Codec<DepositDoubleSpendError> => + buildCodecForObject<DepositDoubleSpendError>() + .property("code", codecForNumber()) + .property("hint", codecForString()) + .property("coin_pub", codecForString()) + .build("DepositDoubleSpendError"); export const codecForPurseCreateConflict = (): Codec<PurseCreateConflict> => buildCodecForObject<PurseCreateConflict>() .property("code", codecForNumber())