@settlemint/dalp-cli 2.1.7-main.25957934277 → 2.1.7-main.25958450915

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/dalp.js +325 -30
  2. package/package.json +1 -1
package/dist/dalp.js CHANGED
@@ -64161,7 +64161,7 @@ var addonRegistry = [
64161
64161
  contractTypes: ["TokenSaleFactory"],
64162
64162
  hidden: false,
64163
64163
  configurable: false,
64164
- experimentalPrefix: true
64164
+ featurePrefix: true
64165
64165
  },
64166
64166
  {
64167
64167
  id: "vault",
@@ -64178,7 +64178,7 @@ var addonRegistry = [
64178
64178
  contractTypes: ["HistoricalBalancesFeatureUpgradeableFactory"],
64179
64179
  hidden: false,
64180
64180
  configurable: false,
64181
- experimentalPrefix: true
64181
+ featurePrefix: true
64182
64182
  },
64183
64183
  {
64184
64184
  id: "maturity-redemption-feature-factory",
@@ -64187,7 +64187,7 @@ var addonRegistry = [
64187
64187
  contractTypes: ["MaturityRedemptionFeatureFactory"],
64188
64188
  hidden: false,
64189
64189
  configurable: true,
64190
- experimentalPrefix: true
64190
+ featurePrefix: true
64191
64191
  },
64192
64192
  {
64193
64193
  id: "transaction-fee-feature-factory",
@@ -64196,7 +64196,7 @@ var addonRegistry = [
64196
64196
  contractTypes: ["TransactionFeeFeatureFactory"],
64197
64197
  hidden: false,
64198
64198
  configurable: true,
64199
- experimentalPrefix: true
64199
+ featurePrefix: true
64200
64200
  },
64201
64201
  {
64202
64202
  id: "transaction-fee-accounting-feature-factory",
@@ -64205,7 +64205,7 @@ var addonRegistry = [
64205
64205
  contractTypes: ["TransactionFeeAccountingFeatureFactory"],
64206
64206
  hidden: false,
64207
64207
  configurable: true,
64208
- experimentalPrefix: true
64208
+ featurePrefix: true
64209
64209
  },
64210
64210
  {
64211
64211
  id: "voting-power-feature-factory",
@@ -64214,7 +64214,7 @@ var addonRegistry = [
64214
64214
  contractTypes: ["VotingPowerFeatureUpgradeableFactory"],
64215
64215
  hidden: false,
64216
64216
  configurable: false,
64217
- experimentalPrefix: true
64217
+ featurePrefix: true
64218
64218
  },
64219
64219
  {
64220
64220
  id: "external-transaction-fee-feature-factory",
@@ -64223,7 +64223,7 @@ var addonRegistry = [
64223
64223
  contractTypes: ["ExternalTransactionFeeFeatureFactory"],
64224
64224
  hidden: false,
64225
64225
  configurable: true,
64226
- experimentalPrefix: true
64226
+ featurePrefix: true
64227
64227
  },
64228
64228
  {
64229
64229
  id: "fixed-treasury-yield-feature-factory",
@@ -64232,7 +64232,7 @@ var addonRegistry = [
64232
64232
  contractTypes: ["FixedTreasuryYieldFeatureFactory"],
64233
64233
  hidden: false,
64234
64234
  configurable: true,
64235
- experimentalPrefix: true
64235
+ featurePrefix: true
64236
64236
  },
64237
64237
  {
64238
64238
  id: "aum-fee-feature-factory",
@@ -64241,7 +64241,7 @@ var addonRegistry = [
64241
64241
  contractTypes: ["AUMFeeFeatureFactory"],
64242
64242
  hidden: false,
64243
64243
  configurable: true,
64244
- experimentalPrefix: true
64244
+ featurePrefix: true
64245
64245
  },
64246
64246
  {
64247
64247
  id: "conversion-feature-factory",
@@ -64250,7 +64250,7 @@ var addonRegistry = [
64250
64250
  contractTypes: ["ConversionFeatureFactory"],
64251
64251
  hidden: false,
64252
64252
  configurable: true,
64253
- experimentalPrefix: true
64253
+ featurePrefix: true
64254
64254
  },
64255
64255
  {
64256
64256
  id: "conversion-minter-feature-factory",
@@ -64260,7 +64260,7 @@ var addonRegistry = [
64260
64260
  hidden: false,
64261
64261
  configurable: false,
64262
64262
  dependsOn: ["conversion"],
64263
- experimentalPrefix: true
64263
+ featurePrefix: true
64264
64264
  },
64265
64265
  {
64266
64266
  id: "permit-feature-factory",
@@ -64269,7 +64269,7 @@ var addonRegistry = [
64269
64269
  contractTypes: ["PermitFeatureFactory"],
64270
64270
  hidden: false,
64271
64271
  configurable: false,
64272
- experimentalPrefix: true
64272
+ featurePrefix: true
64273
64273
  },
64274
64274
  {
64275
64275
  id: "scalar-feed-aggregator-adapter-factory",
@@ -64278,7 +64278,7 @@ var addonRegistry = [
64278
64278
  contractTypes: ["ScalarFeedAggregatorAdapterFactory"],
64279
64279
  hidden: false,
64280
64280
  configurable: false,
64281
- experimentalPrefix: true
64281
+ featurePrefix: true
64282
64282
  },
64283
64283
  {
64284
64284
  id: "issuer-signed-scalar-feed",
@@ -64287,7 +64287,7 @@ var addonRegistry = [
64287
64287
  contractTypes: ["IssuerSignedScalarFeedFactory"],
64288
64288
  hidden: false,
64289
64289
  configurable: false,
64290
- experimentalPrefix: true
64290
+ featurePrefix: true
64291
64291
  },
64292
64292
  {
64293
64293
  id: "paymaster-signer",
@@ -64296,7 +64296,7 @@ var addonRegistry = [
64296
64296
  contractTypes: ["PaymasterSigner"],
64297
64297
  hidden: false,
64298
64298
  configurable: false,
64299
- experimentalPrefix: true
64299
+ featurePrefix: true
64300
64300
  },
64301
64301
  {
64302
64302
  id: "price-resolver",
@@ -68090,6 +68090,21 @@ var DAPI_ROUTE_ERROR_ENTRIES = [
68090
68090
  expectedClientError: true
68091
68091
  })
68092
68092
  },
68093
+ {
68094
+ code: "SETTINGS_ASSET_TEMPLATE_FEATURES_INCOMPATIBLE",
68095
+ definition: dapiError({
68096
+ category: "domain",
68097
+ status: 409,
68098
+ message: "Template requiredFeatures has mutually-exclusive features enabled together: `transaction-fee` and `transaction-fee-accounting`. Remove one feature from each pair before publishing.",
68099
+ why: "Mutually-exclusive token features bind to the same on-chain or accounting path and would either double-account the same transfer or contradict each other. The registry models these pairs so the publish path can reject them before a token is created from the template.",
68100
+ fix: "Remove one feature from each conflicting pair in `requiredFeatures`, then retry the publish or update request.",
68101
+ retryable: false,
68102
+ expectedClientError: true,
68103
+ data: exports_external2.object({
68104
+ conflictingPairs: exports_external2.array(exports_external2.tuple([tokenFeatureIdSchema, tokenFeatureIdSchema]))
68105
+ })
68106
+ })
68107
+ },
68093
68108
  {
68094
68109
  code: "SETTINGS_COMPLIANCE_FAILED_TO_CREATE_TEMPLATE",
68095
68110
  definition: dapiError({
@@ -75753,6 +75768,14 @@ var TokenSchema = exports_external2.object({
75753
75768
  description: "Whether the user can execute the delegate action",
75754
75769
  examples: [true, false]
75755
75770
  }),
75771
+ delegateBySig: exports_external2.boolean().meta({
75772
+ description: "Whether the user can execute the delegateBySig action",
75773
+ examples: [true, false]
75774
+ }),
75775
+ permit: exports_external2.boolean().meta({
75776
+ description: "Whether the user can execute the permit action",
75777
+ examples: [true, false]
75778
+ }),
75756
75779
  publishTrigger: exports_external2.boolean().meta({
75757
75780
  description: "Whether the user can execute the publishTrigger action",
75758
75781
  examples: [true, false]
@@ -76996,9 +77019,9 @@ var stats = v1Contract.route({
76996
77019
  var addonTypes = addonRegistry.map((a) => a.id);
76997
77020
  var addonCategories = ["distribution", "exchange", "custody", "income", "data"];
76998
77021
  var addonFactoryTypeIds = [...addonTypes, "unknown"];
76999
- var EXPERIMENTAL_ADDON_TYPE_ALIAS_MAP = new Map(addonRegistry.filter((a) => a.experimentalPrefix === true).map((a) => {
77000
- const experimentalName = a.id.endsWith("-feature-factory") ? `${a.id.replace("-feature-factory", "")}__experimental__-feature-factory` : `${a.id}__experimental__`;
77001
- return [experimentalName, a.id];
77022
+ var FEATURE_PREFIX_ADDON_TYPE_ALIAS_MAP = new Map(addonRegistry.filter((a) => a.featurePrefix === true).map((a) => {
77023
+ const featureNamespaceName = a.id.endsWith("-feature-factory") ? `${a.id.replace("-feature-factory", "")}__experimental__-feature-factory` : `${a.id}__experimental__`;
77024
+ return [featureNamespaceName, a.id];
77002
77025
  }));
77003
77026
  var V1_ADDON_TYPE_ALIASES = Object.fromEntries(addonRegistry.flatMap((a) => (a.legacyAliases ?? []).map((alias) => [alias, a.id])));
77004
77027
  var AddonTypeSchema = exports_external2.enum(addonTypes).meta({
@@ -88976,6 +88999,9 @@ var TokenConversionMinterTargetInputSchema = exports_external2.object({
88976
88999
  var TokenConversionMinterMutationInputSchema = TokenMutationInputSchema.extend({
88977
89000
  tokenAddress: conversionMinterTargetTokenAddress
88978
89001
  });
89002
+ var futureBlocktimeOrZero = () => blocktime().refine((seconds) => seconds === "0" || Number(seconds) > Math.floor(Date.now() / 1000), {
89003
+ message: "Blocktime must be in the future"
89004
+ });
88979
89005
  var TokenPublishTriggerInputSchema = TokenMutationInputSchema.extend({
88980
89006
  triggerId: ethereumHash.meta({
88981
89007
  description: "Unique trigger identifier as bytes32 hex",
@@ -88989,7 +89015,7 @@ var TokenPublishTriggerInputSchema = TokenMutationInputSchema.extend({
88989
89015
  description: "Price per share in WAD format",
88990
89016
  examples: ["1000000000000000000"]
88991
89017
  }),
88992
- expiresAt: blocktime().meta({
89018
+ expiresAt: futureBlocktimeOrZero().meta({
88993
89019
  description: "Expiration timestamp",
88994
89020
  examples: ["1700000000"]
88995
89021
  }),
@@ -89009,7 +89035,7 @@ var TokenSetConversionWindowInputSchema = TokenMutationInputSchema.extend({
89009
89035
  description: "Window start timestamp",
89010
89036
  examples: ["1700000000"]
89011
89037
  }),
89012
- end: blocktime().meta({
89038
+ end: futureBlocktimeOrZero().meta({
89013
89039
  description: "Window end timestamp",
89014
89040
  examples: ["1700086400"]
89015
89041
  })
@@ -89156,12 +89182,74 @@ var TokenSetFeeExemptionInputSchema = TokenMutationInputSchema.extend({
89156
89182
  examples: [true, false]
89157
89183
  })
89158
89184
  });
89185
+ var MAX_UINT2562 = (1n << 256n) - 1n;
89186
+ var bytes32Hex = exports_external2.string().regex(/^0x[\da-fA-F]{64}$/, "Must be a 66-character hex string (0x + 64 hex chars)").transform((v) => v);
89187
+ var uint256 = apiIntegerBigInt.refine((value3) => value3 >= 0n && value3 <= MAX_UINT2562, {
89188
+ message: "Value must fit within uint256"
89189
+ });
89159
89190
  var TokenDelegateInputSchema = TokenMutationInputSchema.extend({
89160
89191
  delegatee: ethereumAddress.meta({
89161
89192
  description: "The address to delegate voting power to",
89162
89193
  examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
89163
89194
  })
89164
89195
  });
89196
+ var TokenDelegateBySigInputSchema = TokenDelegateInputSchema.extend({
89197
+ nonce: uint256.meta({
89198
+ description: "Current nonce for the signing account",
89199
+ examples: ["0"]
89200
+ }),
89201
+ expiry: uint256.meta({
89202
+ description: "Signature expiry timestamp as a Unix time in seconds",
89203
+ examples: ["1767225600"]
89204
+ }),
89205
+ v: exports_external2.number().int().refine((value3) => value3 === 27 || value3 === 28, { message: "v must be 27 or 28" }).meta({
89206
+ description: "ECDSA recovery id",
89207
+ examples: [27]
89208
+ }),
89209
+ r: bytes32Hex.meta({
89210
+ description: "ECDSA signature r value",
89211
+ examples: ["0x71c7656ec7ab88b098defb751b7401b5f6d8976f71c7656ec7ab88b098defb75"]
89212
+ }),
89213
+ s: bytes32Hex.meta({
89214
+ description: "ECDSA signature s value",
89215
+ examples: ["0x71c7656ec7ab88b098defb751b7401b5f6d8976f71c7656ec7ab88b098defb75"]
89216
+ })
89217
+ });
89218
+ var MAX_UINT2563 = (1n << 256n) - 1n;
89219
+ var bytes32Hex2 = exports_external2.string().regex(/^0x[\da-fA-F]{64}$/, "Must be a 66-character hex string (0x + 64 hex chars)").transform((v) => v);
89220
+ var uint2562 = apiIntegerBigInt.refine((value3) => value3 >= 0n && value3 <= MAX_UINT2563, {
89221
+ message: "Value must fit within uint256"
89222
+ });
89223
+ var TokenPermitInputSchema = TokenMutationInputSchema.extend({
89224
+ owner: ethereumAddress.meta({
89225
+ description: "The token holder that signed the permit.",
89226
+ examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
89227
+ }),
89228
+ spender: ethereumAddress.meta({
89229
+ description: "The address approved to spend the holder's tokens.",
89230
+ examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
89231
+ }),
89232
+ value: uint2562.meta({
89233
+ description: "Approved token amount in the token's smallest units.",
89234
+ examples: ["1000000000000000000"]
89235
+ }),
89236
+ deadline: uint2562.meta({
89237
+ description: "Signature deadline timestamp as a Unix time in seconds.",
89238
+ examples: ["1767225600"]
89239
+ }),
89240
+ v: exports_external2.number().int().refine((value3) => value3 === 27 || value3 === 28, { message: "v must be 27 or 28" }).meta({
89241
+ description: "ECDSA recovery id.",
89242
+ examples: [27]
89243
+ }),
89244
+ r: bytes32Hex2.meta({
89245
+ description: "ECDSA signature r value.",
89246
+ examples: ["0x71c7656ec7ab88b098defb751b7401b5f6d8976f71c7656ec7ab88b098defb75"]
89247
+ }),
89248
+ s: bytes32Hex2.meta({
89249
+ description: "ECDSA signature s value.",
89250
+ examples: ["0x71c7656ec7ab88b098defb751b7401b5f6d8976f71c7656ec7ab88b098defb75"]
89251
+ })
89252
+ });
89165
89253
  var TokenClaimYieldInputSchema = TokenMutationInputSchema.extend({});
89166
89254
  var TokenSetYieldTreasuryInputSchema = TokenMutationInputSchema.extend({
89167
89255
  treasury: ethereumAddress.meta({
@@ -89181,13 +89269,13 @@ var TokenFeatureApproveYieldAllowanceInputSchema = TokenMutationInputSchema.exte
89181
89269
  examples: ["1000000000000000000"]
89182
89270
  })
89183
89271
  });
89184
- var MAX_UINT2562 = (1n << 256n) - 1n;
89272
+ var MAX_UINT2564 = (1n << 256n) - 1n;
89185
89273
  var TokenFeatureFixedTreasuryYieldCreateBaseSchema = TokenMutationInputSchema.extend({
89186
89274
  denominationAsset: ethereumAddress.refine((v) => v !== zeroAddress, "denominationAsset must not be the zero address").meta({
89187
89275
  description: "ERC20 address whose decimals back the yield payouts.",
89188
89276
  examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
89189
89277
  }),
89190
- basisPerUnit: apiIntegerBigInt.refine((value3) => value3 > 0n && value3 <= MAX_UINT2562, {
89278
+ basisPerUnit: apiIntegerBigInt.refine((value3) => value3 > 0n && value3 <= MAX_UINT2564, {
89191
89279
  message: "basisPerUnit must be > 0 and fit within uint256"
89192
89280
  }).meta({
89193
89281
  description: "The basis (in denomination-asset base units) per one token unit used to size yield accrual.",
@@ -89819,6 +89907,20 @@ var delegate = v2Contract.route({
89819
89907
  successDescription: "Voting power delegated successfully.",
89820
89908
  tags: [V2_TAG.token]
89821
89909
  }).meta({ contractErrors: [...COMMON_CONTRACT_ERRORS] }).input(v2Input.paramsBody(TokenReadInputSchema, TokenDelegateInputSchema.omit({ tokenAddress: true }))).output(mutationOutput);
89910
+ var delegateBySig = v2Contract.route({
89911
+ method: "POST",
89912
+ path: "/tokens/{tokenAddress}/voting-power/delegations/by-signature",
89913
+ description: "Relay a signed voting-power delegation.",
89914
+ successDescription: "Voting power delegation relayed successfully.",
89915
+ tags: [V2_TAG.token]
89916
+ }).meta({ contractErrors: [...COMMON_CONTRACT_ERRORS] }).input(v2Input.paramsBody(TokenReadInputSchema, TokenDelegateBySigInputSchema.omit({ tokenAddress: true }))).output(mutationOutput);
89917
+ var permit = v2Contract.route({
89918
+ method: "POST",
89919
+ path: "/tokens/{tokenAddress}/permits",
89920
+ description: "Relay a signed EIP-2612 permit approval through the transaction queue.",
89921
+ successDescription: "Permit approval relayed successfully.",
89922
+ tags: [V2_TAG.token]
89923
+ }).meta({ contractErrors: [...COMMON_CONTRACT_ERRORS, "DALP-9026", "DALP-9027"] }).input(v2Input.paramsBody(TokenReadInputSchema, TokenPermitInputSchema.omit({ tokenAddress: true }))).output(mutationOutput);
89822
89924
  var publishTrigger = v2Contract.route({
89823
89925
  method: "POST",
89824
89926
  path: "/tokens/{tokenAddress}/conversion/triggers",
@@ -89940,6 +90042,8 @@ var tokenV2MutationsContract = {
89940
90042
  reconcileFees,
89941
90043
  setFeeExemption,
89942
90044
  delegate,
90045
+ delegateBySig,
90046
+ permit,
89943
90047
  publishTrigger,
89944
90048
  disableTrigger,
89945
90049
  setConversionWindow,
@@ -90082,12 +90186,7 @@ var TokenFeatureFixedTreasuryYieldSchema = exports_external2.object({
90082
90186
  examples: [[]]
90083
90187
  })
90084
90188
  }).nullable();
90085
- var TokenFeatureVotingPowerSchema = exports_external2.object({
90086
- enabledAt: timestamp().meta({
90087
- description: "When voting power was enabled",
90088
- examples: ["2024-11-14T22:13:20Z"]
90089
- })
90090
- }).nullable();
90189
+ var TokenFeatureVotingPowerSchema = exports_external2.object({}).nullable();
90091
90190
  var TokenFeatureExternalTransactionFeeSchema = exports_external2.object({
90092
90191
  feeToken: ethereumAddress.meta({
90093
90192
  description: "ERC-20 token used to pay fees",
@@ -90175,6 +90274,26 @@ var TokenFeatureConversionMinterSchema = exports_external2.object({
90175
90274
  examples: ["50000.00"]
90176
90275
  })
90177
90276
  }).nullable();
90277
+ var TokenFeaturePermitSchema = exports_external2.object({
90278
+ typeId: exports_external2.literal("permit").meta({
90279
+ description: "Permit feature type identifier",
90280
+ examples: ["permit"]
90281
+ }),
90282
+ featureFactory: exports_external2.object({
90283
+ typeId: exports_external2.string().meta({
90284
+ description: "Permit feature factory type identifier",
90285
+ examples: ["permit-feature-factory"]
90286
+ }),
90287
+ name: exports_external2.string().meta({
90288
+ description: "Human-readable name of the permit feature factory",
90289
+ examples: ["Permit Feature Factory"]
90290
+ })
90291
+ }),
90292
+ attachedAt: timestamp().meta({
90293
+ description: "When the permit feature was attached",
90294
+ examples: ["2024-11-14T22:13:20Z"]
90295
+ })
90296
+ }).nullable();
90178
90297
  var TokenFeatureSchema = exports_external2.object({
90179
90298
  featureAddress: ethereumAddress.meta({
90180
90299
  description: "Feature contract address",
@@ -90245,6 +90364,10 @@ var TokenFeatureSchema = exports_external2.object({
90245
90364
  conversionMinter: TokenFeatureConversionMinterSchema.meta({
90246
90365
  description: "Conversion minter configuration, null if not applicable",
90247
90366
  examples: [null]
90367
+ }),
90368
+ permit: TokenFeaturePermitSchema.meta({
90369
+ description: "Permit metadata, null if not applicable",
90370
+ examples: [null]
90248
90371
  })
90249
90372
  });
90250
90373
  var TokenFeaturesResponseSchema = exports_external2.object({
@@ -90298,6 +90421,26 @@ var TokenAumFeeAccruedEstimateResponseSchema = exports_external2.object({
90298
90421
  examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
90299
90422
  })
90300
90423
  }).nullable();
90424
+ var TokenConversionHolderStateInputSchema = TokenReadInputSchema.extend({
90425
+ holderAddress: ethereumAddress.meta({
90426
+ description: "The holder wallet address to query on the attached conversion feature",
90427
+ examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
90428
+ })
90429
+ });
90430
+ var TokenConversionHolderStateResponseSchema = exports_external2.object({
90431
+ availablePrincipal: bigDecimal().meta({
90432
+ description: "Current principal available for this holder to convert (token units, scaled by token decimals).",
90433
+ examples: ["100.50"]
90434
+ }),
90435
+ totalConverted: bigDecimal().meta({
90436
+ description: "Total principal already converted by this holder (token units, scaled by token decimals).",
90437
+ examples: ["25.00"]
90438
+ }),
90439
+ featureAddress: ethereumAddress.meta({
90440
+ description: "Conversion feature contract address that was read.",
90441
+ examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
90442
+ })
90443
+ }).nullable();
90301
90444
  var TokenMetadataInputSchema = TokenReadInputSchema;
90302
90445
  var TokenMetadataEntrySchema = exports_external2.object({
90303
90446
  key: exports_external2.string().meta({
@@ -90340,6 +90483,34 @@ var TokenMetadataResponseSchema = exports_external2.object({
90340
90483
  })
90341
90484
  }).nullable()
90342
90485
  });
90486
+ var TokenPermitInfoInputSchema = TokenReadInputSchema.extend({
90487
+ owner: ethereumAddress.optional().meta({
90488
+ description: "Optional holder address whose permit nonce should be read.",
90489
+ examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
90490
+ })
90491
+ });
90492
+ var TokenPermitInfoResponseSchema = exports_external2.object({
90493
+ featureAddress: ethereumAddress.meta({
90494
+ description: "Permit feature contract address that was read.",
90495
+ examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
90496
+ }),
90497
+ owner: ethereumAddress.nullable().meta({
90498
+ description: "Owner address whose nonce was read, or null when no owner was requested.",
90499
+ examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
90500
+ }),
90501
+ nonce: apiBigInt.nullable().meta({
90502
+ description: "Current permit nonce for the requested owner, or null when no owner was requested.",
90503
+ examples: ["0"]
90504
+ }),
90505
+ domainSeparator: ethereumHash.meta({
90506
+ description: "EIP-712 domain separator reported by the permit feature.",
90507
+ examples: ["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"]
90508
+ }),
90509
+ permitTypeHash: ethereumHash.meta({
90510
+ description: "EIP-712 Permit struct typehash used by the feature.",
90511
+ examples: ["0x6e71edae12b1b97f4d1f60370fef10178563ef29188d1232f565f79b8f6aad8c"]
90512
+ })
90513
+ }).nullable();
90343
90514
  var ConversionTriggerSchema = exports_external2.object({
90344
90515
  triggerId: exports_external2.string().meta({
90345
90516
  description: "On-chain trigger ID (bytes32 hex)",
@@ -90417,6 +90588,41 @@ var ConversionTriggersV2InputSchema = createCollectionInputSchema(CONVERSION_TRI
90417
90588
  globalSearch: false
90418
90589
  });
90419
90590
  var ConversionTriggersV2OutputSchema = createPaginatedResponse(ConversionTriggerSchema);
90591
+ var CONVERSION_RECORD_STATUS_OPTIONS = ["Initiated", "Minted"];
90592
+ var CONVERSION_RECORDS_COLLECTION_FIELDS = {
90593
+ holder: addressField({ defaultOperator: "iLike" }),
90594
+ status: enumField(CONVERSION_RECORD_STATUS_OPTIONS, { facetable: true }),
90595
+ initiatedAt: dateField(),
90596
+ finalizedAt: dateField(),
90597
+ isForced: booleanField({ facetable: true })
90598
+ };
90599
+ var ConversionRecordsV2InputSchema = createCollectionInputSchema(CONVERSION_RECORDS_COLLECTION_FIELDS, {
90600
+ defaultSort: "-initiatedAt",
90601
+ globalSearch: false
90602
+ });
90603
+ var ConversionRecordV2ItemSchema = exports_external2.object({
90604
+ conversionId: exports_external2.string(),
90605
+ triggerId: exports_external2.string(),
90606
+ holder: ethereumAddress,
90607
+ principalConverted: bigDecimal(),
90608
+ principalConvertedExact: apiBigInt,
90609
+ interestConvertedWad: bigDecimal(),
90610
+ interestConvertedWadExact: apiBigInt,
90611
+ targetReceived: bigDecimal(),
90612
+ targetReceivedExact: apiBigInt,
90613
+ effectivePriceUsedWad: bigDecimal(),
90614
+ effectivePriceUsedWadExact: apiBigInt,
90615
+ status: exports_external2.enum(CONVERSION_RECORD_STATUS_OPTIONS),
90616
+ initiatedAt: timestamp(),
90617
+ finalizedAt: timestamp().nullable(),
90618
+ isForced: exports_external2.boolean(),
90619
+ forcedBy: ethereumAddress.nullable(),
90620
+ issuedRecipient: ethereumAddress.nullable(),
90621
+ amountMinted: bigDecimal().nullable(),
90622
+ amountMintedExact: apiBigInt.nullable(),
90623
+ issuedAt: timestamp().nullable()
90624
+ });
90625
+ var ConversionRecordsV2OutputSchema = createPaginatedResponse(ConversionRecordV2ItemSchema);
90420
90626
  var DenominationAssetV2ItemSchema = DenominationAssetListSchema.element;
90421
90627
  var DENOMINATION_ASSETS_COLLECTION_FIELDS = {
90422
90628
  assetType: enumField(assetTypes, { defaultOperator: "eq", facetable: true }),
@@ -90677,6 +90883,55 @@ var TokenHistoricalBalanceV2ItemSchema = exports_external2.object({
90677
90883
  logIndex: exports_external2.number().int().nonnegative()
90678
90884
  });
90679
90885
  var TokenHistoricalBalancesV2OutputSchema = createPaginatedResponse(TokenHistoricalBalanceV2ItemSchema);
90886
+ var strictHistoricalLookup = exports_external2.union([exports_external2.boolean(), exports_external2.enum(["true", "false"]).transform((value3) => value3 === "true")]).optional().default(true);
90887
+ var historicalTimepoint = apiBigInt.refine((value3) => value3 >= 0n, {
90888
+ message: "timepoint must be greater than or equal to 0"
90889
+ });
90890
+ var TokenHistoricalBalanceAtBlockV2InputQuerySchema = exports_external2.object({
90891
+ account: ethereumAddress.meta({
90892
+ description: "Holder account to read from the historical-balances feature",
90893
+ examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
90894
+ }),
90895
+ timepoint: historicalTimepoint.meta({
90896
+ description: "Historical feature clock timepoint, expressed as Unix seconds for timestamp-mode tokens",
90897
+ examples: ["1767225600"]
90898
+ }),
90899
+ strict: strictHistoricalLookup.meta({
90900
+ description: "Use the strict feature read variants, which reject timepoints before tracking was enabled",
90901
+ examples: [true]
90902
+ })
90903
+ });
90904
+ var TokenHistoricalBalanceAtBlockV2DataSchema = exports_external2.object({
90905
+ account: ethereumAddress,
90906
+ balance: bigDecimal(),
90907
+ balanceExact: apiBigInt,
90908
+ totalSupply: bigDecimal(),
90909
+ totalSupplyExact: apiBigInt,
90910
+ timepoint: apiBigInt,
90911
+ featureAddress: ethereumAddress
90912
+ });
90913
+ var TokenHistoricalBalanceAtBlockV2OutputSchema = createSingleResponse(TokenHistoricalBalanceAtBlockV2DataSchema.nullable());
90914
+ var TOKEN_HISTORICAL_HOLDERS_AT_BLOCK_COLLECTION_FIELDS = {
90915
+ accountAddress: textField({ sortable: true, defaultOperator: "iLike" }),
90916
+ balance: bigintField({ filterable: false }),
90917
+ lastUpdatedAt: dateField({ filterable: false })
90918
+ };
90919
+ var TokenHistoricalHoldersAtBlockV2InputSchema = exports_external2.object({
90920
+ sortBy: exports_external2.enum(["accountAddress", "balance", "lastUpdatedAt"]).default("balance"),
90921
+ sortDirection: exports_external2.enum(["asc", "desc"]).default("desc"),
90922
+ offset: exports_external2.coerce.number().int().nonnegative().default(0),
90923
+ limit: exports_external2.coerce.number().int().positive().max(200).default(50),
90924
+ filters: exports_external2.array(DataTableFilterSchema).default([]),
90925
+ timepoint: historicalTimepoint.meta({
90926
+ description: "Historical feature clock timepoint, expressed as Unix seconds for timestamp-mode tokens",
90927
+ examples: ["1767225600"]
90928
+ }),
90929
+ strict: strictHistoricalLookup.meta({
90930
+ description: "Use the strict feature read variant, which rejects timepoints before tracking was enabled",
90931
+ examples: [true]
90932
+ })
90933
+ });
90934
+ var TokenHistoricalHoldersAtBlockV2OutputSchema = createPaginatedResponse(assetBalance());
90680
90935
  var OPERATION_TYPE_OPTIONS = ["mint", "burn", "transfer", "redeem"];
90681
90936
  var TOKEN_TRANSACTION_FEE_COLLECTIONS_COLLECTION_FIELDS = {
90682
90937
  collectedAt: dateField(),
@@ -90919,6 +91174,20 @@ var conversionTriggers = v2Contract.route({
90919
91174
  successDescription: "Paginated list of conversion triggers with effective pricing.",
90920
91175
  tags: [V2_TAG.token]
90921
91176
  }).input(v2Input.paramsQuery(exports_external2.object({ tokenAddress: TokenReadInputSchema.shape.tokenAddress }), ConversionTriggersV2InputSchema)).output(ConversionTriggersV2OutputSchema);
91177
+ var conversionRecords = v2Contract.route({
91178
+ method: "GET",
91179
+ path: "/tokens/{tokenAddress}/conversion/records",
91180
+ description: "List conversion lifecycle records for a token. Includes conversion-minter issuance details when available. Supports JSON:API pagination, sorting, filtering, and faceted counts.",
91181
+ successDescription: "Paginated list of conversion records.",
91182
+ tags: [V2_TAG.token]
91183
+ }).input(v2Input.paramsQuery(exports_external2.object({ tokenAddress: TokenReadInputSchema.shape.tokenAddress }), ConversionRecordsV2InputSchema)).output(ConversionRecordsV2OutputSchema);
91184
+ var conversionHolderState = v2Contract.route({
91185
+ method: "GET",
91186
+ path: "/tokens/{tokenAddress}/conversion/holder-state",
91187
+ description: "Read holder-specific conversion state from the token's attached conversion feature. Returns null when no conversion feature is attached.",
91188
+ successDescription: "Conversion holder state retrieved successfully.",
91189
+ tags: [V2_TAG.token]
91190
+ }).input(v2Input.paramsQuery(exports_external2.object({ tokenAddress: TokenConversionHolderStateInputSchema.shape.tokenAddress }), exports_external2.object(TokenConversionHolderStateInputSchema.shape).omit({ tokenAddress: true }))).output(createSingleResponse(TokenConversionHolderStateResponseSchema));
90922
91191
  var votingDelegations = v2Contract.route({
90923
91192
  method: "GET",
90924
91193
  path: "/tokens/{tokenAddress}/voting-delegations",
@@ -90926,6 +91195,13 @@ var votingDelegations = v2Contract.route({
90926
91195
  successDescription: "Paginated list of voting delegation lifecycle rows.",
90927
91196
  tags: [V2_TAG.token]
90928
91197
  }).input(v2Input.paramsQuery(exports_external2.object({ tokenAddress: TokenReadInputSchema.shape.tokenAddress }), VotingDelegationsV2InputSchema)).output(VotingDelegationsV2OutputSchema);
91198
+ var permitInfo = v2Contract.route({
91199
+ method: "GET",
91200
+ path: "/tokens/{tokenAddress}/permit-info",
91201
+ description: "Read EIP-2612 permit metadata from the token's attached permit feature, including the domain separator and optional owner nonce.",
91202
+ successDescription: "Permit feature metadata retrieved successfully.",
91203
+ tags: [V2_TAG.token]
91204
+ }).input(v2Input.paramsQuery(exports_external2.object({ tokenAddress: TokenPermitInfoInputSchema.shape.tokenAddress }), exports_external2.object(TokenPermitInfoInputSchema.shape).omit({ tokenAddress: true }))).output(createSingleResponse(TokenPermitInfoResponseSchema));
90929
91205
  var historicalBalances = v2Contract.route({
90930
91206
  method: "GET",
90931
91207
  path: "/tokens/{tokenAddress}/historical-balances",
@@ -90933,6 +91209,20 @@ var historicalBalances = v2Contract.route({
90933
91209
  successDescription: "Paginated list of historical balance checkpoints.",
90934
91210
  tags: [V2_TAG.token]
90935
91211
  }).input(v2Input.paramsQuery(exports_external2.object({ tokenAddress: TokenReadInputSchema.shape.tokenAddress }), TokenHistoricalBalancesV2InputSchema)).output(TokenHistoricalBalancesV2OutputSchema);
91212
+ var historicalBalanceAtBlock = v2Contract.route({
91213
+ method: "GET",
91214
+ path: "/tokens/{tokenAddress}/historical-balances/balance-at-block",
91215
+ description: "Read a holder balance and total supply from the token's attached historical-balances feature at a specific feature clock timepoint.",
91216
+ successDescription: "Historical balance snapshot retrieved successfully.",
91217
+ tags: [V2_TAG.token]
91218
+ }).input(v2Input.paramsQuery(exports_external2.object({ tokenAddress: TokenReadInputSchema.shape.tokenAddress }), TokenHistoricalBalanceAtBlockV2InputQuerySchema)).output(TokenHistoricalBalanceAtBlockV2OutputSchema);
91219
+ var historicalHoldersAtBlock = v2Contract.route({
91220
+ method: "GET",
91221
+ path: "/tokens/{tokenAddress}/historical-balances/holders-at-block",
91222
+ description: "List holder balances read from the token's attached historical-balances feature at a specific feature clock timepoint.",
91223
+ successDescription: "Paginated historical holder snapshot retrieved successfully.",
91224
+ tags: [V2_TAG.token]
91225
+ }).input(v2Input.paramsQuery(exports_external2.object({ tokenAddress: TokenReadInputSchema.shape.tokenAddress }), TokenHistoricalHoldersAtBlockV2InputSchema)).output(TokenHistoricalHoldersAtBlockV2OutputSchema);
90936
91226
  var transactionFeeCollections = v2Contract.route({
90937
91227
  method: "GET",
90938
91228
  path: "/tokens/{tokenAddress}/transaction-fee/collections",
@@ -90969,8 +91259,13 @@ var tokenV2ReadsContract = {
90969
91259
  metadata: tokenMetadata,
90970
91260
  transferApprovals,
90971
91261
  conversionTriggers,
91262
+ conversionRecords,
91263
+ conversionHolderState,
90972
91264
  votingDelegations,
91265
+ permitInfo,
90973
91266
  historicalBalances,
91267
+ historicalBalanceAtBlock,
91268
+ historicalHoldersAtBlock,
90974
91269
  transactionFeeCollections,
90975
91270
  feeAccrualEvents,
90976
91271
  externalFeeCollectionEvents,
@@ -92502,7 +92797,7 @@ function normalizeDalpBaseUrl(url3) {
92502
92797
  }
92503
92798
  var package_default = {
92504
92799
  name: "@settlemint/dalp-sdk",
92505
- version: "2.1.7-main.25957934277",
92800
+ version: "2.1.7-main.25958450915",
92506
92801
  private: false,
92507
92802
  description: "Fully typed SDK for the DALP tokenization platform API",
92508
92803
  homepage: "https://settlemint.com",
@@ -93074,7 +93369,7 @@ function toStandardWebhookSecret(secret) {
93074
93369
  // package.json
93075
93370
  var package_default2 = {
93076
93371
  name: "@settlemint/dalp-cli",
93077
- version: "2.1.7-main.25957934277",
93372
+ version: "2.1.7-main.25958450915",
93078
93373
  private: false,
93079
93374
  description: "CLI for the Digital Asset Lifecycle Platform — manage tokens, identities, compliance, and more from the command line.",
93080
93375
  homepage: "https://settlemint.com",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@settlemint/dalp-cli",
3
- "version": "2.1.7-main.25957934277",
3
+ "version": "2.1.7-main.25958450915",
4
4
  "private": false,
5
5
  "description": "CLI for the Digital Asset Lifecycle Platform — manage tokens, identities, compliance, and more from the command line.",
6
6
  "homepage": "https://settlemint.com",