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:
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())