@settlemint/dalp-cli 3.0.7-main.28619722466 → 3.0.7-main.28642122124

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 +168 -8
  2. package/package.json +1 -1
package/dist/dalp.js CHANGED
@@ -133591,6 +133591,23 @@ var InvitationV2InviteWithRolesOutputSchema = exports_external.object({
133591
133591
  onChainRoles: exports_external.array(systemAccessControlRole),
133592
133592
  expiresAt: timestamp()
133593
133593
  });
133594
+ var InvitationV2ResendWithRolesInputSchema = exports_external.object({
133595
+ invitationId: exports_external.string().min(1, "invitationId is required"),
133596
+ walletVerification: UserVerificationSchema.optional()
133597
+ });
133598
+ var InvitationV2ResendWithRolesOutputSchema = exports_external.object({
133599
+ id: exports_external.string(),
133600
+ email: exports_external.string(),
133601
+ role: exports_external.string(),
133602
+ status: exports_external.enum(["pending", "accepted", "rejected", "canceled"]),
133603
+ expiresAt: timestamp()
133604
+ });
133605
+ var InvitationV2HasOnChainRolesParamsSchema = exports_external.object({
133606
+ invitationId: exports_external.string().min(1, "invitationId is required")
133607
+ });
133608
+ var InvitationV2HasOnChainRolesOutputSchema = exports_external.object({
133609
+ hasOnChainRoles: exports_external.boolean()
133610
+ });
133594
133611
  var TAGS30 = [V2_TAG.invitation];
133595
133612
  var deploy = v2Contract.route({
133596
133613
  method: "POST",
@@ -133634,13 +133651,29 @@ var inviteWithRoles = v2Contract.route({
133634
133651
  successDescription: "Invitation created with the selected on-chain roles recorded and authorized.",
133635
133652
  tags: [...TAGS30]
133636
133653
  }).input(v2Input.body(InvitationV2InviteWithRolesInputSchema)).output(InvitationV2InviteWithRolesOutputSchema);
133654
+ var resendWithRoles = v2Contract.route({
133655
+ method: "POST",
133656
+ path: "/role-invitation-resends",
133657
+ description: "Re-issue a role-bearing invitation with its original on-chain roles preserved, gated on the inviter's wallet verification (PIN / OTP / OIDC-MFA). The roles are sourced server-side from the existing invitation (tenant-scoped, keyed by invitationId) — the client supplies only the invitation id and a PIN, never the roles. The standard resend path drops the invite-time roles; this route preserves them. Role-less invitations use the standard resend path instead.",
133658
+ successDescription: "Invitation re-issued with the original on-chain roles recorded and re-authorized.",
133659
+ tags: [...TAGS30]
133660
+ }).input(v2Input.body(InvitationV2ResendWithRolesInputSchema)).output(InvitationV2ResendWithRolesOutputSchema);
133661
+ var hasOnChainRoles = v2Contract.route({
133662
+ method: "GET",
133663
+ path: "/role-invitations/{invitationId}/has-roles",
133664
+ description: "Report whether an invitation carries at least one authorized on-chain role (existence, not authority). The resend dialog reads this to decide the PIN-gated vs no-PIN resend path. Returns only the derived boolean — never the role list, which stays server-only.",
133665
+ successDescription: "Derived boolean indicating whether the invitation carries on-chain roles.",
133666
+ tags: [...TAGS30]
133667
+ }).input(v2Input.params(InvitationV2HasOnChainRolesParamsSchema)).output(InvitationV2HasOnChainRolesOutputSchema);
133637
133668
  var invitationV2Contract = {
133638
133669
  deploy,
133639
133670
  accept,
133640
133671
  deployStream,
133641
133672
  deployStatus,
133642
133673
  retry,
133643
- inviteWithRoles
133674
+ inviteWithRoles,
133675
+ resendWithRoles,
133676
+ hasOnChainRoles
133644
133677
  };
133645
133678
  var Bytes32HashSchema = exports_external.string().regex(/^0x[0-9a-fA-F]{64}$/, "Expected a 0x-prefixed bytes32 hex string");
133646
133679
  var MetadataV2ReadInputSchema = exports_external.object({
@@ -133895,6 +133928,92 @@ var AssumableParticipantsV2ListInputSchema = AssumableParticipantsCollectionInpu
133895
133928
  }
133896
133929
  });
133897
133930
  var AssumableParticipantsV2ListOutputSchema = createPaginatedResponse(AssumableParticipantSchema);
133931
+ var HoldingWalletTypeSchema = exports_external.enum(["eoa", "smart"]).meta({
133932
+ description: "Account type holding this balance: `smart` (smart account) or `eoa` (key account)."
133933
+ });
133934
+ var HoldingTransferVerdictSchema = exports_external.enum(["transferable", "restricted"]).meta({
133935
+ description: "Transfer verdict evaluated against the holding participant's identity, independent of the viewer. `restricted` gates the Transfer action."
133936
+ });
133937
+ var HoldingAssetClassSchema = exports_external.object({
133938
+ id: exports_external.string().meta({ description: "Asset class definition id.", examples: ["cls_equity"] }),
133939
+ slug: exports_external.string().meta({ description: "Asset class slug used for grouping.", examples: ["equity", "cash"] }),
133940
+ name: exports_external.string().meta({ description: "Human-readable asset class name.", examples: ["Equity", "Cash"] })
133941
+ }).meta({ description: "Asset class the token belongs to." });
133942
+ var HoldingTokenSchema = exports_external.object({
133943
+ id: ethereumAddress.meta({
133944
+ description: "The token contract address.",
133945
+ examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
133946
+ }),
133947
+ name: exports_external.string().meta({ description: "The token name.", examples: ["Acme Series A"] }),
133948
+ symbol: assetSymbol().meta({ description: "The token symbol.", examples: ["ACME", "USDC"] }),
133949
+ type: assetType().or(exports_external.string().min(1)).meta({
133950
+ description: "Asset type — known system types or custom template slugs. Drives the asset detail route.",
133951
+ examples: ["equity", "bond", "custom-deposit"]
133952
+ }),
133953
+ isExternal: exports_external.boolean().meta({
133954
+ description: "True when the token is registered through the ExternalTokenRegistry rather than deployed by a system factory.",
133955
+ examples: [false, true]
133956
+ }),
133957
+ decimals: decimals().meta({ description: "The number of decimal places.", examples: [18, 6] })
133958
+ });
133959
+ var ParticipantHoldingV2ItemSchema = exports_external.object({
133960
+ id: exports_external.string().meta({
133961
+ description: "Stable row identifier — the token address and wallet address joined.",
133962
+ examples: ["0x71c7…976f:0x8ba1…ba72"]
133963
+ }),
133964
+ token: HoldingTokenSchema.meta({ description: "The token details.", examples: [] }),
133965
+ assetClass: HoldingAssetClassSchema.nullable().meta({
133966
+ description: "The token's asset class. Null for external tokens (no template) — rendered under External tokens.",
133967
+ examples: [null]
133968
+ }),
133969
+ walletAddress: ethereumAddress.meta({
133970
+ description: "The participant wallet address that holds this balance.",
133971
+ examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
133972
+ }),
133973
+ walletType: HoldingWalletTypeSchema,
133974
+ balance: bigDecimal().meta({ description: "The total balance amount (scaled by decimals).", examples: ["250"] }),
133975
+ frozen: bigDecimal().meta({ description: "The frozen balance amount.", examples: ["0", "50"] }),
133976
+ available: bigDecimal().meta({
133977
+ description: "The available balance amount (total minus frozen; zero when the whole address is frozen).",
133978
+ examples: ["250", "200"]
133979
+ }),
133980
+ valueInBaseCurrency: bigDecimal().nullable().meta({
133981
+ description: "Available balance multiplied by the token's resolved base-currency price. Null when no FX/price path is available.",
133982
+ examples: ["5.00", null]
133983
+ }),
133984
+ priceInBaseCurrencyReliable: exports_external.boolean().meta({
133985
+ description: "Whether the FX chain used to populate the base-currency price was fully reliable. False when no price is available or a hop fell back to a stale rate.",
133986
+ examples: [true, false]
133987
+ }),
133988
+ transferVerdict: HoldingTransferVerdictSchema,
133989
+ restrictionReason: exports_external.string().nullable().meta({
133990
+ description: "Reason a row is restricted (e.g. `frozen`, `identity pending`). Null for transferable rows; the UI renders a generic reason when a restricted row carries no specific reason.",
133991
+ examples: ["frozen", "identity pending", null]
133992
+ })
133993
+ });
133994
+ var ParticipantHoldingsParamsSchema = exports_external.object({
133995
+ participantId: exports_external.string().min(1).meta({
133996
+ description: "Identifier of the participant whose holdings are being listed."
133997
+ })
133998
+ });
133999
+ var PARTICIPANT_HOLDINGS_COLLECTION_FIELDS = {
134000
+ tokenAddress: addressField(),
134001
+ tokenName: textField(),
134002
+ tokenSymbol: textField(),
134003
+ walletAddress: addressField(),
134004
+ walletType: enumField(["eoa", "smart"], { sortable: false }),
134005
+ balance: bigintField({ filterable: false })
134006
+ };
134007
+ var ParticipantHoldingsV2ListInputSchema = createCollectionInputSchema(PARTICIPANT_HOLDINGS_COLLECTION_FIELDS, {
134008
+ defaultSort: "-balance",
134009
+ globalSearch: true
134010
+ });
134011
+ var ParticipantHoldingsV2ListOutputSchema = createPaginatedResponse(ParticipantHoldingV2ItemSchema, {
134012
+ balancesAsOf: timestamp().nullable().meta({
134013
+ description: "The most recent indexed `updatedAt` across the returned holdings — the freshness stamp shown on the tab. Null when the participant holds nothing.",
134014
+ examples: ["2026-06-24T14:32:00.000Z", null]
134015
+ })
134016
+ });
133898
134017
  var ParticipantAddressPurposeSchema = exports_external.enum(["transfer", "identity", "participant"]);
133899
134018
  var ParticipantKindSchema = exports_external.enum([
133900
134019
  "person",
@@ -133989,6 +134108,13 @@ var activityStats = v2Contract.route({
133989
134108
  successDescription: "Activity statistics retrieved successfully.",
133990
134109
  tags: [V2_TAG.participants]
133991
134110
  }).input(v2Input.paramsQuery(ParticipantActivityParamsSchema, ActivityStatsInputSchema.omit({ accountAddress: true }))).output(createSingleResponse(ActivityStatsOutputSchema));
134111
+ var holdings = v2Contract.route({
134112
+ method: "GET",
134113
+ path: "/participants/{participantId}/holdings",
134114
+ description: "List a participant's real indexed holdings (one row per token × wallet) with asset class, available/frozen balances, base-currency value, a per-row transfer verdict, and a `balancesAsOf` freshness stamp. Powers the participant detail Holdings tab.",
134115
+ successDescription: "Paginated array of participant holdings with asset class, balances, value, and transfer verdict; `meta.balancesAsOf` carries the freshness stamp.",
134116
+ tags: [V2_TAG.participants]
134117
+ }).input(v2Input.paramsQuery(ParticipantHoldingsParamsSchema, ParticipantHoldingsV2ListInputSchema)).output(ParticipantHoldingsV2ListOutputSchema);
133992
134118
  var assumableList = v2Contract.route({
133993
134119
  method: "GET",
133994
134120
  path: "/participants/assumable",
@@ -134001,6 +134127,7 @@ var participantsV2Contract = {
134001
134127
  assumableList,
134002
134128
  addressKinds,
134003
134129
  smartWalletRead,
134130
+ holdings,
134004
134131
  activityList,
134005
134132
  activityStats,
134006
134133
  complianceEligibility: complianceEligibilityV2Contract
@@ -140561,7 +140688,7 @@ var events2 = v2Contract.route({
140561
140688
  examples: ["0x71C7656EC7ab88b098defB751B7401B5f6d8976F"]
140562
140689
  })
140563
140690
  }), TokenEventsV2InputSchema)).output(TokenEventsV2OutputSchema);
140564
- var holdings = v2Contract.route({
140691
+ var holdings2 = v2Contract.route({
140565
140692
  method: "GET",
140566
140693
  path: "/tokens/{tokenAddress}/holdings",
140567
140694
  description: "List every asset the specified token holds a balance in (its treasury). Supports JSON:API pagination, sorting, filtering, and faceted counts.",
@@ -140808,7 +140935,7 @@ var tokenV2ReadsContract = {
140808
140935
  holders,
140809
140936
  actions,
140810
140937
  events: events2,
140811
- holdings,
140938
+ holdings: holdings2,
140812
140939
  compliance,
140813
140940
  conversionFeatureProbe,
140814
140941
  aumFeeAccruedEstimate,
@@ -143354,7 +143481,7 @@ function normalizeDalpBaseUrl(url2) {
143354
143481
  }
143355
143482
  var package_default = {
143356
143483
  name: "@settlemint/dalp-sdk",
143357
- version: "3.0.7-main.28619722466",
143484
+ version: "3.0.7-main.28642122124",
143358
143485
  private: false,
143359
143486
  description: "Fully typed SDK for the DALP tokenization platform API",
143360
143487
  homepage: "https://settlemint.com",
@@ -143511,6 +143638,10 @@ function createDalpClient(config3) {
143511
143638
  if (idempotencyKey) {
143512
143639
  secured["Idempotency-Key"] = idempotencyKey;
143513
143640
  }
143641
+ const perCallIdempotencyKey = options.context?.idempotencyKey;
143642
+ if (perCallIdempotencyKey) {
143643
+ secured["Idempotency-Key"] = perCallIdempotencyKey;
143644
+ }
143514
143645
  if (organizationId) {
143515
143646
  secured["x-organization-id"] = organizationId;
143516
143647
  }
@@ -143525,9 +143656,18 @@ function createDalpClient(config3) {
143525
143656
  },
143526
143657
  plugins,
143527
143658
  customJsonSerializers: [
143528
- { condition: bigDecimalSerializer.condition, serialize: bigDecimalSerializer.serialize },
143529
- { condition: bigIntSerializer.condition, serialize: bigIntSerializer.serialize },
143530
- { condition: timestampSerializer.condition, serialize: timestampSerializer.serialize }
143659
+ {
143660
+ condition: bigDecimalSerializer.condition,
143661
+ serialize: bigDecimalSerializer.serialize
143662
+ },
143663
+ {
143664
+ condition: bigIntSerializer.condition,
143665
+ serialize: bigIntSerializer.serialize
143666
+ },
143667
+ {
143668
+ condition: timestampSerializer.condition,
143669
+ serialize: timestampSerializer.serialize
143670
+ }
143531
143671
  ],
143532
143672
  customErrorResponseBodyDecoder: decodeDapiErrorResponseBody,
143533
143673
  fetch: wrappedFetch
@@ -144605,7 +144745,7 @@ var failedStateSet = new Set(FAILED_TRANSACTION_STATES);
144605
144745
  // package.json
144606
144746
  var package_default2 = {
144607
144747
  name: "@settlemint/dalp-cli",
144608
- version: "3.0.7-main.28619722466",
144748
+ version: "3.0.7-main.28642122124",
144609
144749
  private: false,
144610
144750
  description: "CLI for the Digital Asset Lifecycle Platform — manage tokens, identities, compliance, and more from the command line.",
144611
144751
  homepage: "https://settlemint.com",
@@ -145648,6 +145788,19 @@ participantsCommand.command("activity-stats", {
145648
145788
  });
145649
145789
  }
145650
145790
  });
145791
+ participantsCommand.command("holdings", {
145792
+ description: "List a participant's indexed holdings (token × wallet) with asset class, value, and transfer verdict",
145793
+ args: exports_external.object({ participantId: exports_external.string().describe("Participant ID") }),
145794
+ options: paginationOptionsSchema.extend({
145795
+ walletType: exports_external.enum(["eoa", "smart"]).optional().describe("Filter by account type (eoa = key account, smart)")
145796
+ }),
145797
+ run(c) {
145798
+ return c.var.orpc.participants.holdings({
145799
+ params: { participantId: c.args.participantId },
145800
+ query: toCanonicalQuery(c.options, c.options.walletType ? { walletType: c.options.walletType } : undefined)
145801
+ });
145802
+ }
145803
+ });
145651
145804
  participantsCommand.command("compliance-eligibility", {
145652
145805
  description: "Evaluate a participant's global compliance eligibility verdict",
145653
145806
  args: exports_external.object({ participantId: exports_external.string().describe("Participant ID") }),
@@ -209161,6 +209314,13 @@ invitation.command("invite-with-roles", {
209161
209314
  });
209162
209315
  }
209163
209316
  });
209317
+ invitation.command("resend-with-roles", {
209318
+ description: "Resend a role-bearing invitation preserving its original on-chain roles (re-granted on acceptance). The roles are re-sourced server-side from the existing invitation. PIN-gated for human sessions; API-key sessions skip wallet verification.",
209319
+ args: exports_external.object({ invitationId: exports_external.string().describe("Invitation ID to resend") }),
209320
+ run(c) {
209321
+ return c.var.orpc.invitation.resendWithRoles({ body: { invitationId: c.args.invitationId } });
209322
+ }
209323
+ });
209164
209324
  organizationsCommand.command(invitation);
209165
209325
 
209166
209326
  // src/commands/platform-status.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@settlemint/dalp-cli",
3
- "version": "3.0.7-main.28619722466",
3
+ "version": "3.0.7-main.28642122124",
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",